diff options
Diffstat (limited to 'klogd.c')
-rw-r--r-- | klogd.c | 21 |
1 files changed, 4 insertions, 17 deletions
@@ -124,18 +124,10 @@ static void doKlogd (void) | |||
124 | } | 124 | } |
125 | } | 125 | } |
126 | 126 | ||
127 | static 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 | |||
135 | extern int klogd_main(int argc, char **argv) | 127 | extern 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 | } |