blob: 693a9b56a2f2ba692392d01b652d9c8fab1c5a1b [file] [log] [blame]
--- 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);
}
}