diff options
Diffstat (limited to 'syslogd.c')
-rw-r--r-- | syslogd.c | 22 |
1 files changed, 4 insertions, 18 deletions
@@ -562,18 +562,9 @@ static void doSyslogd (void) | |||
562 | } /* for main loop */ | 562 | } /* for main loop */ |
563 | } | 563 | } |
564 | 564 | ||
565 | static void daemon_init (char **argv, char *dz, void fn (void)) | ||
566 | { | ||
567 | setsid(); | ||
568 | chdir ("/"); | ||
569 | strncpy(argv[0], dz, strlen(argv[0])); | ||
570 | fn(); | ||
571 | exit(0); | ||
572 | } | ||
573 | |||
574 | extern int syslogd_main(int argc, char **argv) | 565 | extern int syslogd_main(int argc, char **argv) |
575 | { | 566 | { |
576 | int opt, pid; | 567 | int opt; |
577 | int doFork = TRUE; | 568 | int doFork = TRUE; |
578 | 569 | ||
579 | char *p; | 570 | char *p; |
@@ -635,15 +626,10 @@ extern int syslogd_main(int argc, char **argv) | |||
635 | #endif | 626 | #endif |
636 | 627 | ||
637 | if (doFork == TRUE) { | 628 | if (doFork == TRUE) { |
638 | pid = fork(); | 629 | if (daemon(0, 1) < 0) |
639 | if (pid < 0) | 630 | perror_msg_and_die("daemon"); |
640 | exit(pid); | ||
641 | else if (pid == 0) { | ||
642 | daemon_init (argv, "syslogd", doSyslogd); | ||
643 | } | ||
644 | } else { | ||
645 | doSyslogd(); | ||
646 | } | 631 | } |
632 | doSyslogd(); | ||
647 | 633 | ||
648 | return EXIT_SUCCESS; | 634 | return EXIT_SUCCESS; |
649 | } | 635 | } |