X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/2c94fd1cbf32093be173ea6c4378caa109f73dd4..0965bee0865fd8ea129b2de62a3c50e09c59a184:/plink.c diff --git a/plink.c b/plink.c index 61552fac..6cbc2f6d 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]; @@ -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