diff --git a/ChangeLog b/ChangeLog index 8fb47218..30cf7034 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-04-12 Nicolas François + + * src/login.c: Restore the echoctl, echoke, onclr flags to the + terminal termio flags. Reset echoprt, noflsh, tostop. This + behavior seems to have change by mistake in earlier releases + (4.0.8, for no obvious reason). + 2009-04-12 Nicolas François * src/login.c: Fix the count of failures before login exits in diff --git a/NEWS b/NEWS index d66f0134..f8d88b33 100644 --- a/NEWS +++ b/NEWS @@ -82,6 +82,10 @@ shadow-4.1.2.2 -> shadow-4.1.3 UNRELEASED * do not create groups with GID set to (gid_t)-1. - grpck * warn for groups with GID set to (gid_t)-1. +- login + * Restore the echoctl, echoke, onclr flags to the terminal termio flags. + Reset echoprt, noflsh, tostop. This behavior seems to have change by + mistake in earlier releases (4.0.8, for no obvious reason). - newusers * Implement the -r, --system option. * Speedup (see "addition of users or groups" above). diff --git a/src/login.c b/src/login.c index a77ca756..39a0cc80 100644 --- a/src/login.c +++ b/src/login.c @@ -173,6 +173,16 @@ static void setup_tty (void) termio.c_lflag |= ISIG | ICANON | ECHO | ECHOE; termio.c_iflag |= ICRNL; +#if defined(ECHOKE) && defined(ECHOCTL) + termio.c_lflag |= ECHOKE | ECHOCTL; +#endif +#if defined(ECHOPRT) && defined(NOFLSH) && defined(TOSTOP) + termio.c_lflag &= ~(ECHOPRT | NOFLSH | TOSTOP); +#endif +#ifdef ONLCR + termio.c_oflag |= ONLCR; +#endif + /* leave these values unchanged if not specified in login.defs */ termio.c_cc[VERASE] = getdef_num ("ERASECHAR", termio.c_cc[VERASE]); termio.c_cc[VKILL] = getdef_num ("KILLCHAR", termio.c_cc[VKILL]);