- Call finish_transfer() with its new arg. This ensures that we only
authorWayne Davison <wayned@samba.org>
Mon, 10 Jan 2005 10:03:10 +0000 (10:03 +0000)
committerWayne Davison <wayned@samba.org>
Mon, 10 Jan 2005 10:03:10 +0000 (10:03 +0000)
  create a backup file if we're about to overwrite the basis file.
- Only clear make_backups for the redo phase if partial_dir isn't set.

receiver.c

index f10f25d..8c91ea6 100644 (file)
@@ -381,7 +381,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
                        if (verbose > 2)
                                rprintf(FINFO, "recv_files phase=%d\n", phase);
                        send_msg(MSG_DONE, "", 0);
-                       if (keep_partial)
+                       if (keep_partial && !partial_dir)
                                make_backups = 0; /* prevents double backup */
                        continue;
                }
@@ -566,21 +566,21 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
                        exit_cleanup(RERR_FILEIO);
                }
 
-               if (recv_ok || inplace)
-                       finish_transfer(fname, fnametmp, file, recv_ok);
-               else if (keep_partial && partialptr
-                   && handle_partial_dir(partialptr, PDIR_CREATE))
-                       finish_transfer(partialptr, fnametmp, file, 0);
-               else {
+               if (recv_ok || inplace) {
+                       finish_transfer(fname, fnametmp, file, recv_ok, 1);
+                       if (partialptr != fname && fnamecmp == partialptr) {
+                               do_unlink(partialptr);
+                               handle_partial_dir(partialptr, PDIR_DELETE);
+                       }
+               } else if (keep_partial && partialptr
+                   && handle_partial_dir(partialptr, PDIR_CREATE)) {
+                       finish_transfer(partialptr, fnametmp, file, recv_ok,
+                                       !partial_dir);
+               } else {
                        partialptr = NULL;
                        do_unlink(fnametmp);
                }
 
-               if (partialptr != fname && fnamecmp == partialptr && recv_ok) {
-                       do_unlink(partialptr);
-                       handle_partial_dir(partialptr, PDIR_DELETE);
-               }
-
                cleanup_disable();
 
                if (!recv_ok) {