From 7449e18190b8ed07a7cd1711b40885ae4b97efb4 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 22 Oct 2011 06:27:41 +0200 Subject: getty,login: tighten up handling of ctty, pgrp, and tty attr restoring on timeout Signed-off-by: Denys Vlasenko --- libbb/bb_askpass.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'libbb/bb_askpass.c') diff --git a/libbb/bb_askpass.c b/libbb/bb_askpass.c index 9a4188f52..fe2b50677 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; -- cgit v1.2.3