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.
Sending an interrupt signal to mrsh while having a multline prompt redraws the prompt incorrectly:
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 (instatic void sigint_handler()
), the only thing you do is set the readline variablerl_done
to 1.