X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/97894c647360239aca1ab7a132bc6ab092f92c8f..a7e60f0c59271ab27b30b24af60d52918b08ee90:/receiver.c diff --git a/receiver.c b/receiver.c index 46e456e7..805f0f6c 100644 --- a/receiver.c +++ b/receiver.c @@ -46,6 +46,7 @@ extern int module_id; extern int ignore_errors; extern int orig_umask; extern int append_mode; +extern int sparse_files; extern int keep_partial; extern int checksum_seed; extern int inplace; @@ -353,6 +354,8 @@ static void handle_delayed_updates(struct file_list *flist, char *local_name) safe_fname(partialptr), safe_fname(fname)); } + /* We don't use robust_rename() here because the + * partial-dir must be on the same drive. */ if (do_rename(partialptr, fname) < 0) { rsyserr(FERROR, errno, "rename failed for %s (from %s)", @@ -444,7 +447,10 @@ int recv_files(int f_in, struct file_list *flist, char *local_name) send_msg(MSG_DONE, "", 0); if (keep_partial && !partial_dir) make_backups = 0; /* prevents double backup */ - append_mode = 0; + if (append_mode) { + append_mode = 0; + sparse_files = 0; + } continue; } @@ -652,7 +658,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name) continue; } - if (partialptr) + if (keep_partial) cleanup_set(fnametmp, partialptr, file, fd1, fd2); }