X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/7627e92c549a662ddc922dd7f08e8970da7bbd15..0679ac4ca9d8fda7fc27dd0d44de48957c0ff88d:/flist.c diff --git a/flist.c b/flist.c index c8aabf38..5babe91c 100644 --- a/flist.c +++ b/flist.c @@ -58,7 +58,6 @@ extern int copy_links; extern int copy_unsafe_links; extern int protocol_version; extern int sanitize_paths; -extern int orig_umask; extern const char *io_write_phase; extern struct stats stats; extern struct file_list *the_file_list; @@ -714,12 +713,6 @@ static struct file_struct *receive_file_entry(struct file_list *flist, read_buf(f, sum, checksum_len); } - if (!preserve_perms) { - /* set an appropriate set of permissions based on original - * permissions and umask. This emulates what GNU cp does */ - file->mode &= ~orig_umask; - } - return file; } @@ -1494,8 +1487,8 @@ void clear_file(struct file_struct *file, struct file_list *flist) memset(file, 0, file_struct_len); /* In an empty entry, dir.depth is an offset to the next non-empty * entry. Likewise for length in the opposite direction. We assume - * that we're alone for now since flist_find() will collate adjacent - * items for any entries that are encountered during the find. */ + * that we're alone for now since flist_find() will adjust the counts + * it runs into that aren't up-to-date. */ file->length = file->dir.depth = 1; } @@ -1917,6 +1910,7 @@ struct file_list *get_dirlist(char *dirname, int dlen, struct file_list *dirlist; char dirbuf[MAXPATHLEN]; int save_recurse = recurse; + int save_xfer_dirs = xfer_dirs; if (dlen < 0) { dlen = strlcpy(dirbuf, dirname, MAXPATHLEN); @@ -1928,7 +1922,9 @@ struct file_list *get_dirlist(char *dirname, int dlen, dirlist = flist_new(WITHOUT_HLINK, "get_dirlist"); recurse = 0; + xfer_dirs = 1; send_directory(ignore_filter_rules ? -2 : -1, dirlist, dirname, dlen); + xfer_dirs = save_xfer_dirs; recurse = save_recurse; if (do_progress) flist_count_offset += dirlist->count;