Fixes (mostly from Colin Watson, a couple redone by me) to make Unix
[u/mdw/putty] / unix / uxplink.c
index a9661b5..d76bbca 100644 (file)
@@ -538,7 +538,7 @@ static void usage(void)
     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("  -ssh -telnet -rlogin -raw -serial\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");
@@ -587,7 +587,7 @@ int main(int argc, char **argv)
     int exitcode;
     int errors;
     int use_subsystem = 0;
-    void *ldisc;
+    int got_host = FALSE;
     long now;
 
     fdlist = NULL;
@@ -660,7 +660,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 +687,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 +736,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 +786,7 @@ int main(int argc, char **argv)
     if (errors)
        return 1;
 
-    if (!cfg_launchable(&cfg)) {
+    if (!cfg_launchable(&cfg) || !(got_host || loaded_session)) {
        usage();
     }
 
@@ -897,7 +900,7 @@ int main(int argc, char **argv)
            return 1;
        }
        back->provide_logctx(backhandle, logctx);
-       ldisc = ldisc_create(&cfg, NULL, back, backhandle, NULL);
+       ldisc_create(&cfg, NULL, back, backhandle, NULL);
        sfree(realhost);
     }
     connopen = 1;