X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/8d5de7770cde9b808c276bd86a0214189a8f7578..f70a606ea75cc1d03d335b3da1122f4cd7d0e381:/plink.c diff --git a/plink.c b/plink.c index fd9d36dd..f9c3b033 100644 --- a/plink.c +++ b/plink.c @@ -2,7 +2,9 @@ * PLink - a command-line (stdin/stdout) variant of PuTTY. */ +#ifndef AUTO_WINSOCK #include +#endif #include #include #include @@ -31,13 +33,28 @@ void connection_fatal (char *p, ...) { exit(1); } +static char *password = NULL; + +/* + * Stubs for linking with other modules. + */ +void write_clip (void *data, int len) { } +void term_deselect(void) { } + HANDLE outhandle; +DWORD orig_console_mode; + +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 term_out(void) { int reap; DWORD ret; - reap = 0; while (reap < inbuf_head) { if (!WriteFile(outhandle, inbuf+reap, inbuf_head-reap, &ret, NULL)) @@ -58,7 +75,6 @@ static int get_password(const char *prompt, char *str, int maxlen) HANDLE hin, hout; DWORD savemode, i; -#if 0 /* this allows specifying a password some other way */ if (password) { static int tried_once = 0; @@ -71,7 +87,6 @@ static int get_password(const char *prompt, char *str, int maxlen) return 1; } } -#endif hin = GetStdHandle(STD_INPUT_HANDLE); hout = GetStdHandle(STD_OUTPUT_HANDLE); @@ -114,6 +129,22 @@ int WINAPI stdin_read_thread(void *param) { return 0; } +/* + * Short description of parameters. + */ +static void usage(void) +{ + printf("PuTTY Link: command-line connection utility\n"); + printf("%s\n", ver); + printf("Usage: plink [options] [user@]host [command]\n"); + printf("Options:\n"); + printf(" -v show verbose messages\n"); + printf(" -ssh force use of ssh protocol\n"); + printf(" -P port connect to specified port\n"); + printf(" -pw passw login with specified password\n"); + exit(1); +} + int main(int argc, char **argv) { WSADATA wsadata; WORD winsock_ver; @@ -123,6 +154,7 @@ int main(int argc, char **argv) { DWORD threadid; struct input_data idata; int sending; + int portnumber = -1; ssh_get_password = get_password; @@ -143,7 +175,12 @@ int main(int argc, char **argv) { flags |= FLAG_VERBOSE; } else if (!strcmp(p, "-log")) { logfile = "putty.log"; - } + } else if (!strcmp(p, "-pw") && argc > 1) { + --argc, password = *++argv; + printf("pw is %s\n", password); + } else if (!strcmp(p, "-P") && argc > 1) { + --argc, portnumber = atoi(*++argv); + } } else if (*p) { if (!*cfg.host) { char *q = p; @@ -223,6 +260,12 @@ int main(int argc, char **argv) { } } + if (!*cfg.host) { + usage(); + } + if (portnumber != -1) + cfg.port = portnumber; + if (!*cfg.remote_cmd) flags |= FLAG_INTERACTIVE; @@ -277,8 +320,8 @@ int main(int argc, char **argv) { netevent = CreateEvent(NULL, FALSE, FALSE, NULL); stdinevent = CreateEvent(NULL, FALSE, FALSE, NULL); - if (!cfg.ldisc_term) - SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_PROCESSED_INPUT); + GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), &orig_console_mode); + SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_PROCESSED_INPUT); outhandle = GetStdHandle(STD_OUTPUT_HANDLE); /*