diff options
Diffstat (limited to 'contrib/tcsh/tc.sig.c')
-rw-r--r-- | contrib/tcsh/tc.sig.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/contrib/tcsh/tc.sig.c b/contrib/tcsh/tc.sig.c index 343754f29b22..92bc798b4fa8 100644 --- a/contrib/tcsh/tc.sig.c +++ b/contrib/tcsh/tc.sig.c @@ -1,4 +1,4 @@ -/* $Header: /p/tcsh/cvsroot/tcsh/tc.sig.c,v 3.36 2006/08/24 20:56:31 christos Exp $ */ +/* $Header: /p/tcsh/cvsroot/tcsh/tc.sig.c,v 3.40 2012/01/25 15:34:41 christos Exp $ */ /* * tc.sig.c: Signal routine emulations */ @@ -32,7 +32,7 @@ */ #include "sh.h" -RCSID("$tcsh: tc.sig.c,v 3.36 2006/08/24 20:56:31 christos Exp $") +RCSID("$tcsh: tc.sig.c,v 3.40 2012/01/25 15:34:41 christos Exp $") #include "tc.wait.h" @@ -60,26 +60,38 @@ int alrmcatch_disabled; /* = 0; */ int phup_disabled; /* = 0; */ int pchild_disabled; /* = 0; */ int pintr_disabled; /* = 0; */ +int handle_interrupt; /* = 0; */ -void +int handle_pending_signals(void) { + int rv = 0; if (!phup_disabled && phup_pending) { phup_pending = 0; + handle_interrupt++; phup(); + handle_interrupt--; } if (!pintr_disabled && pintr_pending) { pintr_pending = 0; + handle_interrupt++; pintr(); + handle_interrupt--; + rv = 1; } if (!pchild_disabled && pchild_pending) { pchild_pending = 0; + handle_interrupt++; pchild(); + handle_interrupt--; } if (!alrmcatch_disabled && alrmcatch_pending) { alrmcatch_pending = 0; + handle_interrupt++; alrmcatch(); + handle_interrupt--; } + return rv; } void |