summaryrefslogtreecommitdiff
path: root/flist.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2008-05-31 11:27:13 -0700
committerWayne Davison <wayned@samba.org>2008-05-31 11:29:24 -0700
commitd1f66d8d796965d90552db75d63bdbbf0b98c3f9 (patch)
treeadc8eeb200b77f4b584e67a4ded3950b4ab20ef6 /flist.c
parentcc911409d6561d66094c2303e9a79b41ea4f2ef5 (diff)
downloadrsync-d1f66d8d796965d90552db75d63bdbbf0b98c3f9.tar.gz
If an arg is excluded, don't include its implied dirs.
Diffstat (limited to 'flist.c')
-rw-r--r--flist.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/flist.c b/flist.c
index b0b05dc9..bbba3eeb 100644
--- a/flist.c
+++ b/flist.c
@@ -2041,7 +2041,8 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
}
if (inc_recurse && relative_paths && *fbuf) {
- if ((p = strchr(fbuf+1, '/')) != NULL) {
+ if ((p = strchr(fbuf+1, '/')) != NULL
+ && !is_excluded(fbuf, S_ISDIR(st.st_mode) != 0, ALL_FILTERS)) {
if (p - fbuf == 1 && *fbuf == '.') {
if ((fn = strchr(p+1, '/')) != NULL)
p = fn;
@@ -2051,7 +2052,8 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
if (fn == p)
continue;
}
- } else if (implied_dirs && (p=strrchr(fbuf,'/')) && p != fbuf) {
+ } else if (implied_dirs && (p=strrchr(fbuf,'/')) && p != fbuf
+ && !is_excluded(fbuf, S_ISDIR(st.st_mode) != 0, ALL_FILTERS)) {
/* Send the implied directories at the start of the
* source spec, so we get their permissions right. */
send_implied_dirs(f, flist, fbuf, fbuf, p, flags, 0);