diff options
author | Fred Wright <fw@fwright.net> | 2017-02-19 16:14:37 -0800 |
---|---|---|
committer | Fred Wright <fw@fwright.net> | 2017-02-19 18:38:21 -0800 |
commit | 9d126a4eda9c3efdd593e63adfd5d2f7dddae18c (patch) | |
tree | e456c474eee8cd05831b682de863c22db6f958ca /os_compat.c | |
parent | bb66fc3b0987a8a9f9b2cee48be2cd195612ad40 (diff) | |
download | gpsd-9d126a4eda9c3efdd593e63adfd5d2f7dddae18c.tar.gz |
Cleans up os_daemon() in Windows case.
This provides an always-failing os_daemon() for platforms (e.g.,
Windows) that can't provide a real daemon() call. This is more
consistent than simply omitting the function.
It also bases the condition on the lack of fork(), rather than the
presence of winsock2.h.
TESTED:
Ran "scons build-all check" on OSX, Linux, FreeBSD, OpenBSD, and
NetBSD. Verified that HAVE_FORK is set in all cases.
Diffstat (limited to 'os_compat.c')
-rw-r--r-- | os_compat.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/os_compat.c b/os_compat.c index dafbb7a4..790aaf94 100644 --- a/os_compat.c +++ b/os_compat.c @@ -45,10 +45,10 @@ int clock_gettime(clockid_t clk_id, struct timespec *ts) /* End of clock_gettime section */ #ifndef HAVE_DAEMON -#ifndef HAVE_WINSOCK2_H -/* No daemon() provided for Windows as not currently needed */ /* Simulate Linux/BSD daemon() on platforms that don't have it */ +#ifdef HAVE_FORK + #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> @@ -91,7 +91,19 @@ int os_daemon(int nochdir, int noclose) /* coverity[leaked_handle] Intentional handle duplication */ return 0; } -#endif /* HAVE_WINSOCK2_H */ +#else /* !HAVE_FORK */ + +#include <errno.h> + +int os_daemon(int nochdir, int noclose) +{ + (void) nochdir; (void) noclose; + errno = EINVAL; + return -1; +} + +#endif /* !HAVE_FORK */ + #else /* HAVE_DAEMON */ #ifdef __linux__ |