diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2013-07-07 08:58:10 -0400 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2013-07-07 08:58:10 -0400 |
commit | 2376c18714fe197fbf56a19f8271e5f256ec7caf (patch) | |
tree | 82978fb44715a6f08c9cd4f09ad45fa586e169dd /extension/select.c | |
parent | 88b8c03a11e229b29cd985cabe51cb2ed3c24b55 (diff) | |
download | egawk-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.c | 9 |
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 |