@@ -0,0 +1,144 @@
+Index: array.c
+===================================================================
+--- array.c.orig
++++ array.c
+@@ -877,7 +877,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)
+Index: hashlib.c
+===================================================================
+--- hashlib.c.orig
++++ hashlib.c
+@@ -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)
+Index: jobs.c
+===================================================================
+--- jobs.c.orig
++++ jobs.c
+@@ -1735,6 +1735,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,
+Index: quit.h
+===================================================================
+--- quit.h.orig
++++ quit.h
+@@ -21,9 +21,13 @@
+ #if !defined (_QUIT_H_)
+ #define _QUIT_H_
+
++#define __need_sig_atomic_t
++#include <signal.h>
++#undef __need_sig_atomic_t
++
+ /* Non-zero means SIGINT has already ocurred. */
+-extern volatile int interrupt_state;
+-extern volatile int terminating_signal;
++extern volatile sig_atomic_t interrupt_state;
++extern volatile sig_atomic_t terminating_signal;
+
+ /* Macro to call a great deal. SIGINT just sets the interrupt_state variable.
+ When it is safe, put QUIT in the code, and the "interrupt" will take
+Index: sig.c
+===================================================================
+--- sig.c.orig
++++ sig.c
+@@ -61,13 +61,13 @@ extern int comsub_ignore_return;
+ extern int parse_and_execute_level, shell_initialized;
+
+ /* Non-zero after SIGINT. */
+-volatile int interrupt_state = 0;
++volatile sig_atomic_t interrupt_state = 0;
+
+ /* Non-zero after SIGWINCH */
+-volatile int sigwinch_received = 0;
++volatile sig_atomic_t sigwinch_received = 0;
+
+ /* Set to the value of any terminating signal received. */
+-volatile int terminating_signal = 0;
++volatile sig_atomic_t terminating_signal = 0;
+
+ /* The environment at the top-level R-E loop. We use this in
+ the case of error return. */
+@@ -79,10 +79,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;
+Index: sig.h
+===================================================================
+--- sig.h.orig
++++ sig.h
+@@ -108,11 +108,15 @@ do { \
+
+ #endif /* JOB_CONTROL */
+
++#define __need_sig_atomic_t
++#include <signal.h>
++#undef __need_sig_atomic_t
++
+ /* Extern variables */
+-extern volatile int sigwinch_received;
++extern volatile sig_atomic_t sigwinch_received;
+
+-extern int interrupt_immediately;
+-extern int terminate_immediately;
++extern volatile sig_atomic_t interrupt_immediately;
++extern volatile sig_atomic_t terminate_immediately;
+
+ /* Functions from sig.c. */
+ extern sighandler termsig_sighandler __P((int));
+Index: examples/loadables/tee.c
+===================================================================
+--- examples/loadables/tee.c.orig
++++ examples/loadables/tee.c
+@@ -35,6 +35,7 @@
+ #include "bashansi.h"
+
+ #include <stdio.h>
++#include <signal.h>
+ #include <errno.h>
+
+ #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 ();
+
|