./configure (optional if already run)
make
-based-on: 24079e988fc31af4eba56cd2701fdc5a4154980d
+based-on: a01e3b490eb36ccf9e704840e1b6683dab867550
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
-@@ -80,6 +80,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;
#ifdef ICONV_OPTION
extern int filesfrom_convert;
-@@ -282,7 +283,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
static int is_excluded(const char *fname, int is_dir, int filter_level)
{
#if 0 /* This currently never happens, so avoid a useless compare. */
-@@ -291,6 +293,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;
if (filter_level != ALL_FILTERS)
return 0;
if (filter_list.head
-@@ -1169,7 +1173,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. */
&& (is_excluded(thisname, 0, filter_level)
|| is_excluded(thisname, 1, filter_level))) {
if (ignore_perishable && save_errno != ENOENT)
-@@ -1214,6 +1218,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;
if (S_ISDIR(st.st_mode)) {
if (!xfer_dirs) {
-@@ -1414,12 +1424,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;
file->mode = tweak_mode(file->mode, chmod_modes);
if (f >= 0) {
-@@ -2285,7 +2306,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,
if (!file)
continue;
if (inc_recurse) {
-@@ -2299,7 +2320,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
See the bf(--perms) and bf(--executability) options for how the resulting
permission value can be applied to the files in the transfer.
-@@ -1832,6 +1834,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.
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.
-@@ -2657,6 +2663,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.
)
manpagesection(MERGE-FILE FILTER RULES)
-@@ -2718,6 +2733,12 @@ itemization(
+@@ -2732,6 +2747,12 @@ itemization(
a rule prefix such as bf(hide)).
)