Delay evaluating the "-pw" option, so we can criticise the user's choice of
[u/mdw/putty] / cmdline.c
index 79f2981..bdfa1aa 100644 (file)
--- a/cmdline.c
+++ b/cmdline.c
@@ -315,19 +315,28 @@ int cmdline_process_param(char *p, char *value, int need_save, Config *cfg)
     if (!strcmp(p, "-pw")) {
        RETURN(2);
        UNAVAILABLE_IN(TOOLTYPE_NONNETWORK);
-       cmdline_password = value;
+       SAVEABLE(1);
+       /* We delay evaluating this until after the protocol is decided,
+        * so that we can warn if it's of no use with the selected protocol */
+       if (cfg->protocol != PROT_SSH)
+           cmdline_error("The -pw option can only be used with the "
+                         "SSH protocol");
+       else
+           cmdline_password = value;
     }
 
     if (!strcmp(p, "-agent") || !strcmp(p, "-pagent") ||
        !strcmp(p, "-pageant")) {
        RETURN(1);
        UNAVAILABLE_IN(TOOLTYPE_NONNETWORK);
+       SAVEABLE(0);
        cfg->tryagent = TRUE;
     }
     if (!strcmp(p, "-noagent") || !strcmp(p, "-nopagent") ||
        !strcmp(p, "-nopageant")) {
        RETURN(1);
        UNAVAILABLE_IN(TOOLTYPE_NONNETWORK);
+       SAVEABLE(0);
        cfg->tryagent = FALSE;
     }