aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-03-29 21:58:33 +0000
committerEric Andersen <andersen@codepoet.org>2001-03-29 21:58:33 +0000
commite5c24dfd010732ab6b80a96ad2a5414499c496c0 (patch)
treee33107a413c5c41e6a7b160ddb310fe43f5ad01d
parent3a6da8c183142a2681a2382b63e970f457cf807b (diff)
downloadbusybox-w32-e5c24dfd010732ab6b80a96ad2a5414499c496c0.tar.gz
busybox-w32-e5c24dfd010732ab6b80a96ad2a5414499c496c0.tar.bz2
busybox-w32-e5c24dfd010732ab6b80a96ad2a5414499c496c0.zip
Use daemon() to spawn syslogd and klogd daemons.
-Erik
-rw-r--r--klogd.c21
-rw-r--r--sysklogd/klogd.c21
-rw-r--r--sysklogd/syslogd.c22
-rw-r--r--syslogd.c22
4 files changed, 16 insertions, 70 deletions
diff --git a/klogd.c b/klogd.c
index d5e330bdf..95d4eea65 100644
--- a/klogd.c
+++ b/klogd.c
@@ -124,18 +124,10 @@ static void doKlogd (void)
124 } 124 }
125} 125}
126 126
127static void daemon_init (char **argv, char *dz, void fn (void))
128{
129 setsid(); /* start a new session? */
130 strncpy(argv[0], dz, strlen(argv[0]));
131 fn();
132 exit(0);
133}
134
135extern int klogd_main(int argc, char **argv) 127extern int klogd_main(int argc, char **argv)
136{ 128{
137 /* no options, no getopt */ 129 /* no options, no getopt */
138 int opt, pid; 130 int opt;
139 int doFork = TRUE; 131 int doFork = TRUE;
140 132
141 /* do normal option parsing */ 133 /* do normal option parsing */
@@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv)
150 } 142 }
151 143
152 if (doFork == TRUE) { 144 if (doFork == TRUE) {
153 pid = fork(); 145 if (daemon(0, 1) < 0)
154 if (pid < 0) 146 perror_msg_and_die("daemon");
155 exit(pid);
156 else if (pid == 0) {
157 daemon_init (argv, "klogd", doKlogd);
158 }
159 } else {
160 doKlogd();
161 } 147 }
148 doKlogd();
162 149
163 return EXIT_SUCCESS; 150 return EXIT_SUCCESS;
164} 151}
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)
124 } 124 }
125} 125}
126 126
127static void daemon_init (char **argv, char *dz, void fn (void))
128{
129 setsid(); /* start a new session? */
130 strncpy(argv[0], dz, strlen(argv[0]));
131 fn();
132 exit(0);
133}
134
135extern int klogd_main(int argc, char **argv) 127extern int klogd_main(int argc, char **argv)
136{ 128{
137 /* no options, no getopt */ 129 /* no options, no getopt */
138 int opt, pid; 130 int opt;
139 int doFork = TRUE; 131 int doFork = TRUE;
140 132
141 /* do normal option parsing */ 133 /* do normal option parsing */
@@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv)
150 } 142 }
151 143
152 if (doFork == TRUE) { 144 if (doFork == TRUE) {
153 pid = fork(); 145 if (daemon(0, 1) < 0)
154 if (pid < 0) 146 perror_msg_and_die("daemon");
155 exit(pid);
156 else if (pid == 0) {
157 daemon_init (argv, "klogd", doKlogd);
158 }
159 } else {
160 doKlogd();
161 } 147 }
148 doKlogd();
162 149
163 return EXIT_SUCCESS; 150 return EXIT_SUCCESS;
164} 151}
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)
562 } /* for main loop */ 562 } /* for main loop */
563} 563}
564 564
565static 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
574extern int syslogd_main(int argc, char **argv) 565extern 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}
diff --git a/syslogd.c b/syslogd.c
index cc42c2942..e83ce48ae 100644
--- a/syslogd.c
+++ b/syslogd.c
@@ -562,18 +562,9 @@ static void doSyslogd (void)
562 } /* for main loop */ 562 } /* for main loop */
563} 563}
564 564
565static 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
574extern int syslogd_main(int argc, char **argv) 565extern 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}