summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko2011-10-22 06:27:41 +0200
committerDenys Vlasenko2011-10-22 06:27:41 +0200
commit7449e18190b8ed07a7cd1711b40885ae4b97efb4 (patch)
treec6913f5cab94f304f49731d7700d7afa30fd2a2a /libbb
parentef5a2d757a963fa50807c0abc8cb65be8657c8ee (diff)
downloadbusybox-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.c22
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;