X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/blobdiff_plain/72e5645e95d7fd7edd0c4ab59f9812b9d6124521..refs/heads/master:/filter-attribute-mods.diff diff --git a/filter-attribute-mods.diff b/filter-attribute-mods.diff index 47a968f..f7ceb0f 100644 --- a/filter-attribute-mods.diff +++ b/filter-attribute-mods.diff @@ -9,7 +9,7 @@ To use this patch, run these commands for a successful build: ./configure (optional if already run) make -based-on: 3b8f8192227b14e708bf535072485e50f4362270 +based-on: a01e3b490eb36ccf9e704840e1b6683dab867550 diff --git a/exclude.c b/exclude.c --- a/exclude.c +++ b/exclude.c @@ -238,7 +238,7 @@ diff --git a/exclude.c b/exclude.c diff --git a/flist.c b/flist.c --- a/flist.c +++ b/flist.c -@@ -81,6 +81,7 @@ extern struct chmod_mode_struct *chmod_modes; +@@ -82,6 +82,7 @@ extern struct chmod_mode_struct *chmod_modes; extern filter_rule_list filter_list; extern filter_rule_list daemon_filter_list; @@ -246,7 +246,7 @@ diff --git a/flist.c b/flist.c #ifdef ICONV_OPTION extern int filesfrom_convert; -@@ -283,7 +284,8 @@ static inline int path_is_daemon_excluded(char *path, int ignore_filename) +@@ -284,7 +285,8 @@ static inline int path_is_daemon_excluded(char *path, int ignore_filename) /* This function is used to check if a file should be included/excluded * from the list of files based on its name and type etc. The value of @@ -256,7 +256,7 @@ diff --git a/flist.c b/flist.c static int is_excluded(const char *fname, int is_dir, int filter_level) { #if 0 /* This currently never happens, so avoid a useless compare. */ -@@ -292,6 +294,8 @@ static int is_excluded(const char *fname, int is_dir, int filter_level) +@@ -293,6 +295,8 @@ static int is_excluded(const char *fname, int is_dir, int filter_level) #endif if (is_daemon_excluded(fname, is_dir)) return 1; @@ -265,7 +265,7 @@ diff --git a/flist.c b/flist.c if (filter_level != ALL_FILTERS) return 0; if (filter_list.head -@@ -1170,7 +1174,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, +@@ -1171,7 +1175,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, } else if (readlink_stat(thisname, &st, linkname) != 0) { int save_errno = errno; /* See if file is excluded before reporting an error. */ @@ -274,7 +274,7 @@ diff --git a/flist.c b/flist.c && (is_excluded(thisname, 0, filter_level) || is_excluded(thisname, 1, filter_level))) { if (ignore_perishable && save_errno != ENOENT) -@@ -1215,6 +1219,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, +@@ -1216,6 +1220,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, if (filter_level == NO_FILTERS) goto skip_filters; @@ -287,7 +287,7 @@ diff --git a/flist.c b/flist.c if (S_ISDIR(st.st_mode)) { if (!xfer_dirs) { -@@ -1415,12 +1425,23 @@ static struct file_struct *send_file_name(int f, struct file_list *flist, +@@ -1416,12 +1426,23 @@ static struct file_struct *send_file_name(int f, struct file_list *flist, int flags, int filter_level) { struct file_struct *file; @@ -312,7 +312,7 @@ diff --git a/flist.c b/flist.c file->mode = tweak_mode(file->mode, chmod_modes); if (f >= 0) { -@@ -2280,7 +2301,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) +@@ -2300,7 +2321,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) struct file_struct *file; file = send_file_name(f, flist, fbuf, &st, FLAG_TOP_DIR | FLAG_CONTENT_DIR | flags, @@ -321,7 +321,7 @@ diff --git a/flist.c b/flist.c if (!file) continue; if (inc_recurse) { -@@ -2294,7 +2315,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) +@@ -2314,7 +2335,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) } else send_if_directory(f, flist, file, fbuf, len, flags); } else @@ -329,11 +329,11 @@ diff --git a/flist.c b/flist.c + send_file_name(f, flist, fbuf, &st, flags, ALL_FILTERS_NO_EXCLUDE); } - gettimeofday(&end_tv, NULL); + if (reenable_multiplex >= 0) diff --git a/rsync.h b/rsync.h --- a/rsync.h +++ b/rsync.h -@@ -149,6 +149,9 @@ +@@ -151,6 +151,9 @@ #define NO_FILTERS 0 #define SERVER_FILTERS 1 #define ALL_FILTERS 2 @@ -343,7 +343,7 @@ diff --git a/rsync.h b/rsync.h #define XFLG_FATAL_ERRORS (1<<0) #define XFLG_OLD_PREFIXES (1<<1) -@@ -805,6 +808,8 @@ struct map_struct { +@@ -809,6 +812,8 @@ struct map_struct { int status; /* first errno from read errors */ }; @@ -352,7 +352,7 @@ diff --git a/rsync.h b/rsync.h #define FILTRULE_WILD (1<<0) /* pattern has '*', '[', and/or '?' */ #define FILTRULE_WILD2 (1<<1) /* pattern has '**' */ #define FILTRULE_WILD2_PREFIX (1<<2) /* pattern starts with "**" */ -@@ -825,8 +830,18 @@ struct map_struct { +@@ -829,8 +834,18 @@ struct map_struct { #define FILTRULE_RECEIVER_SIDE (1<<17)/* rule applies to the receiving side */ #define FILTRULE_CLEAR_LIST (1<<18)/* this item is the "!" token */ #define FILTRULE_PERISHABLE (1<<19)/* perishable if parent dir goes away */ @@ -371,7 +371,7 @@ diff --git a/rsync.h b/rsync.h typedef struct filter_struct { struct filter_struct *next; -@@ -836,6 +851,11 @@ typedef struct filter_struct { +@@ -840,6 +855,11 @@ typedef struct filter_struct { int slash_cnt; struct filter_list_struct *mergelist; } u; @@ -395,7 +395,7 @@ diff --git a/rsync.yo b/rsync.yo See the bf(--perms) and bf(--executability) options for how the resulting permission value can be applied to the files in the transfer. -@@ -1831,6 +1833,10 @@ be omitted, but if USER is empty, a leading colon must be supplied. +@@ -1846,6 +1848,10 @@ be omitted, but if USER is empty, a leading colon must be supplied. If you specify "--chown=foo:bar, this is exactly the same as specifying "--usermap=*:foo --groupmap=*:bar", only easier. @@ -406,7 +406,7 @@ diff --git a/rsync.yo b/rsync.yo dit(bf(--timeout=TIMEOUT)) This option allows you to set a maximum I/O timeout in seconds. If no data is transferred for the specified time then rsync will exit. The default is 0, which means no timeout. -@@ -2643,6 +2649,15 @@ itemization( +@@ -2671,6 +2677,15 @@ itemization( option's default rules that exclude things like "CVS" and "*.o" are marked as perishable, and will not prevent a directory that was removed on the source from being deleted on the destination. @@ -422,7 +422,7 @@ diff --git a/rsync.yo b/rsync.yo ) manpagesection(MERGE-FILE FILTER RULES) -@@ -2704,6 +2719,12 @@ itemization( +@@ -2732,6 +2747,12 @@ itemization( a rule prefix such as bf(hide)). )