From f0f51e90dcb84e35046dd6683e29f15336a429fb Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 14 Sep 2009 21:26:48 +0000 Subject: [PATCH] Since r7266, it's been possible to get a hostname into Default Settings; but plink did not cope gracefully with this -- it was not possible to override that hostname on the command line (attempts at doing so would be treated as part of the remote command). Fix this by applying the principle of r7265: if the user didn't explicitly specify that they wanted to launch the hostname in the default (for instance with '-load "Default Settings"', we assume they don't want to, and such a hostname doesn't count when deciding whether to treat a non-option argument as hostname or command. git-svn-id: svn://svn.tartarus.org/sgt/putty@8651 cda61777-01e9-0310-a592-d414129be87e --- unix/uxplink.c | 8 ++++++-- windows/winplink.c | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/unix/uxplink.c b/unix/uxplink.c index 8027b6f8..55d1663d 100644 --- a/unix/uxplink.c +++ b/unix/uxplink.c @@ -587,6 +587,7 @@ int main(int argc, char **argv) int exitcode; int errors; int use_subsystem = 0; + int got_host = FALSE; void *ldisc; long now; @@ -660,7 +661,7 @@ int main(int argc, char **argv) errors = 1; } } else if (*p) { - if (!cfg_launchable(&cfg)) { + if (!cfg_launchable(&cfg) || !(got_host || loaded_session)) { char *q = p; /* @@ -687,6 +688,7 @@ int main(int argc, char **argv) cfg.port = -1; strncpy(cfg.host, q, sizeof(cfg.host) - 1); cfg.host[sizeof(cfg.host) - 1] = '\0'; + got_host = TRUE; } else { char *r, *user, *host; /* @@ -735,8 +737,10 @@ int main(int argc, char **argv) strncpy(cfg.host, host, sizeof(cfg.host) - 1); cfg.host[sizeof(cfg.host) - 1] = '\0'; cfg.port = default_port; + got_host = TRUE; } else { cfg = cfg2; + loaded_session = TRUE; } } @@ -783,7 +787,7 @@ int main(int argc, char **argv) if (errors) return 1; - if (!cfg_launchable(&cfg)) { + if (!cfg_launchable(&cfg) || !(got_host || loaded_session)) { usage(); } diff --git a/windows/winplink.c b/windows/winplink.c index bc2e674a..7eb3aec1 100644 --- a/windows/winplink.c +++ b/windows/winplink.c @@ -281,6 +281,7 @@ int main(int argc, char **argv) int skcount, sksize; int exitcode; int errors; + int got_host = FALSE; int use_subsystem = 0; long now, next; @@ -343,7 +344,7 @@ int main(int argc, char **argv) errors = 1; } } else if (*p) { - if (!cfg_launchable(&cfg)) { + if (!cfg_launchable(&cfg) || !(got_host || loaded_session)) { char *q = p; /* * If the hostname starts with "telnet:", set the @@ -369,6 +370,7 @@ int main(int argc, char **argv) cfg.port = -1; strncpy(cfg.host, q, sizeof(cfg.host) - 1); cfg.host[sizeof(cfg.host) - 1] = '\0'; + got_host = TRUE; } else { char *r, *user, *host; /* @@ -417,8 +419,10 @@ int main(int argc, char **argv) strncpy(cfg.host, host, sizeof(cfg.host) - 1); cfg.host[sizeof(cfg.host) - 1] = '\0'; cfg.port = default_port; + got_host = TRUE; } else { cfg = cfg2; + loaded_session = TRUE; } } @@ -465,7 +469,7 @@ int main(int argc, char **argv) if (errors) return 1; - if (!cfg_launchable(&cfg)) { + if (!cfg_launchable(&cfg) || !(got_host || loaded_session)) { usage(); } -- 2.11.0