aggety(8) from the beginning ignores ^C (the small exception was
between 2.32 and 2.34 when this char has been misinterpreted).
This patch forces agetty to interpret ^C like ^U, it means to
erase the user's input and wait for a completely new username.
The small difference is that for ^C it does not set 'kill character'.
This change does not affect serial lines where ^C is still ignored like
in previous decades. I'd like to avoid any regression as I have
no clue if any serial lines do not send this control char in some
context ...
Fixes: https://github.com/karelzak/util-linux/issues/1399
References: https://github.com/karelzak/util-linux/issues/1046
Signed-off-by: Karel Zak <kzak@redhat.com>
break;
case CTL('U'):
cp->kill = ascval; /* set kill character */
+ /* fallthrough */
+ case CTL('C'):
+ if (key == CTL('C') && !(op->flags & F_VCONSOLE))
+ /* Ignore CTRL+C on serial line */
+ break;
while (bp > logname) {
if ((tp->c_lflag & ECHO) == 0)
write_all(1, erase[cp->parity], 3);
break;
case CTL('D'):
exit(EXIT_SUCCESS);
- case CTL('C'):
- /* Ignore */
- break;
default:
if ((size_t)(bp - logname) >= sizeof(logname) - 1)
log_err(_("%s: input overrun"), op->tty);