diff options
author | Denys Vlasenko | 2011-10-22 06:27:41 +0200 |
---|---|---|
committer | Denys Vlasenko | 2011-10-22 06:27:41 +0200 |
commit | 7449e18190b8ed07a7cd1711b40885ae4b97efb4 (patch) | |
tree | c6913f5cab94f304f49731d7700d7afa30fd2a2a /libbb | |
parent | ef5a2d757a963fa50807c0abc8cb65be8657c8ee (diff) | |
download | busybox-7449e18190b8ed07a7cd1711b40885ae4b97efb4.zip busybox-7449e18190b8ed07a7cd1711b40885ae4b97efb4.tar.gz |
getty,login: tighten up handling of ctty, pgrp, and tty attr restoring on timeout
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/bb_askpass.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libbb/bb_askpass.c b/libbb/bb_askpass.c index 9a4188f..fe2b506 100644 --- a/libbb/bb_askpass.c +++ b/libbb/bb_askpass.c @@ -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; |