From 04ca84acdabc55ce20cb03b5c4ca703ab0c14b4d Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Fri, 14 Aug 2020 17:44:27 -0400 Subject: Switch to timespec for timeouts Can be passed to ppoll(2) directly. --- daemon.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'daemon.c') diff --git a/daemon.c b/daemon.c index d0a6579..3dc0640 100644 --- a/daemon.c +++ b/daemon.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -43,7 +44,7 @@ #define WS " \t" -int restartInterval = 1000; +struct timespec restartInterval = { .tv_sec = 1 }; struct Set256 stopExits; static void configerr(bool exit, const char *format, ...) { @@ -119,6 +120,12 @@ static void parseExits(char *list) { } } +static void parseInterval(const char *millis) { + unsigned long ms = strtoul(millis, NULL, 10); + restartInterval.tv_sec = ms / 1000; + restartInterval.tv_nsec = 1000000 * (ms % 1000); +} + int main(int argc, char *argv[]) { setprogname(argv[0]); @@ -146,7 +153,7 @@ int main(int argc, char *argv[]) { break; case 'g': groupName = optarg; break; case 'p': pidPath = optarg; break; case 's': parseExits(optarg); - break; case 't': restartInterval = strtoul(optarg, NULL, 10); + break; case 't': parseInterval(optarg); break; case 'u': userName = optarg; break; default: return EX_USAGE; } -- cgit 1.4.1