tcsh/tcsh-6.17.00-wait-intr.patch
2010-12-21 10:05:00 +01:00

35 lines
1.3 KiB
Diff

--- tcsh-6.17.00/sh.proc.c 2009-06-25 23:15:37.000000000 +0200
+++ sh.proc.c 2010-11-25 17:36:16.500751242 +0100
@@ -596,6 +596,10 @@ loop:
pp->p_flags & PRUNNING) {
handle_pending_signals();
sigsuspend(&pause_mask);
+ if (pintr_pending) {
+ handle_pending_signals();
+ break;
+ }
handle_pending_signals();
goto loop;
}
--- tcsh-6.17.00/sh.h 2009-06-25 23:27:37.000000000 +0200
+++ sh.h 2010-11-26 11:42:16.160119671 +0100
@@ -533,6 +533,7 @@ typedef union {
* Global flags
*/
EXTERN int chkstop IZERO; /* Warned of stopped jobs... allow exit */
+EXTERN volatile sig_atomic_t pintr_pending; /* Interrupted by SIGINT */
#if (defined(FIOCLEX) && defined(FIONCLEX)) || defined(F_SETFD)
# define CLOSE_ON_EXEC
--- tcsh-6.17.00/tc.sig.c 2006-08-24 22:56:31.000000000 +0200
+++ tc.sig.c 2010-11-26 11:40:09.779223509 +0100
@@ -55,7 +55,7 @@ sigset_interrupting(int sig, void (*fn)
static volatile sig_atomic_t alrmcatch_pending; /* = 0; */
static volatile sig_atomic_t pchild_pending; /* = 0; */
static volatile sig_atomic_t phup_pending; /* = 0; */
-static volatile sig_atomic_t pintr_pending; /* = 0; */
+volatile sig_atomic_t pintr_pending; /* = 0; */
int alrmcatch_disabled; /* = 0; */
int phup_disabled; /* = 0; */
int pchild_disabled; /* = 0; */