Merge across rsync+ patch; add a little documentation to the manpage. More documenta...
[rsync/rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index bb6149e..edd6024 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -47,6 +47,9 @@ extern int remote_version;
 extern int io_error;
 extern int sanitize_paths;
 
+extern int read_batch;
+extern int write_batch;
+
 static char topsrcname[MAXPATHLEN];
 
 static struct exclude_struct **local_exclude_list;
@@ -613,6 +616,9 @@ void send_file_name(int f,struct file_list *flist,char *fname,
                  out_of_memory("send_file_name");
   }
 
+  if (write_batch) /*  dw  */
+    file->flags = FLAG_DELETE;
+
   if (strcmp(file->basename,"")) {
     flist->files[flist->count++] = file;
     send_file_entry(file,f,base_flags);
@@ -841,6 +847,8 @@ struct file_list *send_file_list(int f,int argc,char *argv[])
                io_end_buffering(f);
                stats.flist_size = stats.total_written - start_write;
                stats.num_files = flist->count;
+               if (write_batch) /*  dw  */
+                   write_batch_flist_info(flist->count, flist->files);
        }
 
        if (verbose > 2)
@@ -918,7 +926,7 @@ struct file_list *recv_file_list(int f)
   }
 
   /* if protocol version is >= 17 then recv the io_error flag */
-  if (f != -1 && remote_version >= 17) {
+  if (f != -1 && remote_version >= 17  && !read_batch) {  /* dw-added readbatch */
          extern int module_id;
          extern int ignore_errors;
          if (lp_ignore_errors(module_id) || ignore_errors) {