- Moved file-deletion code into generator.c.
[rsync/rsync.git] / main.c
diff --git a/main.c b/main.c
index 14e8c06..3cc21b5 100644 (file)
--- a/main.c
+++ b/main.c
@@ -32,7 +32,6 @@ extern int am_sender;
 extern int am_generator;
 extern int am_daemon;
 extern int blocking_io;
-extern int delete_before;
 extern int remove_sent_files;
 extern int daemon_over_rsh;
 extern int need_messages_from_generator;
@@ -48,6 +47,8 @@ extern int recurse;
 extern int fuzzy_basis;
 extern int relative_paths;
 extern int rsync_port;
+extern int inplace;
+extern int make_backups;
 extern int whole_file;
 extern int read_batch;
 extern int write_batch;
@@ -497,8 +498,8 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
        int pid;
        int status = 0;
        int error_pipe[2], name_pipe[2];
-       BOOL need_name_pipe = (basis_dir[0] || partial_dir || fuzzy_basis)
-                           && !dry_run;
+       BOOL need_name_pipe = (basis_dir[0] || partial_dir || fuzzy_basis
+                           || (inplace && make_backups)) && !dry_run;
 
        /* The receiving side mustn't obey this, or an existing symlink that
         * points to an identical file won't be replaced by the referent. */
@@ -507,11 +508,6 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
        if (preserve_hard_links)
                init_hard_links(flist);
 
-       if (delete_before && !local_name && flist->count > 0) {
-               /* Moved here from recv_files() to prevent a race condition */
-               delete_files(flist);
-       }
-
        if (fd_pair(error_pipe) < 0
            || (need_name_pipe && fd_pair(name_pipe) < 0)) {
                rsyserr(FERROR, errno, "pipe failed in do_recv");