On Fri, Aug 29, 2014 at 11:25:52PM +0200, Alexander Bluhm wrote:
> I will try to pull parts of the diff into separate changes to
> make review easier.
The reapchild() signal handler collects all children. This can be
done easier by ignoring SIGCHLD.
ok?
bluhm
Index: usr.sbin/syslogd/syslogd.c
===================================================================
RCS file: /cvs/src/usr.sbin/syslogd/syslogd.c,v
retrieving revision 1.120
diff -u -p -r1.120 syslogd.c
--- usr.sbin/syslogd/syslogd.c 31 Aug 2014 20:51:31 -0000 1.120
+++ usr.sbin/syslogd/syslogd.c 31 Aug 2014 21:00:04 -0000
@@ -266,7 +266,6 @@ void logmsg(int, char *, char *, int);
struct filed *find_dup(struct filed *);
void printline(char *, char *);
void printsys(char *);
-void reapchild(int);
char *ttymsg(struct iovec *, int, char *, int);
void usage(void);
void wallmsg(struct filed *, struct iovec *);
@@ -553,7 +552,7 @@ main(int argc, char *argv[])
(void)signal(SIGTERM, dodie);
(void)signal(SIGINT, Debug ? dodie : SIG_IGN);
(void)signal(SIGQUIT, Debug ? dodie : SIG_IGN);
- (void)signal(SIGCHLD, reapchild);
+ (void)signal(SIGCHLD, SIG_IGN);
(void)signal(SIGALRM, domark);
(void)signal(SIGPIPE, SIG_IGN);
(void)alarm(TIMERINTVL);
@@ -1117,18 +1116,6 @@ wallmsg(struct filed *f, struct iovec *i
}
(void)fclose(uf);
reenter = 0;
-}
-
-/* ARGSUSED */
-void
-reapchild(int signo)
-{
- int save_errno = errno;
- int status;
-
- while (waitpid(-1, &status, WNOHANG) > 0)
- ;
- errno = save_errno;
}
/*