summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2021-08-29 16:03:51 (EDT)
committer P. J. McDermott <pj@pehjota.net>2021-08-29 16:05:38 (EDT)
commit2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6 (patch)
tree1b24427dec90db21bdf48633741b8443266b4af8
parent9375a5d47217eea328d334ece74644814d2279d1 (diff)
downloadatsign-2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6.zip
atsign-2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6.tar.gz
atsign-2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6.tar.bz2
main: Prevent dates too large to consistently show
-rw-r--r--configure.ac4
-rw-r--r--src/main.c10
2 files changed, 10 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac
index e1c9f6c..12dc4cf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,8 +38,8 @@ test -d "${srcdir}/.git" || CFLAGS="${save_CFLAGS}"
funcs_missing=false
AC_CHECK_FUNCS(
[\
- calloc fprintf free localtime mktime printf setvbuf sleep \
- strerror strlen strptime time
+ calloc fprintf fputs free localtime mktime printf setvbuf \
+ sleep strerror strlen strptime time
],
[],
[funcs_missing=true])
diff --git a/src/main.c b/src/main.c
index 00e0ef7..4ad711c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -78,10 +78,15 @@ main(int argc, const char *argv[])
}
free(buf);
- setvbuf(stdout, NULL, _IONBF, 0);
time(&now);
+ dif = arg - now;
+ if (dif >= 1000 * 24 * 60 * 60) {
+ fputs("Date too far in the future\n", stderr);
+ return EXIT_FAILURE;
+ }
+
+ setvbuf(stdout, NULL, _IONBF, 0);
while (arg > now) {
- dif = arg - now;
printf("\r%03d:%02d:%02d:%02d",
(int) dif / 60 / 60 / 24,
(int) dif / 60 / 60 % 24,
@@ -89,6 +94,7 @@ main(int argc, const char *argv[])
(int) dif % 60);
sleep(1);
time(&now);
+ dif = arg - now;
}
printf("\r000:00:00:00\n");