aboutsummaryrefslogtreecommitdiff
path: root/sysklogd
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>1999-12-05 22:17:02 +0000
committerEric Andersen <andersen@codepoet.org>1999-12-05 22:17:02 +0000
commit14ec6cf3c224d53219b2713b0040dfa03314d5b3 (patch)
tree9df6a6fb5a7c4104ec90937b65c56019a802bc96 /sysklogd
parentde1d61268e4cdafbd8a5158316c542bcb7750457 (diff)
downloadbusybox-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.c44
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
146static void quit_signal(int sig) 147static 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]));