Peter Schellenbach's patch: re-implement the PuTTY cryptographic
[u/mdw/putty] / scp.c
diff --git a/scp.c b/scp.c
index ac232fa..d4446a7 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -120,14 +120,10 @@ static void do_cmd(char *host, char *user, char *cmd)
        cfg.port = 22;
     }
 
-    if (portnumber)
-       cfg.port = portnumber;
-
     /* Set username */
     if (user != NULL && user[0] != '\0') {
        strncpy(cfg.username, user, sizeof(cfg.username)-1);
        cfg.username[sizeof(cfg.username)-1] = '\0';
-       cfg.port = 22;
     } else if (cfg.username[0] == '\0') {
        bump("Empty user name");
     }
@@ -135,6 +131,9 @@ static void do_cmd(char *host, char *user, char *cmd)
     if (cfg.protocol != PROT_SSH)
        cfg.port = 22;
 
+    if (portnumber)
+       cfg.port = portnumber;
+
     err = ssh_init(cfg.host, cfg.port, cmd, &realhost);
     if (err != NULL)
        bump("ssh_init: %s", err);
@@ -271,7 +270,7 @@ static void source(char *src)
     time_t stat_starttime, stat_lasttime;
 
     attr = GetFileAttributes(src);
-    if (attr == -1) {
+    if (attr == (DWORD)-1) {
        run_err("%s: No such file or directory", src);
        return;
     }
@@ -311,7 +310,7 @@ static void source(char *src)
     f = CreateFile(src, GENERIC_READ, FILE_SHARE_READ, NULL,
                   OPEN_EXISTING, 0, 0);
     if (f == INVALID_HANDLE_VALUE) {
-       run_err("%s: Cannot open file");
+       run_err("%s: Cannot open file", src);
        return;
     }
 
@@ -426,7 +425,7 @@ static void sink(char *targ)
     char namebuf[2048];
     char ch;
     int targisdir = 0;
-    int settime = 0;
+    int settime;
     int exists;
     DWORD attr;
     HANDLE f;
@@ -439,7 +438,7 @@ static void sink(char *targ)
     char *stat_name;
 
     attr = GetFileAttributes(targ);
-    if (attr != -1 && (attr & FILE_ATTRIBUTE_DIRECTORY) != 0)
+    if (attr != (DWORD)-1 && (attr & FILE_ATTRIBUTE_DIRECTORY) != 0)
        targisdir = 1;
 
     if (targetshouldbedirectory && !targisdir)
@@ -499,7 +498,7 @@ static void sink(char *targ)
            strcpy(namebuf, targ);
        }
        attr = GetFileAttributes(namebuf);
-       exists = (attr != -1);
+       exists = (attr != (DWORD)-1);
 
        if (buf[0] == 'D') {
            if (exists && (attr & FILE_ATTRIBUTE_DIRECTORY) == 0) {
@@ -541,7 +540,7 @@ static void sink(char *targ)
 
        for (i = 0; i < size; i += 4096) {
            char transbuf[4096];
-           int j, k = 4096;
+           DWORD j, k = 4096;
            if (i + k > size) k = size - i;
            if (ssh_recv(transbuf, k) == 0)
                bump("Lost connection");
@@ -733,7 +732,7 @@ static void tolocal(int argc, char *argv[])
 /*
  *  Initialize the Win$ock driver.
  */
-static void init_winsock()
+static void init_winsock(void)
 {
     WORD winsock_ver;
     WSADATA wsadata;
@@ -749,7 +748,7 @@ static void init_winsock()
 /*
  *  Short description of parameters.
  */
-static void usage()
+static void usage(void)
 {
     printf("PuTTY Secure Copy client\n");
     printf("%s\n", ver);
@@ -815,6 +814,9 @@ int main(int argc, char *argv[])
        ssh_send_eof();
        ssh_recv(&ch, 1);
     }
+#ifdef MSCRYPTOAPI
+    crypto_wrapup();
+#endif
     WSACleanup();
     random_save_seed();