Refer to the old basedir variable as dir.root.
[rsync/rsync.git] / sender.c
index f31176e..a964e08 100644 (file)
--- a/sender.c
+++ b/sender.c
@@ -27,7 +27,9 @@ extern int dry_run;
 extern int am_server;
 extern int am_daemon;
 extern int protocol_version;
+extern int updating_basis_file;
 extern int make_backups;
+extern int inplace;
 extern struct stats stats;
 
 
@@ -136,15 +138,21 @@ void send_files(struct file_list *flist, int f_out, int f_in)
                        exit_cleanup(RERR_PROTOCOL);
                }
 
+               if (inplace && protocol_version >= 29) {
+                       uchar fnamecmp_type = read_byte(f_in);
+                       updating_basis_file = fnamecmp_type == FNAMECMP_FNAME;
+               } else
+                       updating_basis_file = inplace && !make_backups;
+
                file = flist->files[i];
 
                stats.current_file_index = i;
                stats.num_transferred_files++;
                stats.total_transferred_size += file->length;
 
-               if (file->basedir) {
+               if (file->dir.root) {
                        /* N.B. We're sure that this fits, so offset is OK. */
-                       offset = strlcpy(fname, file->basedir, sizeof fname);
+                       offset = strlcpy(fname, file->dir.root, sizeof fname);
                        if (!offset || fname[offset-1] != '/')
                                fname[offset++] = '/';
                } else