diff options
author | Eric Andersen <andersen@codepoet.org> | 1999-12-05 22:17:02 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 1999-12-05 22:17:02 +0000 |
commit | 14ec6cf3c224d53219b2713b0040dfa03314d5b3 (patch) | |
tree | 9df6a6fb5a7c4104ec90937b65c56019a802bc96 /sysklogd | |
parent | de1d61268e4cdafbd8a5158316c542bcb7750457 (diff) | |
download | busybox-w32-14ec6cf3c224d53219b2713b0040dfa03314d5b3.tar.gz busybox-w32-14ec6cf3c224d53219b2713b0040dfa03314d5b3.tar.bz2 busybox-w32-14ec6cf3c224d53219b2713b0040dfa03314d5b3.zip |
syslogd and klogd work now.
-Erik
Diffstat (limited to 'sysklogd')
-rw-r--r-- | sysklogd/syslogd.c | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index 3c7b0170d..e3f45b62a 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #include "internal.h" | 23 | #include "internal.h" |
24 | #include <stdio.h> | 24 | #include <stdio.h> |
25 | #include <stdarg.h> | ||
25 | #include <sys/socket.h> | 26 | #include <sys/socket.h> |
26 | #include <sys/un.h> | 27 | #include <sys/un.h> |
27 | #include <unistd.h> | 28 | #include <unistd.h> |
@@ -145,7 +146,8 @@ static void logMessage( int pri, char* msg) | |||
145 | 146 | ||
146 | static void quit_signal(int sig) | 147 | static void quit_signal(int sig) |
147 | { | 148 | { |
148 | logMessage(LOG_SYSLOG|LOG_INFO, "syslogd exiting"); | 149 | logMessage(LOG_SYSLOG|LOG_INFO, "System log daemon exiting."); |
150 | unlink( _PATH_LOG); | ||
149 | exit( TRUE); | 151 | exit( TRUE); |
150 | } | 152 | } |
151 | 153 | ||
@@ -184,32 +186,27 @@ static void doSyslogd(void) | |||
184 | signal(SIGALRM, domark); | 186 | signal(SIGALRM, domark); |
185 | alarm(MarkInterval); | 187 | alarm(MarkInterval); |
186 | 188 | ||
189 | |||
190 | unlink( _PATH_LOG); | ||
187 | memset(&sunx, 0, sizeof(sunx)); | 191 | memset(&sunx, 0, sizeof(sunx)); |
188 | sunx.sun_family = AF_UNIX; /* Unix domain socket */ | 192 | sunx.sun_family = AF_UNIX; /* Unix domain socket */ |
189 | strncpy(sunx.sun_path, _PATH_LOG, sizeof(sunx.sun_path)); | 193 | strncpy(sunx.sun_path, _PATH_LOG, sizeof(sunx.sun_path)); |
190 | if ((fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0 ) { | 194 | if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0 ) { |
191 | perror("Couldn't obtain descriptor for socket " _PATH_LOG); | 195 | perror("Couldn't obtain descriptor for socket " _PATH_LOG); |
192 | exit( FALSE); | 196 | exit( FALSE); |
193 | } | 197 | } |
194 | 198 | ||
195 | addrLength = sizeof(sunx.sun_family) + strlen(sunx.sun_path); | 199 | addrLength = sizeof(sunx.sun_family) + strlen(sunx.sun_path); |
196 | if ( (bind(fd, (struct sockaddr *) &sunx, addrLength)) || | 200 | if ( (bind(fd, (struct sockaddr *) &sunx, addrLength)) || |
197 | (chmod(_PATH_LOG, 0666) < 0) || | 201 | (fchmod(fd, 0666) < 0) || (listen(fd, 5)) ) |
198 | (listen(fd, 5)) ) | ||
199 | { | 202 | { |
200 | perror("Could not connect to socket " _PATH_LOG); | 203 | perror("Could not connect to socket " _PATH_LOG); |
201 | exit( FALSE); | 204 | exit( FALSE); |
202 | } | 205 | } |
203 | 206 | ||
204 | 207 | ||
205 | /* Get localhost's name */ | ||
206 | gethostname(LocalHostName, sizeof(LocalHostName)); | ||
207 | if ( (p = strchr(LocalHostName, '.')) ) { | ||
208 | *p++ = '\0'; | ||
209 | } | ||
210 | |||
211 | logMessage(LOG_SYSLOG|LOG_INFO, "syslogd started: " | 208 | logMessage(LOG_SYSLOG|LOG_INFO, "syslogd started: " |
212 | "BusyBox v" BB_VER " (" BB_BT ") multi-call binary"); | 209 | "BusyBox v" BB_VER " (" BB_BT ")"); |
213 | 210 | ||
214 | 211 | ||
215 | while ((conn = accept(fd, (struct sockaddr *) &sunx, | 212 | while ((conn = accept(fd, (struct sockaddr *) &sunx, |
@@ -258,7 +255,8 @@ static void klogd_signal(int sig) | |||
258 | { | 255 | { |
259 | //ksyslog(7, NULL, 0); | 256 | //ksyslog(7, NULL, 0); |
260 | //ksyslog(0, 0, 0); | 257 | //ksyslog(0, 0, 0); |
261 | logMessage(LOG_SYSLOG|LOG_INFO, "Kernel log daemon terminating."); | 258 | logMessage(LOG_SYSLOG|LOG_INFO, "Kernel log daemon exiting."); |
259 | close( kmsg); | ||
262 | exit( TRUE); | 260 | exit( TRUE); |
263 | } | 261 | } |
264 | 262 | ||
@@ -268,6 +266,7 @@ static void doKlogd(void) | |||
268 | int priority=LOG_INFO; | 266 | int priority=LOG_INFO; |
269 | struct stat sb; | 267 | struct stat sb; |
270 | char log_buffer[4096]; | 268 | char log_buffer[4096]; |
269 | char *logp; | ||
271 | 270 | ||
272 | /* Set up sig handlers */ | 271 | /* Set up sig handlers */ |
273 | signal(SIGINT, klogd_signal); | 272 | signal(SIGINT, klogd_signal); |
@@ -275,9 +274,9 @@ static void doKlogd(void) | |||
275 | signal(SIGTERM, klogd_signal); | 274 | signal(SIGTERM, klogd_signal); |
276 | signal(SIGHUP, klogd_signal); | 275 | signal(SIGHUP, klogd_signal); |
277 | logMessage(LOG_SYSLOG|LOG_INFO, "klogd started: " | 276 | logMessage(LOG_SYSLOG|LOG_INFO, "klogd started: " |
278 | "BusyBox v" BB_VER " (" BB_BT ") multi-call binary"); | 277 | "BusyBox v" BB_VER " (" BB_BT ")"); |
279 | 278 | ||
280 | //ksyslog(1, NULL, 0); | 279 | ksyslog(1, NULL, 0); |
281 | if ( ((stat(_PATH_KLOG, &sb) < 0) && (errno == ENOENT)) || | 280 | if ( ((stat(_PATH_KLOG, &sb) < 0) && (errno == ENOENT)) || |
282 | ( (kmsg = open(_PATH_KLOG, O_RDONLY)) < 0 ) ) { | 281 | ( (kmsg = open(_PATH_KLOG, O_RDONLY)) < 0 ) ) { |
283 | char message[80]; | 282 | char message[80]; |
@@ -308,7 +307,7 @@ static void doKlogd(void) | |||
308 | exit(1); | 307 | exit(1); |
309 | } | 308 | } |
310 | #endif | 309 | #endif |
311 | fprintf(stderr, "the kernel says '%s'\n", log_buffer); | 310 | logp=log_buffer; |
312 | if ( *log_buffer == '<' ) | 311 | if ( *log_buffer == '<' ) |
313 | { | 312 | { |
314 | switch ( *(log_buffer+1) ) | 313 | switch ( *(log_buffer+1) ) |
@@ -338,9 +337,9 @@ static void doKlogd(void) | |||
338 | default: | 337 | default: |
339 | priority = LOG_DEBUG; | 338 | priority = LOG_DEBUG; |
340 | } | 339 | } |
341 | *log_buffer += 3; | 340 | logp+=3; |
342 | } | 341 | } |
343 | logMessage(LOG_KERN|priority, log_buffer); | 342 | logMessage(LOG_KERN|priority, logp); |
344 | } | 343 | } |
345 | 344 | ||
346 | } | 345 | } |
@@ -350,8 +349,9 @@ extern int syslogd_main(int argc, char **argv) | |||
350 | { | 349 | { |
351 | int pid, klogd_pid; | 350 | int pid, klogd_pid; |
352 | int doFork = TRUE; | 351 | int doFork = TRUE; |
352 | char *p; | ||
353 | char **argv1=argv; | 353 | char **argv1=argv; |
354 | 354 | ||
355 | while (--argc > 0 && **(++argv1) == '-') { | 355 | while (--argc > 0 && **(++argv1) == '-') { |
356 | while (*(++(*argv1))) { | 356 | while (*(++(*argv1))) { |
357 | switch (**argv1) { | 357 | switch (**argv1) { |
@@ -375,6 +375,12 @@ extern int syslogd_main(int argc, char **argv) | |||
375 | } | 375 | } |
376 | } | 376 | } |
377 | } | 377 | } |
378 | |||
379 | /* Store away localhost's name before the fork */ | ||
380 | gethostname(LocalHostName, sizeof(LocalHostName)); | ||
381 | if ( (p = strchr(LocalHostName, '.')) ) { | ||
382 | *p++ = '\0'; | ||
383 | } | ||
378 | 384 | ||
379 | if (doFork == TRUE) { | 385 | if (doFork == TRUE) { |
380 | pid = fork(); | 386 | pid = fork(); |
@@ -388,7 +394,7 @@ extern int syslogd_main(int argc, char **argv) | |||
388 | doSyslogd(); | 394 | doSyslogd(); |
389 | } | 395 | } |
390 | 396 | ||
391 | /* Start klogd process */ | 397 | /* Start up the klogd process */ |
392 | klogd_pid = fork(); | 398 | klogd_pid = fork(); |
393 | if (klogd_pid == 0 ) { | 399 | if (klogd_pid == 0 ) { |
394 | strncpy(argv[0], "klogd", strlen(argv[0])); | 400 | strncpy(argv[0], "klogd", strlen(argv[0])); |