--- array.c +++ array.c 2006-11-14 09:54:22.000000000 +0000 @@ -940,7 +940,7 @@ char *s, *sep; * To make a running version, compile -DTEST_ARRAY and link with: * xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a */ -int interrupt_immediately = 0; +volatile sig_atomic_t interrupt_immediately = 0; int signal_is_trapped(s) --- examples/loadables/tee.c +++ examples/loadables/tee.c 2006-11-14 10:31:29.000000000 +0000 @@ -35,6 +35,7 @@ #include "bashansi.h" #include +#include #include #include "builtins.h" @@ -56,7 +57,7 @@ static FLIST *tee_flist; #define TEE_BUFSIZE 8192 -extern int interrupt_immediately; +extern volatile sig_atomic_t interrupt_immediately; extern char *strerror (); --- hashlib.c +++ hashlib.c 2006-11-14 09:54:36.000000000 +0000 @@ -381,7 +381,7 @@ hash_pstats (table, name) HASH_TABLE *table, *ntable; -int interrupt_immediately = 0; +volatile sig_atomic_t interrupt_immediately = 0; int signal_is_trapped (s) --- jobs.c +++ jobs.c 2001-05-02 16:20:31.000000000 +0000 @@ -1783,6 +1783,15 @@ make_child (command, async_p) pid_t mypid; mypid = getpid (); + + if (interrupt_state) + { + struct timeval tv; + struct rusage rx; + (void) gettimeofday(&tv, NULL); + (void) getrusage(RUSAGE_SELF, &rx); + } + #if defined (BUFFERED_INPUT) /* Close default_buffered_input if it's > 0. We don't close it if it's 0 because that's the file descriptor used when redirecting input, --- sig.c +++ sig.c 2006-11-14 09:53:51.000000000 +0000 @@ -92,10 +92,10 @@ sigset_t top_level_mask; #endif /* JOB_CONTROL */ /* When non-zero, we throw_to_top_level (). */ -int interrupt_immediately = 0; +volatile sig_atomic_t interrupt_immediately = 0; /* When non-zero, we call the terminating signal handler immediately. */ -int terminate_immediately = 0; +volatile sig_atomic_t terminate_immediately = 0; #if defined (SIGWINCH) static SigHandler *old_winch = (SigHandler *)SIG_DFL; --- sig.h +++ sig.h 2014-04-17 09:42:15.030235662 +0000 @@ -111,8 +111,8 @@ do { \ extern volatile sig_atomic_t sigwinch_received; extern volatile sig_atomic_t sigterm_received; -extern int interrupt_immediately; /* no longer used */ -extern int terminate_immediately; +extern volatile sig_atomic_t interrupt_immediately; /* no longer used */ +extern volatile sig_atomic_t terminate_immediately; /* Functions from sig.c. */ extern sighandler termsig_sighandler __P((int));