From aec6b9f86f75a562768aeb8d3848fd5da6a675c0 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Mon, 10 Jan 2005 10:03:10 +0000 Subject: [PATCH] - Call finish_transfer() with its new arg. This ensures that we only 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 | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/receiver.c b/receiver.c index f10f25d4..8c91ea6f 100644 --- a/receiver.c +++ b/receiver.c @@ -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) { -- 2.34.1