| --- src/util.c.orig 2017-05-18 19:39:59.000000000 +0200 |
| +++ src/util.c 2018-05-23 09:14:34.600854500 +0200 |
| @@ -43,6 +43,15 @@ |
| # define SA_RESTART 0 |
| #endif |
| |
| +/* Out-of-range substitutes make a good fallback for uncatchable |
| + signals. */ |
| +#ifndef SIGKILL |
| +# define SIGKILL (-1) |
| +#endif |
| +#ifndef SIGSTOP |
| +# define SIGSTOP (-1) |
| +#endif |
| + |
| char const pr_program[] = PR_PROGRAM; |
| |
| /* Queue up one-line messages to be printed at the end, |
| @@ -244,10 +253,32 @@ |
| static int const sig[] = |
| { |
| /* This one is handled specially. */ |
| +#ifdef SIGTSTP |
| SIGTSTP, |
| +#endif |
| |
| +#ifdef SIGALRM |
| /* The usual suspects. */ |
| - SIGALRM, SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM, |
| + SIGALRM, |
| +#endif |
| + |
| +#ifdef SIGHUP |
| + SIGHUP, |
| +#endif |
| + |
| +#ifdef SIGINT |
| + SIGINT, |
| +#endif |
| +#ifdef SIGPIPE |
| + SIGPIPE, |
| +#endif |
| +#ifdef SIGQUIT |
| + SIGQUIT, |
| +#endif |
| +#ifdef SIGTERM |
| + SIGTERM, |
| +#endif |
| + |
| #ifdef SIGPOLL |
| SIGPOLL, |
| #endif |
| @@ -297,7 +328,11 @@ |
| caught_sig[j] = (signal (sig[j], SIG_IGN) != SIG_IGN); |
| if (caught_sig[j]) |
| { |
| +#ifdef SIGTSTP |
| signal (sig[j], sig[j] == SIGTSTP ? stophandler : sighandler); |
| +#else |
| + signal (sig[j], sighandler); |
| +#endif |
| siginterrupt (sig[j], 0); |
| } |
| } |