summaryrefslogtreecommitdiffstats
path: root/hcid/main.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2006-03-14 18:53:17 +0000
committerMarcel Holtmann <marcel@holtmann.org>2006-03-14 18:53:17 +0000
commit55dc9d47e12b483f6495ae6eaeeb2a7be2a2f02a (patch)
treecc883b0bbc883a94c7d8668310561821d7340118 /hcid/main.c
parent0c0287befae94479dcdb61bacd5a21e0c5841bed (diff)
Use daemon() to put process into background
Diffstat (limited to 'hcid/main.c')
-rw-r--r--hcid/main.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/hcid/main.c b/hcid/main.c
index 81dcbda6..a449f37b 100644
--- a/hcid/main.c
+++ b/hcid/main.c
@@ -539,13 +539,11 @@ extern char *optarg;
int main(int argc, char *argv[], char *env[])
{
- int daemon, dofork, sdp, opt, fd;
struct sockaddr_hci addr;
struct hci_filter flt;
struct sigaction sa;
GIOChannel *ctl_io;
-
- daemon = 1; dofork = 1; sdp = 0;
+ int opt, daemonize = 1, sdp = 0;
/* Default HCId settings */
hcid.auto_init = 1;
@@ -562,7 +560,7 @@ int main(int argc, char *argv[], char *env[])
while ((opt = getopt(argc, argv, "nsf:")) != EOF) {
switch (opt) {
case 'n':
- daemon = 0;
+ daemonize = 0;
break;
case 's':
@@ -579,18 +577,9 @@ int main(int argc, char *argv[], char *env[])
}
}
- if (daemon) {
- if (dofork && fork())
- exit(0);
-
- /* Direct stdin,stdout,stderr to '/dev/null' */
- fd = open("/dev/null", O_RDWR);
- dup2(fd, 0); dup2(fd, 1); dup2(fd, 2);
- close(fd);
-
- setsid();
-
- chdir("/");
+ if (daemonize && daemon(0, 0)) {
+ error("Can't daemonize: %s (%d)", strerror(errno), errno);
+ exit(1);
}
umask(0077);