diff toys/pending/syslogd.c @ 995:893c86bbe452

Add daemonize function to lib for klogd and syslogd
author Felix Janda <felix.janda@posteo.de>
date Sat, 10 Aug 2013 20:18:18 +0200
parents c0627c163893
children 8b1814e4c987
line wrap: on
line diff
--- a/toys/pending/syslogd.c	Sat Aug 10 19:35:11 2013 +0200
+++ b/toys/pending/syslogd.c	Sat Aug 10 20:18:18 2013 +0200
@@ -632,25 +632,6 @@
   signal(SIGQUIT, signal_handler);
 }
 
-static void syslog_daemon(void)
-{
-  int fd = open("/dev/null", O_RDWR);
-  if (fd < 0) fd = xcreate("/", O_RDONLY, 0666);
-
-  pid_t pid = fork();
-  if (pid < 0) perror_exit("DAEMON: failed to fork");
-  if (pid) exit(EXIT_SUCCESS);
-
-  setsid();
-  dup2(fd, 0);
-  dup2(fd, 1);
-  dup2(fd, 2);
-  if (fd > 2) close(fd);
-
-  //don't daemonize again if SIGHUP received.
-  toys.optflags |= FLAG_n;
-}
-
 void syslogd_main(void)
 {
   unsocks_t *tsd;
@@ -688,7 +669,10 @@
   setup_signal();
   if (parse_config_file() == -1) goto clean_and_exit;
   open_logfiles();
-  if (!flag_chk(FLAG_n)) syslog_daemon();
+  if (!flag_chk(FLAG_n)) {
+    //don't daemonize again if SIGHUP received.
+    toys.optflags |= FLAG_n;
+  }
   {
     int pid_fd = open("/var/run/syslogd.pid", O_CREAT | O_WRONLY | O_TRUNC, 0666);
     if (pid_fd > 0) {