]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - psftp.c
Logical host name: minor rewording.
[PuTTY.git] / psftp.c
diff --git a/psftp.c b/psftp.c
index e0e027a1abf2894cc3198c59f2cde767e6e6cd5b..92b57a2f363793b94b95aa9aa2128505dd13b6a0 100644 (file)
--- a/psftp.c
+++ b/psftp.c
@@ -169,35 +169,6 @@ char *canonify(const char *name)
     }
 }
 
-/*
- * Return a pointer to the portion of str that comes after the last
- * slash (or backslash or colon, if `local' is TRUE).
- *
- * This function has the annoying strstr() property of taking a const
- * char * and returning a char *. You should treat it as if it was a
- * pair of overloaded functions, one mapping mutable->mutable and the
- * other const->const :-(
- */
-static char *stripslashes(const char *str, int local)
-{
-    char *p;
-
-    if (local) {
-        p = strchr(str, ':');
-        if (p) str = p+1;
-    }
-
-    p = strrchr(str, '/');
-    if (p) str = p+1;
-
-    if (local) {
-       p = strrchr(str, '\\');
-       if (p) str = p+1;
-    }
-
-    return (char *)str;
-}
-
 /*
  * qsort comparison routine for fxp_name structures. Sorts by real
  * file name.
@@ -2394,7 +2365,7 @@ void do_sftp_cleanup()
     }
 }
 
-void do_sftp(int mode, int modeflags, char *batchfile)
+int do_sftp(int mode, int modeflags, char *batchfile)
 {
     FILE *fp;
     int ret;
@@ -2427,8 +2398,9 @@ void do_sftp(int mode, int modeflags, char *batchfile)
         fp = fopen(batchfile, "r");
         if (!fp) {
            printf("Fatal: unable to open %s\n", batchfile);
-           return;
+           return 1;
         }
+       ret = 0;
         while (1) {
            struct sftp_command *cmd;
            cmd = sftp_getcmd(fp, mode, modeflags);
@@ -2443,8 +2415,13 @@ void do_sftp(int mode, int modeflags, char *batchfile)
            }
         }
        fclose(fp);
-
+       /*
+        * In batch mode, and if exit on command failure is enabled,
+        * any command failure causes the whole of PSFTP to fail.
+        */
+       if (ret == 0 && !(modeflags & 2)) return 2;
     }
+    return 0;
 }
 
 /* ----------------------------------------------------------------------
@@ -2670,6 +2647,9 @@ static void usage(void)
     printf("  -hostkey aa:bb:cc:...\n");
     printf("            manually specify a host key (may be repeated)\n");
     printf("  -batch    disable all interactive prompts\n");
+    printf("  -sshlog file\n");
+    printf("  -sshrawlog file\n");
+    printf("            log protocol details to a file\n");
     cleanup_exit(1);
 }
 
@@ -2891,7 +2871,7 @@ const int share_can_be_upstream = FALSE;
  */
 int psftp_main(int argc, char *argv[])
 {
-    int i;
+    int i, ret;
     int portnumber = 0;
     char *userhost, *user;
     int mode = 0;
@@ -2987,7 +2967,7 @@ int psftp_main(int argc, char *argv[])
               " to connect\n");
     }
 
-    do_sftp(mode, modeflags, batchfile);
+    ret = do_sftp(mode, modeflags, batchfile);
 
     if (back != NULL && back->connected(backhandle)) {
        char ch;
@@ -3001,5 +2981,5 @@ int psftp_main(int argc, char *argv[])
     console_provide_logctx(NULL);
     sk_cleanup();
 
-    return 0;
+    return ret;
 }