hush: make SIGINT handling visually less confusing

$ 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@googlemail.com>
This commit is contained in:
Denys Vlasenko 2017-08-02 16:52:12 +02:00
parent 7c40ddd950
commit dd4b446f76

View File

@ -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) {