From a99b4704518369ebf6606b6a1a271c5cfd21bd5e Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Wed, 4 Nov 2015 17:10:02 +0100 Subject: Take slack into account when using -t without -T --- snooze.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'snooze.c') diff --git a/snooze.c b/snooze.c index b88db77..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); -- cgit v1.2.3