getty,login: tighten up handling of ctty, pgrp, and tty attr restoring on timeout

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2011-10-22 06:27:41 +02:00
parent ef5a2d757a
commit 7449e18190
4 changed files with 171 additions and 105 deletions

View File

@ -30,14 +30,23 @@ char* FAST_FUNC bb_ask(const int fd, int timeout, const char *prompt)
struct sigaction sa, oldsa;
struct termios tio, oldtio;
tcgetattr(fd, &oldtio);
fputs(prompt, stdout);
fflush_all();
tcflush(fd, TCIFLUSH);
tcgetattr(fd, &oldtio);
tio = oldtio;
#ifndef IUCLC
# define IUCLC 0
#endif
#if 0
/* Switch off UPPERCASE->lowercase conversion (never used since 198x)
* and XON/XOFF (why we want to mess with this??)
*/
# ifndef IUCLC
# define IUCLC 0
# endif
tio.c_iflag &= ~(IUCLC|IXON|IXOFF|IXANY);
tio.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|TOSTOP);
#endif
/* Switch off echo */
tio.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL);
tcsetattr(fd, TCSANOW, &tio);
memset(&sa, 0, sizeof(sa));
@ -50,9 +59,6 @@ char* FAST_FUNC bb_ask(const int fd, int timeout, const char *prompt)
alarm(timeout);
}
fputs(prompt, stdout);
fflush_all();
if (!passwd)
passwd = xmalloc(sizeof_passwd);
ret = passwd;