aboutsummaryrefslogtreecommitdiffstats
path: root/extension/select.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2013-07-07 08:58:10 -0400
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2013-07-07 08:58:10 -0400
commit2376c18714fe197fbf56a19f8271e5f256ec7caf (patch)
tree82978fb44715a6f08c9cd4f09ad45fa586e169dd /extension/select.c
parent88b8c03a11e229b29cd985cabe51cb2ed3c24b55 (diff)
downloadegawk-2376c18714fe197fbf56a19f8271e5f256ec7caf.tar.gz
egawk-2376c18714fe197fbf56a19f8271e5f256ec7caf.tar.bz2
egawk-2376c18714fe197fbf56a19f8271e5f256ec7caf.zip
In select extension, if lacking sigaction, reset signal handler each time a signal is trapped.
Diffstat (limited to 'extension/select.c')
-rw-r--r--extension/select.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/extension/select.c b/extension/select.c
index 3bcef166..072a562f 100644
--- a/extension/select.c
+++ b/extension/select.c
@@ -107,6 +107,15 @@ signal_handler(int signum)
*/
sigaddset(& caught.mask, signum);
caught.flag = 1;
+#ifndef HAVE_SIGACTION
+ /*
+ * On platforms without sigaction, we do not know how the legacy
+ * signal API will behave. There does not appear to be an autoconf
+ * test for whether the signal handler is reset to default each time
+ * a signal is trapped, so we do this to be safe.
+ */
+ signal(signum, signal_handler);
+#endif
}
static int