X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/0d694692c59504838ec2043ddfe670b3a9247faf..9275ca8aed9b69e7b62eab751342833eb637ff1d:/psftp.c diff --git a/psftp.c b/psftp.c index deef6d83..1e895751 100644 --- a/psftp.c +++ b/psftp.c @@ -406,7 +406,6 @@ int sftp_cmd_put(struct sftp_command *cmd) { fp = fopen(fname, "rb"); if (!fp) { printf("local: unable to open %s\n", fname); - fxp_close(fh); sfree(outfname); return 0; } @@ -861,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; @@ -887,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); @@ -898,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; } @@ -949,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();