X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/9c41b8ea363252c09541b8bc9a81db93237aacb2..0965bee0865fd8ea129b2de62a3c50e09c59a184:/plink.c diff --git a/plink.c b/plink.c index 2fe882f7..6cbc2f6d 100644 --- a/plink.c +++ b/plink.c @@ -7,6 +7,7 @@ #endif #include #include +#include #include #define PUTTY_DO_GLOBALS /* actually _define_ globals */ @@ -16,7 +17,7 @@ void fatalbox (char *p, ...) { va_list ap; - fprintf(stderr, "FATAL ERROR: ", p); + fprintf(stderr, "FATAL ERROR: "); va_start(ap, p); vfprintf(stderr, p, ap); va_end(ap); @@ -26,7 +27,7 @@ void fatalbox (char *p, ...) { } void connection_fatal (char *p, ...) { va_list ap; - fprintf(stderr, "FATAL ERROR: ", p); + fprintf(stderr, "FATAL ERROR: "); va_start(ap, p); vfprintf(stderr, p, ap); va_end(ap); @@ -118,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; @@ -143,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]; @@ -402,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 */ } } @@ -474,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 @@ -556,7 +567,9 @@ int main(int argc, char **argv) { WPARAM wp; socket = sklist[i]; wp = (WPARAM)socket; - if (!WSAEnumNetworkEvents(socket, netevent, &things)) { + if (!WSAEnumNetworkEvents(socket, NULL, &things)) { + noise_ultralight(socket); + noise_ultralight(things.lNetworkEvents); if (things.lNetworkEvents & FD_READ) connopen &= select_result(wp, (LPARAM)FD_READ); if (things.lNetworkEvents & FD_CLOSE) @@ -568,6 +581,7 @@ int main(int argc, char **argv) { } } } else if (n == 1) { + noise_ultralight(idata.len); if (idata.len > 0) { back->send(idata.buffer, idata.len); } else {