Add the ability to close sessions. This adds *_free() functions to most
[u/mdw/putty] / scp.c
diff --git a/scp.c b/scp.c
index dc43961..c547667 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -101,6 +101,7 @@ static int using_sftp = 0;
 
 static Backend *back;
 static void *backhandle;
+static Config cfg;
 
 static void source(char *src);
 static void rsource(char *src);
@@ -493,7 +494,7 @@ static void do_cmd(char *host, char *user, char *cmd)
     /*
      * Enact command-line overrides.
      */
-    cmdline_run_saved();
+    cmdline_run_saved(&cfg);
 
     /*
      * Trim leading whitespace off the hostname if it's there.
@@ -574,10 +575,10 @@ static void do_cmd(char *host, char *user, char *cmd)
 
     back = &ssh_backend;
 
-    err = back->init(NULL, &backhandle, cfg.host, cfg.port, &realhost, 0);
+    err = back->init(NULL, &backhandle, &cfg, cfg.host, cfg.port, &realhost,0);
     if (err != NULL)
        bump("ssh_init: %s", err);
-    logctx = log_init(NULL);
+    logctx = log_init(NULL, &cfg);
     back->provide_logctx(backhandle, logctx);
     ssh_scp_init();
     if (verbose && realhost != NULL)
@@ -2166,7 +2167,7 @@ void cmdline_error(char *p, ...)
     va_start(ap, p);
     vfprintf(stderr, p, ap);
     va_end(ap);
-    fputc('\n', stderr);
+    fprintf(stderr, "\n      try typing just \"pscp\" for help\n");
     exit(1);
 }
 
@@ -2189,7 +2190,7 @@ int main(int argc, char *argv[])
        int ret;
        if (argv[i][0] != '-')
            break;
-       ret = cmdline_process_param(argv[i], i+1<argc?argv[i+1]:NULL, 1);
+       ret = cmdline_process_param(argv[i], i+1<argc?argv[i+1]:NULL, 1, &cfg);
        if (ret == -2) {
            cmdline_error("option \"%s\" requires an argument", argv[i]);
        } else if (ret == 2) {
@@ -2219,8 +2220,9 @@ int main(int argc, char *argv[])
        } else if (strcmp(argv[i], "--") == 0) {
            i++;
            break;
-       } else
-           usage();
+       } else {
+           cmdline_error("unknown option \"%s\"", argv[i]);
+       }
     }
     argc -= i;
     argv += i;