]>
Commit | Line | Data |
---|---|---|
437bcd41 AM |
1 | --- sysvinit-2.85/src/init.c.orig 2003-06-16 11:34:41.000000000 -0400 |
2 | +++ sysvinit-2.85/src/init.c 2003-06-16 14:28:06.000000000 -0400 | |
3 | @@ -701,18 +701,30 @@ | |
4 | { | |
5 | va_list va_alist; | |
6 | char buf[256]; | |
7 | + sigset_t nmask, omask; /* For blocking SIGCHLD */ | |
8 | ||
9 | va_start(va_alist, s); | |
10 | vsnprintf(buf, sizeof(buf), s, va_alist); | |
11 | va_end(va_alist); | |
12 | - | |
13 | + | |
14 | if (loglevel & L_SY) { | |
15 | /* | |
16 | + * Block signals while talking to syslog. | |
17 | + */ | |
18 | + sigfillset(&nmask); | |
19 | + sigprocmask(SIG_BLOCK, &nmask, &omask); | |
20 | + | |
21 | + /* | |
22 | * Re-etablish connection with syslogd every time. | |
23 | */ | |
24 | openlog("init", 0, LOG_DAEMON); | |
25 | syslog(LOG_INFO, "%s", buf); | |
26 | closelog(); | |
27 | + | |
28 | + /* | |
29 | + * Set signal handlers back to original state. | |
30 | + */ | |
31 | + sigprocmask(SIG_SETMASK, &omask, NULL); | |
32 | } | |
33 | ||
34 | /* |