X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/375a4556c7a1ffb9a4e7117f33fc42ed2bc4c026..2bca43f6278dcc0aa19a2620c1f1e2387b2e7b07:/flist.c diff --git a/flist.c b/flist.c index 693e900e..8813da7f 100644 --- a/flist.c +++ b/flist.c @@ -432,7 +432,7 @@ static struct file_struct *make_file(char *fname) -static void send_file_name(int f,struct file_list *flist,char *fname, +void send_file_name(int f,struct file_list *flist,char *fname, int recursive, unsigned base_flags) { struct file_struct *file; @@ -532,7 +532,7 @@ struct file_list *send_file_list(int f,int argc,char *argv[]) { int i,l; STRUCT_STAT st; - char *p,*dir; + char *p,*dir,*olddir; char lastpath[MAXPATHLEN]=""; struct file_list *flist; int64 start_write; @@ -580,6 +580,7 @@ struct file_list *send_file_list(int f,int argc,char *argv[]) } dir = NULL; + olddir = NULL; if (!relative_paths) { p = strrchr(fname,'/'); @@ -615,7 +616,7 @@ struct file_list *send_file_list(int f,int argc,char *argv[]) fname = "."; if (dir && *dir) { - char *olddir = push_dir(dir, 1); + olddir = push_dir(dir, 1); if (!olddir) { io_error=1; @@ -625,21 +626,22 @@ struct file_list *send_file_list(int f,int argc,char *argv[]) } flist_dir = dir; - if (one_file_system) - set_filesystem(fname); + } + + if (one_file_system) + set_filesystem(fname); + + if (!recurse || !send_included_file_names(f,flist)) send_file_name(f,flist,fname,recurse,FLAG_DELETE); + + if (olddir != NULL) { flist_dir = NULL; if (pop_dir(olddir) != 0) { rprintf(FERROR,"pop_dir %s : %s\n", dir,strerror(errno)); exit_cleanup(1); } - continue; } - - if (one_file_system) - set_filesystem(fname); - send_file_name(f,flist,fname,recurse,FLAG_DELETE); } if (f != -1) {