diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-04-09 16:13:32 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-04-09 16:15:01 -0700 |
commit | 2d698b6e42d8dca191ac795ef5dba3bf62496eec (patch) | |
tree | ac5e0b67043c50f49160e9fe407435706cf30444 /quit.h | |
parent | f1250933e4a2ac09a3d0b25b3877068e12f44da5 (diff) | |
download | vyatta-bash-2d698b6e42d8dca191ac795ef5dba3bf62496eec.tar.gz vyatta-bash-2d698b6e42d8dca191ac795ef5dba3bf62496eec.zip |
Integrate bash 3.2 version
This is merge of current Debian stable (Lenny) version of Bash
with Vyatta changes.
Diffstat (limited to 'quit.h')
-rw-r--r-- | quit.h | 26 |
1 files changed, 21 insertions, 5 deletions
@@ -22,11 +22,19 @@ #define _QUIT_H_ /* Non-zero means SIGINT has already ocurred. */ -extern int interrupt_state; - -/* Macro to call a great deal. SIGINT just sets above variable. When - it is safe, put QUIT in the code, and the "interrupt" will take place. */ -#define QUIT if (interrupt_state) throw_to_top_level () +extern volatile int interrupt_state; +extern volatile int 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 + place. The same scheme is used for terminating signals (e.g., SIGHUP) + and the terminating_signal variable. That calls a function which will + end up exiting the shell. */ +#define QUIT \ + do { \ + if (terminating_signal) termsig_handler (terminating_signal); \ + if (interrupt_state) throw_to_top_level (); \ + } while (0) #define SETINTERRUPT interrupt_state = 1 #define CLRINTERRUPT interrupt_state = 0 @@ -34,4 +42,12 @@ extern int interrupt_state; #define ADDINTERRUPT interrupt_state++ #define DELINTERRUPT interrupt_state-- +/* The same sort of thing, this time just for signals that would ordinarily + cause the shell to terminate. */ + +#define CHECK_TERMSIG \ + do { \ + if (terminating_signal) termsig_handler (terminating_signal); \ + } while (0) + #endif /* _QUIT_H_ */ |