X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/94295d014eb4bf2aece054ab92ccb6047f7e9d33..01c034ad857128c51482a563befb374e38ebe668:/psftp.c diff --git a/psftp.c b/psftp.c index 0cf01bee..1e895751 100644 --- a/psftp.c +++ b/psftp.c @@ -860,10 +860,10 @@ static void ssh_sftp_init(void) { } static char *password = NULL; -static int get_password(const char *prompt, char *str, int maxlen) +static int get_line(const char *prompt, char *str, int maxlen, int is_pw) { HANDLE hin, hout; - DWORD savemode, i; + DWORD savemode, newmode, i; if (password) { static int tried_once = 0; @@ -886,8 +886,12 @@ static int get_password(const char *prompt, char *str, int maxlen) } GetConsoleMode(hin, &savemode); - SetConsoleMode(hin, (savemode & (~ENABLE_ECHO_INPUT)) | - ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT); + newmode = savemode | ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT; + if (is_pw) + newmode &= ~ENABLE_ECHO_INPUT; + else + newmode |= ENABLE_ECHO_INPUT; + SetConsoleMode(hin, newmode); WriteFile(hout, prompt, strlen(prompt), &i, NULL); ReadFile(hin, str, maxlen-1, &i, NULL); @@ -897,7 +901,8 @@ static int get_password(const char *prompt, char *str, int maxlen) if ((int)i > maxlen) i = maxlen-1; else i = i - 2; str[i] = '\0'; - WriteFile(hout, "\r\n", 2, &i, NULL); + if (is_pw) + WriteFile(hout, "\r\n", 2, &i, NULL); return 1; } @@ -948,7 +953,7 @@ int main(int argc, char *argv[]) char *err; flags = FLAG_STDERR; - ssh_get_password = &get_password; + ssh_get_line = &get_line; init_winsock(); sk_init();