X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/50d7e054c78fa501c82f66a351fa76b4896d2111..01c034ad857128c51482a563befb374e38ebe668:/psftp.c?ds=sidebyside diff --git a/psftp.c b/psftp.c index f4c254a5..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; } @@ -590,6 +589,7 @@ void do_sftp(void) { fprintf(stderr, "Fatal: unable to initialise SFTP: %s\n", fxp_error()); + return; } /* @@ -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();