diff options
Diffstat (limited to 'contrib/apple')
-rw-r--r-- | contrib/apple/daemon.c | 26 | ||||
-rw-r--r-- | contrib/apple/daemon.h | 1 |
2 files changed, 18 insertions, 9 deletions
diff --git a/contrib/apple/daemon.c b/contrib/apple/daemon.c index 9389201a1..07dbbc400 100644 --- a/contrib/apple/daemon.c +++ b/contrib/apple/daemon.c @@ -44,7 +44,7 @@ #include <unistd.h> int -os_daemon(nochdir, noclose) +os_daemon_return(nochdir, noclose) int nochdir, noclose; { struct sigaction osa, sa; @@ -52,6 +52,7 @@ os_daemon(nochdir, noclose) pid_t newgrp; int oerrno; int osa_ok; + int ret; /* A SIGHUP may be thrown when the parent exits below. */ sigemptyset(&sa.sa_mask); @@ -59,14 +60,9 @@ os_daemon(nochdir, noclose) sa.sa_flags = 0; osa_ok = sigaction(SIGHUP, &sa, &osa); - switch (fork()) { - case -1: - return (-1); - case 0: - break; - default: - _exit(0); - } + ret = fork(); + if (ret) + return ret; newgrp = setsid(); oerrno = errno; @@ -90,3 +86,15 @@ os_daemon(nochdir, noclose) } return (0); } + +int +os_daemon(int nochdir, int noclose) +{ + int ret; + + ret = os_daemon_return(nochdir, noclose); + if (ret <= 0) + return ret; + + _exit(0); +} diff --git a/contrib/apple/daemon.h b/contrib/apple/daemon.h index 7a2824b6a..aa88d9baa 100644 --- a/contrib/apple/daemon.h +++ b/contrib/apple/daemon.h @@ -17,4 +17,5 @@ <http://www.gnu.org/licenses/>. */ +int os_daemon_return(int nochdir, int noclose); int os_daemon(int nochdir, int noclose); |