diff options
author | June McEnroe <june@causal.agency> | 2020-08-14 17:44:27 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-08-14 17:44:27 -0400 |
commit | 04ca84acdabc55ce20cb03b5c4ca703ab0c14b4d (patch) | |
tree | d56a4f1a7e3881d2dcd6fe55a556a7237560b62d /daemon.c | |
parent | Implement serviceStart (diff) | |
download | catsit-04ca84acdabc55ce20cb03b5c4ca703ab0c14b4d.tar.gz catsit-04ca84acdabc55ce20cb03b5c4ca703ab0c14b4d.zip |
Switch to timespec for timeouts
Can be passed to ppoll(2) directly.
Diffstat (limited to '')
-rw-r--r-- | daemon.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/daemon.c b/daemon.c index d0a6579..3dc0640 100644 --- a/daemon.c +++ b/daemon.c @@ -27,6 +27,7 @@ #include <stdlib.h> #include <string.h> #include <sys/stat.h> +#include <sys/timespec.h> #include <sysexits.h> #include <syslog.h> #include <unistd.h> @@ -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; } |