X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/a79e1969c433be76db0e0585081977b4a7656e51..6092b4eea75fc013711d04f50f19b13e36391b6f:/windows/winplink.c diff --git a/windows/winplink.c b/windows/winplink.c index 1fb3ee0b..6e520c72 100644 --- a/windows/winplink.c +++ b/windows/winplink.c @@ -12,7 +12,7 @@ #include "storage.h" #include "tree234.h" -#define WM_AGENT_CALLBACK (WM_XUSER + 4) +#define WM_AGENT_CALLBACK (WM_APP + 4) #define MAX_STDIN_BACKLOG 4096 @@ -94,6 +94,8 @@ void ldisc_update(void *frontend, int echo, int edit) SetConsoleMode(inhandle, mode); } +char *get_ttymode(void *frontend, const char *mode) { return NULL; } + struct input_data { DWORD len; char buffer[4096]; @@ -187,6 +189,25 @@ int from_backend(void *frontend_handle, int is_stderr, return osize + esize; } +int from_backend_untrusted(void *frontend_handle, const char *data, int len) +{ + /* + * No "untrusted" output should get here (the way the code is + * currently, it's all diverted by FLAG_STDERR). + */ + assert(!"Unexpected call to from_backend_untrusted()"); + return 0; /* not reached */ +} + +int get_userpass_input(prompts_t *p, unsigned char *in, int inlen) +{ + int ret; + ret = cmdline_get_passwd_input(p, in, inlen); + if (ret == -1) + ret = console_get_userpass_input(p, in, inlen); + return ret; +} + static DWORD main_thread_id; void agent_schedule_callback(void (*callback)(void *, void *, int), @@ -210,14 +231,14 @@ static void usage(void) printf("Usage: plink [options] [user@]host [command]\n"); printf(" (\"host\" can also be a PuTTY saved session name)\n"); printf("Options:\n"); - printf(" -V print version information\n"); + printf(" -V print version information and exit\n"); + printf(" -pgpfp print PGP key fingerprints and exit\n"); printf(" -v show verbose messages\n"); printf(" -load sessname Load settings from saved session\n"); printf(" -ssh -telnet -rlogin -raw\n"); printf(" force use of a particular protocol\n"); printf(" -P port connect to specified port\n"); printf(" -l user connect with specified username\n"); - printf(" -m file read remote command(s) from file\n"); printf(" -batch disable all interactive prompts\n"); printf("The following options only apply to SSH connections:\n"); printf(" -pw passw login with specified password\n"); @@ -234,6 +255,9 @@ static void usage(void) printf(" -4 -6 force use of IPv4 or IPv6\n"); printf(" -C enable compression\n"); printf(" -i key private key file for authentication\n"); + printf(" -noagent disable use of Pageant\n"); + printf(" -agent enable use of Pageant\n"); + printf(" -m file read remote command(s) from file\n"); printf(" -s remote command is an SSH subsystem (SSH-2 only)\n"); printf(" -N don't start a shell/command (SSH-2 only)\n"); exit(1); @@ -282,8 +306,6 @@ int main(int argc, char **argv) int use_subsystem = 0; long now, next; - ssh_get_line = console_get_line; - sklist = NULL; skcount = sksize = 0; /* @@ -339,6 +361,9 @@ int main(int argc, char **argv) use_subsystem = 1; } else if (!strcmp(p, "-V")) { version(); + } else if (!strcmp(p, "-pgpfp")) { + pgp_fingerprints(); + exit(1); } else { fprintf(stderr, "plink: unknown option \"%s\"\n", p); errors = 1; @@ -592,16 +617,16 @@ int main(int argc, char **argv) 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); - - main_thread_id = GetCurrentThreadId(); - /* * Turn off ECHO and LINE input modes. We don't care if this * call fails, because we know we aren't necessarily running in * a console. */ + GetConsoleMode(inhandle, &orig_console_mode); + SetConsoleMode(inhandle, ENABLE_PROCESSED_INPUT); + + main_thread_id = GetCurrentThreadId(); + handles[0] = netevent; handles[1] = stdinevent; handles[2] = stdoutevent;