[git commit] hush: make SIGINT handling visually less confusing
Denys Vlasenko
vda.linux at googlemail.com
Wed Aug 2 14:52:12 UTC 2017
commit: https://git.busybox.net/busybox/commit/?id=dd4b446f76736c0a13a61a38d7d816b6e6b5fca2
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
$ echo $$
18448
$ echo $? <wait here, run "kill -INT 18448" in other shell><press enter>
<=== NOTHING??
$
That empty line does not look right. After this patch:
$ echo $$
18448
$ echo $? <wait here, run "kill -INT 18448" in other shell><press enter>
^C
$
function old new delta
fgetc_interactive 245 246 +1
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
shell/hush.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/shell/hush.c b/shell/hush.c
index cfefb73..93ed0bc 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -2415,14 +2415,14 @@ static int get_user_input(struct in_str *i)
/*timeout*/ -1
);
/* read_line_input intercepts ^C, "convert" it to SIGINT */
- if (r == 0) {
- write(STDOUT_FILENO, "^C", 2);
+ if (r == 0)
raise(SIGINT);
- }
check_and_run_traps();
if (r != 0 && !G.flag_SIGINT)
break;
/* ^C or SIGINT: repeat */
+ /* bash prints ^C even on real SIGINT (non-kbd generated) */
+ write(STDOUT_FILENO, "^C", 2);
G.last_exitcode = 128 + SIGINT;
}
if (r < 0) {
More information about the busybox-cvs
mailing list