X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/ffb959c711aeb32bc6116816cee4186cfd5a5c69..0d694692c59504838ec2043ddfe670b3a9247faf:/plink.c diff --git a/plink.c b/plink.c index 61552fac..5efcd454 100644 --- a/plink.c +++ b/plink.c @@ -119,18 +119,11 @@ void verify_ssh_host_key(char *host, int port, char *keytype, } } -HANDLE outhandle, errhandle; +HANDLE inhandle, outhandle, errhandle; DWORD orig_console_mode; WSAEVENT netevent; -void begin_session(void) { - if (!cfg.ldisc_term) - SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_PROCESSED_INPUT); - else - SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), orig_console_mode); -} - void from_backend(int is_stderr, char *data, int len) { int pos; DWORD ret; @@ -144,6 +137,23 @@ void from_backend(int is_stderr, char *data, int len) { } } +int term_ldisc(int mode) { return FALSE; } +void ldisc_update(int echo, int edit) { + /* Update stdin read mode to reflect changes in line discipline. */ + DWORD mode; + + mode = ENABLE_PROCESSED_INPUT; + if (echo) + mode = mode | ENABLE_ECHO_INPUT; + else + mode = mode &~ ENABLE_ECHO_INPUT; + if (edit) + mode = mode | ENABLE_LINE_INPUT; + else + mode = mode &~ ENABLE_LINE_INPUT; + SetConsoleMode(inhandle, mode); +} + struct input_data { DWORD len; char buffer[4096]; @@ -377,7 +387,7 @@ int main(int argc, char **argv) { /* No settings for this host; use defaults */ strncpy(cfg.host, p, sizeof(cfg.host)-1); cfg.host[sizeof(cfg.host)-1] = '\0'; - cfg.port = 22; + cfg.port = default_port; } else cfg = cfg2; } else { @@ -386,7 +396,7 @@ int main(int argc, char **argv) { cfg.username[sizeof(cfg.username)-1] = '\0'; strncpy(cfg.host, r, sizeof(cfg.host)-1); cfg.host[sizeof(cfg.host)-1] = '\0'; - cfg.port = 22; + cfg.port = default_port; } } } else { @@ -403,7 +413,6 @@ int main(int argc, char **argv) { len2 = strlen(cp); len -= len2; cp += len2; } cfg.nopty = TRUE; /* command => no terminal */ - cfg.ldisc_term = TRUE; /* use stdin like a line buffer */ break; /* done with cmdline */ } } @@ -475,10 +484,11 @@ int main(int argc, char **argv) { stdinevent = CreateEvent(NULL, FALSE, FALSE, NULL); - GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), &orig_console_mode); - SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_PROCESSED_INPUT); + inhandle = GetStdHandle(STD_INPUT_HANDLE); outhandle = GetStdHandle(STD_OUTPUT_HANDLE); errhandle = GetStdHandle(STD_ERROR_HANDLE); + GetConsoleMode(inhandle, &orig_console_mode); + SetConsoleMode(inhandle, ENABLE_PROCESSED_INPUT); /* * Turn off ECHO and LINE input modes. We don't care if this