[BACK]Return to sftp.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/sftp.c between version 1.155 and 1.156

version 1.155, 2013/08/31 00:13:54 version 1.156, 2013/10/17 00:30:13
Line 75 
Line 75 
 /* When this option is set, the file transfers will always preserve times */  /* When this option is set, the file transfers will always preserve times */
 int global_pflag = 0;  int global_pflag = 0;
   
   /* When this option is set, transfers will have fsync() called on each file */
   int global_fflag = 0;
   
 /* SIGINT received during command processing */  /* SIGINT received during command processing */
 volatile sig_atomic_t interrupted = 0;  volatile sig_atomic_t interrupted = 0;
   
Line 338 
Line 341 
   
 static int  static int
 parse_getput_flags(const char *cmd, char **argv, int argc,  parse_getput_flags(const char *cmd, char **argv, int argc,
     int *aflag, int *pflag, int *rflag)      int *aflag, int *fflag, int *pflag, int *rflag)
 {  {
         extern int opterr, optind, optopt, optreset;          extern int opterr, optind, optopt, optreset;
         int ch;          int ch;
Line 346 
Line 349 
         optind = optreset = 1;          optind = optreset = 1;
         opterr = 0;          opterr = 0;
   
         *aflag = *rflag = *pflag = 0;          *aflag = *fflag = *rflag = *pflag = 0;
         while ((ch = getopt(argc, argv, "aPpRr")) != -1) {          while ((ch = getopt(argc, argv, "afPpRr")) != -1) {
                 switch (ch) {                  switch (ch) {
                 case 'a':                  case 'a':
                         *aflag = 1;                          *aflag = 1;
                         break;                          break;
                   case 'f':
                           *fflag = 1;
                           break;
                 case 'p':                  case 'p':
                 case 'P':                  case 'P':
                         *pflag = 1;                          *pflag = 1;
Line 553 
Line 559 
   
 static int  static int
 process_get(struct sftp_conn *conn, char *src, char *dst, char *pwd,  process_get(struct sftp_conn *conn, char *src, char *dst, char *pwd,
     int pflag, int rflag, int resume)      int pflag, int rflag, int resume, int fflag)
 {  {
         char *abs_src = NULL;          char *abs_src = NULL;
         char *abs_dst = NULL;          char *abs_dst = NULL;
Line 612 
Line 618 
                         printf("Fetching %s to %s\n", g.gl_pathv[i], abs_dst);                          printf("Fetching %s to %s\n", g.gl_pathv[i], abs_dst);
                 if (pathname_is_dir(g.gl_pathv[i]) && (rflag || global_rflag)) {                  if (pathname_is_dir(g.gl_pathv[i]) && (rflag || global_rflag)) {
                         if (download_dir(conn, g.gl_pathv[i], abs_dst, NULL,                          if (download_dir(conn, g.gl_pathv[i], abs_dst, NULL,
                             pflag || global_pflag, 1, resume) == -1)                              pflag || global_pflag, 1, resume,
                               fflag || global_fflag) == -1)
                                 err = -1;                                  err = -1;
                 } else {                  } else {
                         if (do_download(conn, g.gl_pathv[i], abs_dst, NULL,                          if (do_download(conn, g.gl_pathv[i], abs_dst, NULL,
                             pflag || global_pflag, resume) == -1)                              pflag || global_pflag, resume,
                               fflag || global_fflag) == -1)
                                 err = -1;                                  err = -1;
                 }                  }
                 free(abs_dst);                  free(abs_dst);
Line 631 
Line 639 
   
 static int  static int
 process_put(struct sftp_conn *conn, char *src, char *dst, char *pwd,  process_put(struct sftp_conn *conn, char *src, char *dst, char *pwd,
     int pflag, int rflag)      int pflag, int rflag, int fflag)
 {  {
         char *tmp_dst = NULL;          char *tmp_dst = NULL;
         char *abs_dst = NULL;          char *abs_dst = NULL;
Line 698 
Line 706 
                         printf("Uploading %s to %s\n", g.gl_pathv[i], abs_dst);                          printf("Uploading %s to %s\n", g.gl_pathv[i], abs_dst);
                 if (pathname_is_dir(g.gl_pathv[i]) && (rflag || global_rflag)) {                  if (pathname_is_dir(g.gl_pathv[i]) && (rflag || global_rflag)) {
                         if (upload_dir(conn, g.gl_pathv[i], abs_dst,                          if (upload_dir(conn, g.gl_pathv[i], abs_dst,
                             pflag || global_pflag, 1) == -1)                              pflag || global_pflag, 1,
                               fflag || global_fflag) == -1)
                                 err = -1;                                  err = -1;
                 } else {                  } else {
                         if (do_upload(conn, g.gl_pathv[i], abs_dst,                          if (do_upload(conn, g.gl_pathv[i], abs_dst,
                             pflag || global_pflag) == -1)                              pflag || global_pflag,
                               fflag || global_fflag) == -1)
                                 err = -1;                                  err = -1;
                 }                  }
         }          }
Line 1155 
Line 1165 
 }  }
   
 static int  static int
 parse_args(const char **cpp, int *aflag, int *hflag, int *iflag, int *lflag,  parse_args(const char **cpp, int *ignore_errors, int *aflag, int *fflag,
     int *pflag, int *rflag, int *sflag, unsigned long *n_arg,      int *hflag, int *iflag, int *lflag, int *pflag, int *rflag, int *sflag,
     char **path1, char **path2)      unsigned long *n_arg, char **path1, char **path2)
 {  {
         const char *cmd, *cp = *cpp;          const char *cmd, *cp = *cpp;
         char *cp2, **argv;          char *cp2, **argv;
Line 1169 
Line 1179 
         cp = cp + strspn(cp, WHITESPACE);          cp = cp + strspn(cp, WHITESPACE);
   
         /* Check for leading '-' (disable error processing) */          /* Check for leading '-' (disable error processing) */
         *iflag = 0;          *ignore_errors = 0;
         if (*cp == '-') {          if (*cp == '-') {
                 *iflag = 1;                  *ignore_errors = 1;
                 cp++;                  cp++;
                 cp = cp + strspn(cp, WHITESPACE);                  cp = cp + strspn(cp, WHITESPACE);
         }          }
Line 1201 
Line 1211 
         }          }
   
         /* Get arguments and parse flags */          /* Get arguments and parse flags */
         *aflag = *lflag = *pflag = *rflag = *hflag = *n_arg = 0;          *aflag = *fflag = *hflag = *iflag = *lflag = *pflag = 0;
           *rflag = *sflag = 0;
         *path1 = *path2 = NULL;          *path1 = *path2 = NULL;
         optidx = 1;          optidx = 1;
         switch (cmdnum) {          switch (cmdnum) {
Line 1209 
Line 1220 
         case I_REGET:          case I_REGET:
         case I_PUT:          case I_PUT:
                 if ((optidx = parse_getput_flags(cmd, argv, argc,                  if ((optidx = parse_getput_flags(cmd, argv, argc,
                     aflag, pflag, rflag)) == -1)                      aflag, fflag, pflag, rflag)) == -1)
                         return -1;                          return -1;
                 /* Get first pathname (mandatory) */                  /* Get first pathname (mandatory) */
                 if (argc - optidx < 1) {                  if (argc - optidx < 1) {
Line 1350 
Line 1361 
     int err_abort)      int err_abort)
 {  {
         char *path1, *path2, *tmp;          char *path1, *path2, *tmp;
         int aflag = 0, hflag = 0, iflag = 0, lflag = 0, pflag = 0;          int ignore_errors = 0, aflag = 0, fflag = 0, hflag = 0, iflag = 0;
         int rflag = 0, sflag = 0;          int lflag = 0, pflag = 0, rflag = 0, sflag = 0;
         int cmdnum, i;          int cmdnum, i;
         unsigned long n_arg = 0;          unsigned long n_arg = 0;
         Attrib a, *aa;          Attrib a, *aa;
Line 1360 
Line 1371 
         glob_t g;          glob_t g;
   
         path1 = path2 = NULL;          path1 = path2 = NULL;
         cmdnum = parse_args(&cmd, &aflag, &hflag, &iflag, &lflag, &pflag,          cmdnum = parse_args(&cmd, &ignore_errors, &aflag, &fflag, &hflag,
             &rflag, &sflag, &n_arg, &path1, &path2);              &iflag, &lflag, &pflag, &rflag, &sflag, &n_arg, &path1, &path2);
         if (iflag != 0)          if (ignore_errors != 0)
                 err_abort = 0;                  err_abort = 0;
   
         memset(&g, 0, sizeof(g));          memset(&g, 0, sizeof(g));
Line 1381 
Line 1392 
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case I_GET:          case I_GET:
                 err = process_get(conn, path1, path2, *pwd, pflag,                  err = process_get(conn, path1, path2, *pwd, pflag,
                     rflag, aflag);                      rflag, aflag, fflag);
                 break;                  break;
         case I_PUT:          case I_PUT:
                 err = process_put(conn, path1, path2, *pwd, pflag, rflag);                  err = process_put(conn, path1, path2, *pwd, pflag,
                       rflag, fflag);
                 break;                  break;
         case I_RENAME:          case I_RENAME:
                 path1 = make_absolute(path1, *pwd);                  path1 = make_absolute(path1, *pwd);
Line 2189 
Line 2201 
         infile = stdin;          infile = stdin;
   
         while ((ch = getopt(argc, argv,          while ((ch = getopt(argc, argv,
             "1246ahpqrvCc:D:i:l:o:s:S:b:B:F:P:R:")) != -1) {              "1246afhpqrvCc:D:i:l:o:s:S:b:B:F:P:R:")) != -1) {
                 switch (ch) {                  switch (ch) {
                 /* Passed through to ssh(1) */                  /* Passed through to ssh(1) */
                 case '4':                  case '4':
Line 2248 
Line 2260 
                         showprogress = 0;                          showprogress = 0;
                         quiet = batchmode = 1;                          quiet = batchmode = 1;
                         addargs(&args, "-obatchmode yes");                          addargs(&args, "-obatchmode yes");
                           break;
                   case 'f':
                           global_fflag = 1;
                         break;                          break;
                 case 'p':                  case 'p':
                         global_pflag = 1;                          global_pflag = 1;

Legend:
Removed from v.1.155  
changed lines
  Added in v.1.156