--- busybox-1.10.2/shell/hush.c Sat Apr 19 05:50:31 2008 +++ busybox-1.10.2-hush/shell/hush.c Mon May 26 00:32:40 2008 @@ -699,9 +699,18 @@ BLTIN(NULL, NULL, NULL) }; +/* Signals are grouped, we handle them in batches */ +static void set_misc_sighandler(void (*handler)(int)) +{ + bb_signals(0 + + (1 << SIGINT) + + (1 << SIGQUIT) + + (1 << SIGTERM) + , handler); +} + #if ENABLE_HUSH_JOB -/* Signals are grouped, we handle them in batches */ static void set_fatal_sighandler(void (*handler)(int)) { bb_signals(0 @@ -725,14 +734,6 @@ + (1 << SIGTTOU) , handler); } -static void set_misc_sighandler(void (*handler)(int)) -{ - bb_signals(0 - + (1 << SIGINT) - + (1 << SIGQUIT) - + (1 << SIGTERM) - , handler); -} /* SIGCHLD is special and handled separately */ static void set_every_sighandler(void (*handler)(int)) @@ -815,7 +816,6 @@ #define set_fatal_sighandler(handler) ((void)0) #define set_jobctrl_sighandler(handler) ((void)0) -#define set_misc_sighandler(handler) ((void)0) #define hush_exit(e) exit(e) #endif /* JOB */ @@ -3907,8 +3907,10 @@ /* give up */ interactive_fd = 0; } - if (interactive_fd) + if (interactive_fd) { fcntl(interactive_fd, F_SETFD, FD_CLOEXEC); + set_misc_sighandler(SIG_IGN); + } } #endif