On Fri, May 11, 2001 at 09:08:37PM -0400, Steve M. Robbins wrote:
> I'm not really sure what ^U is supposed to do. For me, it erases
> everything LEFT of the cursor. The terminal is updated correctly.
Exactly. But if echok is not set (on my system), it just prints "^U",
but acts like it cleared all of the characters.
The responsible code is here (driver/char/n_tty.c:355-367):
if (!L_ECHOK(tty) || !L_ECHOKE(tty) || !L_ECHOE(tty)) {
spin_lock_irqsave(&tty->read_lock, flags);
tty->read_cnt -= ((tty->read_head - tty->canon_head) &
(N_TTY_BUF_SIZE - 1));
tty->read_head = tty->canon_head;
spin_unlock_irqrestore(&tty->read_lock, flags);
finish_erasing(tty);
echo_char(KILL_CHAR(tty), tty);
/* Add a newline if ECHOK is on and ECHOKE is off. */
if (L_ECHOK(tty))
opost('\n', tty);
return;
}
As you can see, if any of echok/echoke/echoe is off, then it calls
finish_erasing(tty), which prevents the clearing, and then outputs the
kill character itself as "^U" (yes, two characters).
This is kernel 2.4.4. What about other kernels?
--
Taral <taral@taral.net>
Please use PGP/GPG encryption to send me mail.
"Any technology, no matter how primitive, is magic to those who don't
understand it." -- Florence Ambrose
Attachment:
pgpVgJ_9LhAkM.pgp
Description: PGP signature