X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/4df9f36841dbdf5fa088a402d0dcdc8a4e0c86a6..03e2d0e329575f0ca6f7843e9ceae1cd5341902b:/receiver.c diff --git a/receiver.c b/receiver.c index 96215789..3cd7f9e0 100644 --- a/receiver.c +++ b/receiver.c @@ -304,14 +304,17 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) int recv_ok; extern struct stats stats; extern int preserve_perms; + extern int delete_after; struct stats initial_stats; if (verbose > 2) { rprintf(FINFO,"recv_files(%d) starting\n",flist->count); } - if (recurse && delete_mode && !local_name && flist->count>0) { - delete_files(flist); + if (!delete_after) { + if (recurse && delete_mode && !local_name && flist->count>0) { + delete_files(flist); + } } while (1) { @@ -465,7 +468,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) finish_transfer(fname, fnametmp, file); cleanup_disable(); - + if (!recv_ok) { if (csum_length == SUM_LENGTH) { rprintf(FERROR,"ERROR: file corruption in %s. File changed during transfer?\n", @@ -478,6 +481,12 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) } } + if (delete_after) { + if (recurse && delete_mode && !local_name && flist->count>0) { + delete_files(flist); + } + } + if (preserve_hard_links) do_hard_links(flist);