SIGINT handling on multiline PS1
Open
- Dominant language
- C
- Stars
- 531
- Forks
- 40
- PR merge metrics
- No merged PRs in 30d
Description
Sending an interrupt signal to mrsh while having a multline prompt redraws the prompt incorrectly:
```shell
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.
Contributor guide
Assessment
This issue has not been assessed yet.