X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=snooze.c;h=a5df96767c541106a85deec9494c062ca0dd691a;hb=6126a7d9d03c599360585e8e421b85ffa5da9b50;hp=ce6d93d4d0a368ae8448f0a2b41cf8ff56f0cab7;hpb=56480881978a4cb5813746232de9950d46cb3369;p=user%2Fhenk%2Fcode%2Fsnooze.git diff --git a/snooze.c b/snooze.c index ce6d93d..a5df967 100644 --- a/snooze.c +++ b/snooze.c @@ -31,7 +31,7 @@ static long slack = 60; #define SLEEP_PHASE 300 static int nflag, vflag; -static int timewait = 1; +static int timewait = -1; static int randdelay = 0; static char *timefile; @@ -200,6 +200,7 @@ isotime(const struct tm *tm) int main(int argc, char *argv[]) { int c; + time_t t; time_t now = time(0); /* default: every day at 00:00:00 */ @@ -248,8 +249,16 @@ int main(int argc, char *argv[]) if (stat(timefile, &st) < 0) { if (errno != ENOENT) perror("stat"); + t = start - slack - 1 - timewait; + } else { + t = st.st_mtime; + } + if (timewait == -1) { + while (t < start - slack) + t = find_next(t + 1); + start = t; } else { - if (st.st_mtime + timewait > start) + if (t + timewait > start) start = st.st_mtime + timewait; } } @@ -271,7 +280,7 @@ int main(int argc, char *argv[]) start += delay; } - time_t t = find_next(start); + t = find_next(start); if (t < 0) { fprintf(stderr, "no satisfying date found within a year.\n"); exit(2); @@ -327,6 +336,12 @@ int main(int argc, char *argv[]) if (argc == optind) return 0; + if (vflag) { + now = time(0); + tm = localtime(&now); + printf("Starting execution at %s\n", isotime(tm)); + } + execvp(argv[optind], argv+optind); perror("execvp"); return 255;