[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.120 and 1.121

version 1.120, 2015/05/28 04:50:53 version 1.121, 2016/02/11 02:21:34
Line 1748 
Line 1748 
         if (fsync_flag)          if (fsync_flag)
                 (void)do_fsync(conn, handle, handle_len);                  (void)do_fsync(conn, handle, handle_len);
   
         if (do_close(conn, handle, handle_len) != SSH2_FX_OK)          if (do_close(conn, handle, handle_len) != 0)
                 status = SSH2_FX_FAILURE;                  status = SSH2_FX_FAILURE;
   
         free(handle);          free(handle);
Line 1761 
Line 1761 
     int depth, int preserve_flag, int print_flag, int resume, int fsync_flag)      int depth, int preserve_flag, int print_flag, int resume, int fsync_flag)
 {  {
         int ret = 0;          int ret = 0;
         u_int status;  
         DIR *dirp;          DIR *dirp;
         struct dirent *dp;          struct dirent *dp;
         char *filename, *new_src, *new_dst;          char *filename, *new_src, *new_dst;
         struct stat sb;          struct stat sb;
         Attrib a;          Attrib a, *dirattrib;
   
         if (depth >= MAX_DIR_DEPTH) {          if (depth >= MAX_DIR_DEPTH) {
                 error("Maximum directory depth exceeded: %d levels", depth);                  error("Maximum directory depth exceeded: %d levels", depth);
Line 1793 
Line 1792 
         if (!preserve_flag)          if (!preserve_flag)
                 a.flags &= ~SSH2_FILEXFER_ATTR_ACMODTIME;                  a.flags &= ~SSH2_FILEXFER_ATTR_ACMODTIME;
   
         status = do_mkdir(conn, dst, &a, 0);  
         /*          /*
          * we lack a portable status for errno EEXIST,           * sftp lacks a portable status value to match errno EEXIST,
          * so if we get a SSH2_FX_FAILURE back we must check           * so if we get a failure back then we must check whether
          * if it was created successfully.           * the path already existed and is a directory.
          */           */
         if (status != SSH2_FX_OK) {          if (do_mkdir(conn, dst, &a, 0) != 0) {
                 if (status != SSH2_FX_FAILURE)                  if ((dirattrib = do_stat(conn, dst, 0)) == NULL)
                         return -1;                          return -1;
                 if (do_stat(conn, dst, 0) == NULL)                  if (!S_ISDIR(dirattrib->perm)) {
                           error("\"%s\" exists but is not a directory", dst);
                         return -1;                          return -1;
                   }
         }          }
   
         if ((dirp = opendir(src)) == NULL) {          if ((dirp = opendir(src)) == NULL) {

Legend:
Removed from v.1.120  
changed lines
  Added in v.1.121