X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=snooze.c;h=f37c42ac2a386453b9db812c59e97aa8d0dea0ed;hb=0f5eae045db3c1c146ebdf62eac77a10c2255baf;hp=3a5185d7f13a30fbd7354e379de0fe6960f4cb0d;hpb=2d8e9f30232d555211f02f1ffc78bd58e6c7308c;p=user%2Fhenk%2Fcode%2Fsnooze.git diff --git a/snooze.c b/snooze.c index 3a5185d..f37c42a 100644 --- a/snooze.c +++ b/snooze.c @@ -1,16 +1,11 @@ /* * snooze - run a command at a particular time * - * To the extent possible under law, - * Christian Neukirchen + * To the extent possible under law, Leah Neukirchen * has waived all copyright and related or neighboring rights to this work. * http://creativecommons.org/publicdomain/zero/1.0/ */ -/* -##% gcc -Os -Wall -g -o $STEM $FILE -Wextra -Wwrite-strings -*/ - #include #include @@ -147,7 +142,7 @@ char weekday[8] = {0}; char dayofmonth[31] = {0}; char month[12] = {0}; char dayofyear[366] = {0}; -char weekofyear[53] = {0}; +char weekofyear[54] = {0}; char hour[24] = {0}; char minute[60] = {0}; char second[61] = {0}; @@ -190,7 +185,7 @@ next_day: tm->tm_hour = 0; t = mktime(tm); - if (t > from+(365*24*60*60)) // no result within a year + if (t > from+(366*24*60*60)) // no result within a year return -1; } @@ -242,7 +237,7 @@ int main(int argc, char *argv[]) minute[0] = '*'; second[0] = '*'; - while ((c = getopt(argc, argv, "D:W:H:M:S:T:R:d:m:ns:t:vw:")) != -1) + while ((c = getopt(argc, argv, "+D:W:H:M:S:T:R:d:m:ns:t:vw:")) != -1) switch(c) { case 'D': parse(optarg, dayofyear, sizeof dayofyear, -1); break; case 'W': parse(optarg, weekofyear, sizeof weekofyear, -1); break; @@ -319,19 +314,22 @@ int main(int argc, char *argv[]) /* dry-run, just output the next 5 dates. */ int i; for (i = 0; i < 5; i++) { - if (t > 0) { - char weekstr[4]; - struct tm *tm = localtime(&t); - strftime(weekstr, sizeof weekstr, "%a", tm); - printf("%s %s %2ldd%3ldh%3ldm%3lds\n", - isotime(tm), - weekstr, - ((t - now) / (60*60*24)), - ((t - now) / (60*60)) % 24, - ((t - now) / 60) % 60, - (t - now) % 60); - } + char weekstr[4]; + struct tm *tm = localtime(&t); + strftime(weekstr, sizeof weekstr, "%a", tm); + printf("%s %s %2ldd%3ldh%3ldm%3lds\n", + isotime(tm), + weekstr, + ((t - now) / (60*60*24)), + ((t - now) / (60*60)) % 24, + ((t - now) / 60) % 60, + (t - now) % 60); t = find_next(t + 1); + if (t < 0) { + fprintf(stderr, + "no satisfying date found within a year.\n"); + exit(2); + } } exit(0); }