From dd4b446f76736c0a13a61a38d7d816b6e6b5fca2 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 2 Aug 2017 16:52:12 +0200 Subject: [PATCH] hush: make SIGINT handling visually less confusing $ echo $$ 18448 $ echo $? <=== NOTHING?? $ That empty line does not look right. After this patch: $ echo $$ 18448 $ echo $? ^C $ function old new delta fgetc_interactive 245 246 +1 Signed-off-by: Denys Vlasenko --- shell/hush.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/hush.c b/shell/hush.c index cfefb7324..93ed0bc0b 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) { -- 2.25.1