From 08a212ccae61729c72b706f681a991b250f1c11b Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Sun, 12 Apr 2009 00:17:36 +0000 Subject: [PATCH] * 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). --- ChangeLog | 7 +++++++ NEWS | 4 ++++ src/login.c | 10 ++++++++++ 3 files changed, 21 insertions(+) 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]);