From 5ec4998aaa603b01f607a6da6877a03501a513ac Mon Sep 17 00:00:00 2001 From: Damien Stuart Date: Wed, 24 Jul 2013 14:38:08 -0400 Subject: [PATCH 1/1] Reset terminal setting to orignal values after entering keys via stdin --- client/getpasswd.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client/getpasswd.c b/client/getpasswd.c index b3d4ba5..f1061be 100644 --- a/client/getpasswd.c +++ b/client/getpasswd.c @@ -136,6 +136,7 @@ getpasswd(const char *prompt, int fd) #ifndef WIN32 sigset_t sig, old_sig; struct termios ts; + int old_c_lflag; #else /* Force stdin on windows. */ fd = 0; @@ -178,6 +179,7 @@ getpasswd(const char *prompt, int fd) * - disable cannonical mode (input read line by line mode) */ tcgetattr(fileno(fp), &ts); + old_c_lflag = ts.c_lflag; ts.c_lflag &= ~(ECHO | ICANON | ISIG); tcsetattr(fileno(fp), TCSAFLUSH, &ts); @@ -194,6 +196,12 @@ getpasswd(const char *prompt, int fd) */ _putch(PW_CR_CHAR); _putch(PW_LF_CHAR); +#else + /* Reset terminal settings + */ + fputs("\n", fp); + ts.c_lflag = old_c_lflag; + tcsetattr(fileno(fp), TCSAFLUSH, &ts); #endif fclose(fp); -- 1.8.1.5