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

Diff for /src/usr.bin/ssh/sftp-client.c between version 1.173 and 1.174

version 1.173, 2023/09/08 05:56:13 version 1.174, 2023/09/08 06:10:02
Line 2681 
Line 2681 
         SFTP_DIRENT **dir_entries;          SFTP_DIRENT **dir_entries;
         char *filename, *new_from_path = NULL, *new_to_path = NULL;          char *filename, *new_from_path = NULL, *new_to_path = NULL;
         mode_t mode = 0777;          mode_t mode = 0777;
         Attrib curdir, ldirattrib, newdir;          Attrib *a, curdir, ldirattrib, newdir, lsym;
   
         debug2_f("crossload dir src \"%s\" to dst \"%s\"", from_path, to_path);          debug2_f("crossload dir src \"%s\" to dst \"%s\"", from_path, to_path);
   
Line 2746 
Line 2746 
                 new_from_path = sftp_path_append(from_path, filename);                  new_from_path = sftp_path_append(from_path, filename);
                 new_to_path = sftp_path_append(to_path, filename);                  new_to_path = sftp_path_append(to_path, filename);
   
                 if (S_ISDIR(dir_entries[i]->a.perm)) {                  a = &dir_entries[i]->a;
                   if (S_ISLNK(a->perm)) {
                           if (!follow_link_flag) {
                                   logit("%s: not a regular file", filename);
                                   continue;
                           }
                           /* Replace the stat contents with the symlink target */
                           if (sftp_stat(from, new_from_path, 1, &lsym) != 0) {
                                   logit("remote stat \"%s\" failed",
                                       new_from_path);
                                   ret = -1;
                                   continue;
                           }
                           a = &lsym;
                   }
                   if (S_ISDIR(a->perm)) {
                         if (strcmp(filename, ".") == 0 ||                          if (strcmp(filename, ".") == 0 ||
                             strcmp(filename, "..") == 0)                              strcmp(filename, "..") == 0)
                                 continue;                                  continue;
                         if (crossload_dir_internal(from, to,                          if (crossload_dir_internal(from, to,
                             new_from_path, new_to_path,                              new_from_path, new_to_path,
                             depth + 1, &(dir_entries[i]->a), preserve_flag,                              depth + 1, a, preserve_flag,
                             print_flag, follow_link_flag) == -1)                              print_flag, follow_link_flag) == -1)
                                 ret = -1;                                  ret = -1;
                 } else if (S_ISREG(dir_entries[i]->a.perm) ||                  } else if (S_ISREG(a->perm)) {
                     (follow_link_flag && S_ISLNK(dir_entries[i]->a.perm))) {                          if (sftp_crossload(from, to, new_from_path,
                         /*                              new_to_path, a, preserve_flag) == -1) {
                          * If this is a symlink then don't send the link's  
                          * Attrib. sftp_download() will do a FXP_STAT operation  
                          * and get the link target's attributes.  
                          */  
                         if (sftp_crossload(from, to, new_from_path, new_to_path,  
                             S_ISLNK(dir_entries[i]->a.perm) ? NULL :  
                             &(dir_entries[i]->a), preserve_flag) == -1) {  
                                 error("crossload \"%s\" to \"%s\" failed",                                  error("crossload \"%s\" to \"%s\" failed",
                                     new_from_path, new_to_path);                                      new_from_path, new_to_path);
                                 ret = -1;                                  ret = -1;

Legend:
Removed from v.1.173  
changed lines
  Added in v.1.174