X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/936fa865e1fd2ea0c97ef1a361f3f35a4153be75..93204ccae21d3e623563bec7a037bb47a9e6f997:/receiver.c diff --git a/receiver.c b/receiver.c index ac19f9c7..ed1111a4 100644 --- a/receiver.c +++ b/receiver.c @@ -83,10 +83,10 @@ static int updating_basis; * As long as it's unique, rsync will work. */ -int get_tmpname(char *fnametmp, char *fname) +int get_tmpname(char *fnametmp, const char *fname) { int maxname, added, length = 0; - char *f; + const char *f; if (tmpdir) { /* Note: this can't overflow, so the return value is safe */ @@ -364,8 +364,6 @@ int recv_files(int f_in, char *local_name) if (delay_updates) delayed_bits = bitbag_create(cur_flist->used + 1); - updating_basis = inplace; - while (1) { cleanup_disable(); @@ -498,7 +496,6 @@ int recv_files(int f_in, char *local_name) fnamecmp = get_backup_name(fname); break; case FNAMECMP_FUZZY: - updating_basis = 0; if (file->dirname) { pathjoin(fnamecmpbuf, MAXPATHLEN, file->dirname, xname); @@ -507,7 +504,6 @@ int recv_files(int f_in, char *local_name) fnamecmp = xname; break; default: - updating_basis = 0; if (fnamecmp_type >= basis_dir_cnt) { rprintf(FERROR, "invalid basis_dir index: %d.\n", @@ -553,6 +549,7 @@ int recv_files(int f_in, char *local_name) fd1 = do_open(fnamecmp, O_RDONLY, 0); } } + updating_basis = inplace && fnamecmp == fname; if (fd1 == -1) { st.st_mode = 0;