X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/d9c40fd6ed72588278c633ee5db5c2eefad6ba7c..64b8ebc641fb8673a81166570a4cd91c50022cb9:/unix/uxplink.c diff --git a/unix/uxplink.c b/unix/uxplink.c index ba7b78f9..99ace88a 100644 --- a/unix/uxplink.c +++ b/unix/uxplink.c @@ -186,7 +186,7 @@ int main(int argc, char **argv) int i, skcount, sksize, socketstate; int connopen; int exitcode; - void *logctx; + int errors; void *ldisc; ssh_get_line = console_get_line; @@ -207,6 +207,7 @@ int main(int argc, char **argv) do_defaults(NULL, &cfg); default_protocol = cfg.protocol; default_port = cfg.port; + errors = 0; { /* * Override the default protocol if PLINK_PROTOCOL is set. @@ -231,16 +232,32 @@ int main(int argc, char **argv) if (ret == -2) { fprintf(stderr, "plink: option \"%s\" requires an argument\n", p); + errors = 1; } else if (ret == 2) { --argc, ++argv; } else if (ret == 1) { continue; } else if (!strcmp(p, "-batch")) { console_batch_mode = 1; + } else if (!strcmp(p, "-o")) { + if (argc <= 1) { + fprintf(stderr, + "plink: option \"-o\" requires an argument\n"); + errors = 1; + } else { + --argc; + provide_xrm_string(*++argv); + } + } else { + fprintf(stderr, "plink: unknown option \"%s\"\n", p); + errors = 1; } } else if (*p) { if (!*cfg.host) { char *q = p; + + do_defaults(NULL, &cfg); + /* * If the hostname starts with "telnet:", set the * protocol to Telnet and process the string as a @@ -358,6 +375,9 @@ int main(int argc, char **argv) } } + if (errors) + return 1; + if (!*cfg.host) { usage(); } @@ -441,6 +461,7 @@ int main(int argc, char **argv) /* * Start up the connection. */ + logctx = log_init(NULL); { char *error; char *realhost; @@ -453,9 +474,8 @@ int main(int argc, char **argv) fprintf(stderr, "Unable to open connection:\n%s\n", error); return 1; } - logctx = log_init(NULL); back->provide_logctx(backhandle, logctx); - ldisc = ldisc_create(NULL, back, backhandle, NULL); + ldisc = ldisc_create(&cfg, NULL, back, backhandle, NULL); sfree(realhost); } connopen = 1;