X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ab94af5c6f93c3b81af95888197f60522e2eb144..7ef6aa6405c90db2d64cc1ec230cef258af43791:/flist.c diff --git a/flist.c b/flist.c index bb6149e7..13d50482 100644 --- 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; @@ -487,6 +490,11 @@ struct file_struct *make_file(int f, char *fname, struct string_area **ap, } fname = cleaned_name; + /* f is set to -1 when calculating deletion file list */ + if (((f != -1) || !delete_excluded) && !noexcludes && !match_file_name(fname,&st)) + return NULL; + + memset(sum,0,SUM_LENGTH); if (readlink_stat(fname,&st,linkbuf) != 0) { @@ -509,10 +517,6 @@ struct file_struct *make_file(int f, char *fname, struct string_area **ap, return NULL; } - /* f is set to -1 when calculating deletion file list */ - if (((f != -1) || !delete_excluded) && !match_file_name(fname,&st)) - return NULL; - if (lp_ignore_nonreadable(module_id) && access(fname, R_OK) != 0) return NULL; @@ -613,6 +617,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 +848,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 +927,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) { @@ -1096,10 +1105,10 @@ static void clean_flist(struct file_list *flist, int strip_root) for (i=0;icount;i++) { rprintf(FINFO,"[%d] i=%d %s %s mode=0%o len=%.0f\n", - getpid(), i, + (int) getpid(), i, NS(flist->files[i]->dirname), NS(flist->files[i]->basename), - flist->files[i]->mode, + (int) flist->files[i]->mode, (double)flist->files[i]->length); } }