diff options
author | P. 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) |
commit | 2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6 (patch) | |
tree | 1b24427dec90db21bdf48633741b8443266b4af8 | |
parent | 9375a5d47217eea328d334ece74644814d2279d1 (diff) | |
download | atsign-2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6.zip atsign-2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6.tar.gz atsign-2a9c361b7e9d32ca4ffb40b80a714885bc5b64a6.tar.bz2 |
main: Prevent dates too large to consistently show
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | src/main.c | 10 |
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]) @@ -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"); |