diff options
-rw-r--r-- | klogd.c | 21 | ||||
-rw-r--r-- | sysklogd/klogd.c | 21 | ||||
-rw-r--r-- | sysklogd/syslogd.c | 22 | ||||
-rw-r--r-- | syslogd.c | 22 |
4 files changed, 16 insertions, 70 deletions
@@ -124,18 +124,10 @@ static void doKlogd (void) } } -static void daemon_init (char **argv, char *dz, void fn (void)) -{ - setsid(); /* start a new session? */ - strncpy(argv[0], dz, strlen(argv[0])); - fn(); - exit(0); -} - extern int klogd_main(int argc, char **argv) { /* no options, no getopt */ - int opt, pid; + int opt; int doFork = TRUE; /* do normal option parsing */ @@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv) } if (doFork == TRUE) { - pid = fork(); - if (pid < 0) - exit(pid); - else if (pid == 0) { - daemon_init (argv, "klogd", doKlogd); - } - } else { - doKlogd(); + if (daemon(0, 1) < 0) + perror_msg_and_die("daemon"); } + doKlogd(); return EXIT_SUCCESS; } diff --git a/sysklogd/klogd.c b/sysklogd/klogd.c index d5e330bdf..95d4eea65 100644 --- a/sysklogd/klogd.c +++ b/sysklogd/klogd.c @@ -124,18 +124,10 @@ static void doKlogd (void) } } -static void daemon_init (char **argv, char *dz, void fn (void)) -{ - setsid(); /* start a new session? */ - strncpy(argv[0], dz, strlen(argv[0])); - fn(); - exit(0); -} - extern int klogd_main(int argc, char **argv) { /* no options, no getopt */ - int opt, pid; + int opt; int doFork = TRUE; /* do normal option parsing */ @@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv) } if (doFork == TRUE) { - pid = fork(); - if (pid < 0) - exit(pid); - else if (pid == 0) { - daemon_init (argv, "klogd", doKlogd); - } - } else { - doKlogd(); + if (daemon(0, 1) < 0) + perror_msg_and_die("daemon"); } + doKlogd(); return EXIT_SUCCESS; } diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index cc42c2942..e83ce48ae 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -562,18 +562,9 @@ static void doSyslogd (void) } /* for main loop */ } -static void daemon_init (char **argv, char *dz, void fn (void)) -{ - setsid(); - chdir ("/"); - strncpy(argv[0], dz, strlen(argv[0])); - fn(); - exit(0); -} - extern int syslogd_main(int argc, char **argv) { - int opt, pid; + int opt; int doFork = TRUE; char *p; @@ -635,15 +626,10 @@ extern int syslogd_main(int argc, char **argv) #endif if (doFork == TRUE) { - pid = fork(); - if (pid < 0) - exit(pid); - else if (pid == 0) { - daemon_init (argv, "syslogd", doSyslogd); - } - } else { - doSyslogd(); + if (daemon(0, 1) < 0) + perror_msg_and_die("daemon"); } + doSyslogd(); return EXIT_SUCCESS; } @@ -562,18 +562,9 @@ static void doSyslogd (void) } /* for main loop */ } -static void daemon_init (char **argv, char *dz, void fn (void)) -{ - setsid(); - chdir ("/"); - strncpy(argv[0], dz, strlen(argv[0])); - fn(); - exit(0); -} - extern int syslogd_main(int argc, char **argv) { - int opt, pid; + int opt; int doFork = TRUE; char *p; @@ -635,15 +626,10 @@ extern int syslogd_main(int argc, char **argv) #endif if (doFork == TRUE) { - pid = fork(); - if (pid < 0) - exit(pid); - else if (pid == 0) { - daemon_init (argv, "syslogd", doSyslogd); - } - } else { - doSyslogd(); + if (daemon(0, 1) < 0) + perror_msg_and_die("daemon"); } + doSyslogd(); return EXIT_SUCCESS; } |