X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ac1a0994b6b15ea5e1681315ac014252015fcdf8..6902ed178ba54c8e1c410519f7ee576ddb42554c:/flist.c diff --git a/flist.c b/flist.c index 42091656..edd6024f 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; @@ -55,7 +58,7 @@ static struct file_struct null_file; static void clean_flist(struct file_list *flist, int strip_root); -struct string_area *string_area_new(int size) +static struct string_area *string_area_new(int size) { struct string_area *a; @@ -65,12 +68,12 @@ struct string_area *string_area_new(int size) a->current = a->base = malloc(size); if (!a->current) out_of_memory("string_area_new buffer"); a->end = a->base + size; - a->next = 0; + a->next = NULL; return a; } -void string_area_free(struct string_area *a) +static void string_area_free(struct string_area *a) { struct string_area *next; @@ -80,7 +83,7 @@ void string_area_free(struct string_area *a) } } -char *string_area_malloc(struct string_area **ap, int size) +static char *string_area_malloc(struct string_area **ap, int size) { char *p; struct string_area *a; @@ -100,7 +103,7 @@ char *string_area_malloc(struct string_area **ap, int size) return p; } -char *string_area_strdup(struct string_area **ap, const char *src) +static char *string_area_strdup(struct string_area **ap, const char *src) { char* dest = string_area_malloc(ap, strlen(src) + 1); return strcpy(dest, src); @@ -150,7 +153,7 @@ int readlink_stat(const char *Path, STRUCT_STAT *Buffer, char *Linkbuf) } if (S_ISLNK(Buffer->st_mode)) { int l; - if ((l = readlink(Path,Linkbuf,MAXPATHLEN-1)) == -1) { + if ((l = readlink((char *) Path, Linkbuf, MAXPATHLEN-1))== -1) { return -1; } Linkbuf[l] = 0; @@ -185,8 +188,6 @@ int link_stat(const char *Path, STRUCT_STAT *Buffer) static int match_file_name(char *fname,STRUCT_STAT *st) { if (check_exclude(fname,local_exclude_list,st)) { - if (verbose > 2) - rprintf(FINFO,"excluding file %s\n",fname); return 0; } return 1; @@ -205,7 +206,7 @@ static void set_filesystem(char *fname) static int to_wire_mode(mode_t mode) { - if (S_ISLNK(mode) && (S_IFLNK != 0120000)) { + if (S_ISLNK(mode) && (_S_IFLNK != 0120000)) { return (mode & ~(_S_IFMT)) | 0120000; } return (int)mode; @@ -213,8 +214,8 @@ static int to_wire_mode(mode_t mode) static mode_t from_wire_mode(int mode) { - if ((mode & (_S_IFMT)) == 0120000 && (S_IFLNK != 0120000)) { - return (mode & ~(_S_IFMT)) | S_IFLNK; + if ((mode & (_S_IFMT)) == 0120000 && (_S_IFLNK != 0120000)) { + return (mode & ~(_S_IFMT)) | _S_IFLNK; } return (mode_t)mode; } @@ -534,7 +535,7 @@ struct file_struct *make_file(int f, char *fname, struct string_area **ap, if (lastdir && strcmp(fname, lastdir)==0) { file->dirname = lastdir; } else { - file->dirname = STRDUP(ap, fname); + file->dirname = strdup(fname); lastdir = file->dirname; } file->basename = STRDUP(ap, p+1); @@ -579,7 +580,7 @@ struct file_struct *make_file(int f, char *fname, struct string_area **ap, if (lastdir && strcmp(lastdir, flist_dir)==0) { file->basedir = lastdir; } else { - file->basedir = STRDUP(ap, flist_dir); + file->basedir = strdup(flist_dir); lastdir = file->basedir; } } else { @@ -615,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); @@ -700,6 +704,8 @@ struct file_list *send_file_list(int f,int argc,char *argv[]) if (verbose && recurse && !am_server && f != -1) { rprintf(FINFO,"building file list ... "); + if (verbose > 1) + rprintf(FINFO, "\n"); rflush(FINFO); } @@ -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) { @@ -1015,7 +1023,7 @@ struct file_list *flist_new() #if ARENA_SIZE > 0 flist->string_area = string_area_new(0); #else - flist->string_area = 0; + flist->string_area = NULL; #endif return flist; }