Deleted Added
full compact
43a44
> #include <signal.h>
56a58,59
> void fake() {}
>
71a75
> sigset_t mask, emask;
97a102,105
> sigemptyset(&mask);
> sigemptyset(&emask);
> sigaddset(&mask, SIGTERM);
>
99a108,114
> (void) signal(SIGHUP, SIG_IGN);
>
> if (init && daemon(0, 1)) {
> syslog(LOG_ERR, "daemon: %m");
> return 1;
> }
>
101a117,119
> (void) sigprocmask(SIG_BLOCK, &mask, NULL);
> (void) signal(SIGTERM, fake);
>
128a147,148
> (void) signal(SIGTERM, SIG_DFL);
> (void) sigprocmask(SIG_UNBLOCK, &mask, NULL);
167a188,189
> (void) signal(SIGTERM, SIG_DFL);
> (void) sigprocmask(SIG_UNBLOCK, &mask, NULL);
243a266,272
> if (init) {
> init = 0;
> /* wait for signals and acts like -a */
> (void) sigsuspend(&emask);
> goto again;
> }
>