1 From c96672c9c603498d7c4775b2a372cbe9b0ba6dbf Mon Sep 17 00:00:00 2001
2 From: Dennis Groenen <tj.groenen@gmail.com>
3 Date: Sat, 22 Sep 2012 11:38:11 +0200
4 Subject: [PATCH 2/2] ash: install SIGHUP signal handler when interactive
8 procps/Kbuild.src | 1 +
9 shell/ash.c | 23 +++++++++++++++++++++++
10 3 files changed, 26 insertions(+)
12 diff --git a/include/libbb.h b/include/libbb.h
13 index 2cc1466..8694d52 100644
16 @@ -1097,6 +1097,8 @@ int kill_main(int argc, char **argv) IF_KILL(MAIN_EXTERNALLY_VISIBLE);
17 int chown_main(int argc, char **argv) IF_CHOWN(MAIN_EXTERNALLY_VISIBLE);
19 int ls_main(int argc, char **argv) IF_LS(MAIN_EXTERNALLY_VISIBLE);
21 +int pgrep_main(int argc, char **argv) IF_PKILL(MAIN_EXTERNALLY_VISIBLE);
22 /* Don't need IF_xxx() guard for these */
23 int gunzip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
24 int bunzip2_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
25 diff --git a/procps/Kbuild.src b/procps/Kbuild.src
26 index 89b1cc0..0718d32 100644
27 --- a/procps/Kbuild.src
28 +++ b/procps/Kbuild.src
29 @@ -11,6 +11,7 @@ lib-$(CONFIG_FREE) += free.o
30 lib-$(CONFIG_FUSER) += fuser.o
31 lib-$(CONFIG_KILL) += kill.o
32 lib-$(CONFIG_ASH) += kill.o # used for built-in kill by ash
33 +lib-$(CONFIG_ASH) += pgrep.o # used by ash to signal its process group
34 lib-$(CONFIG_PGREP) += pgrep.o
35 lib-$(CONFIG_PKILL) += pgrep.o
36 lib-$(CONFIG_PIDOF) += pidof.o
37 diff --git a/shell/ash.c b/shell/ash.c
38 index d025da4..5885b04 100644
41 @@ -3378,6 +3378,26 @@ static void setjobctl(int);
45 + * Hangup all children and exit cleany.
48 +signal_pgrp_exit(int signo)
50 + const char *args[] = {
52 + xasprintf("-%d", SIGHUP),
54 + xasprintf("%d", getpid()),
58 + pgrep_main(4, (char**)args);
60 + exitstatus = 128 + signo;
61 + exitshell(); // exit shell cleanly
68 @@ -13160,6 +13180,9 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
73 + signal(SIGHUP, signal_pgrp_exit);
75 #if ENABLE_FEATURE_EDITING_SAVEHISTORY
77 const char *hp = lookupvar("HISTFILE");