mrsh icon indicating copy to clipboard operation
mrsh copied to clipboard

SIGINT handling on multiline PS1

Open cubernetes opened this issue 1 year ago • 0 comments

Sending an interrupt signal to mrsh while having a multline prompt redraws the prompt incorrectly:

PS1="$(printf 'line1\nline2: ')" ./mrsh
line1
line2: ^C
line2:

One way that seems to work is to add rl_reset_line_state() before rl_replace_line() in sigint_handler.

Another hacky way is to set the readline variable rl_event_hook to a no-op function (e.g. static int no_op(void) { return 0; }) and when handling the signal interrupt (in static void sigint_handler()), the only thing you do is set the readline variable rl_done to 1.

cubernetes avatar Apr 14 '24 23:04 cubernetes