rc

[fork] interactive rc shell
Log | Files | Refs | README | LICENSE

commit f41b897207c2d23503cb813cd8117af9a5391912
parent 48c0b2add862b07e0c535e09bc1d0ae3c7661896
Author: tgoodwin <tgoodwin>
Date:   Thu,  9 Jul 1998 16:33:42 +0000

don't ever try to set a signal to SIG_ERR

Diffstat:
Msignal.c | 6++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/signal.c b/signal.c @@ -99,8 +99,10 @@ extern void (*rc_signal(int s, void (*h)(int)))(int) { extern void initsignal() { void (*h)(int); int i; + for (i = 1; i < NUMOFSIGNALS; i++) { - if ((h = signal(i, SIG_DFL)) != SIG_DFL) + h = signal(i, SIG_DFL); + if (h != SIG_DFL && h != SIG_ERR) signal(i, h); sighandlers[i] = h; } @@ -108,7 +110,7 @@ extern void initsignal() { #if HAVE_SYSV_SIGCLD /* Ensure that SIGCLD is not SIG_IGN. Solaris's rshd does this. :-( */ h = signal(SIGCLD, SIG_DFL); - if (h != SIG_IGN) + if (h != SIG_IGN && h != SIG_ERR) signal(SIGCLD, h); #endif }