summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.10.2-hush.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox-1.10.2-hush.patch')
-rw-r--r--package/busybox/busybox-1.10.2-hush.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.10.2-hush.patch b/package/busybox/busybox-1.10.2-hush.patch
new file mode 100644
index 000000000..8d65a3512
--- /dev/null
+++ b/package/busybox/busybox-1.10.2-hush.patch
@@ -0,0 +1,57 @@
+--- 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
+