Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed exclude/include matching so that normally wildcards will stop at
[rsync/rsync.git]
/
exclude.c
diff --git
a/exclude.c
b/exclude.c
index
15dc310
..
66aeb67
100644
(file)
--- a/
exclude.c
+++ b/
exclude.c
@@
-60,7
+60,10
@@
int send_included_file_names(int f,struct file_list *flist)
/* skip the allowed beginning slashes */
p++;
}
/* skip the allowed beginning slashes */
p++;
}
- send_file_name(f,flist,p,0,0);
+ /* silently skip files that don't exist to
+ be more like non-optimized case */
+ if (access(p,0) == 0)
+ send_file_name(f,flist,p,0,0);
}
exclude_list = ex_list;
}
exclude_list = ex_list;
@@
-97,6
+100,7
@@
static struct exclude_struct *make_exclude(char *pattern, int include)
only_included_files = 0;
}
ret->regular_exp = 1;
only_included_files = 0;
}
ret->regular_exp = 1;
+ ret->fnmatch_flags = strstr(pattern, "**") ? 0 : FNM_PATHNAME;
} else if (!ret->include) {
only_included_files = 0;
}
} else if (!ret->include) {
only_included_files = 0;
}
@@
-140,7
+144,7
@@
static int check_one_exclude(char *name,struct exclude_struct *ex,
}
if (ex->regular_exp) {
}
if (ex->regular_exp) {
- if (fnmatch(pattern, name,
0
) == 0)
+ if (fnmatch(pattern, name,
ex->fnmatch_flags
) == 0)
return 1;
} else {
int l1 = strlen(name);
return 1;
} else {
int l1 = strlen(name);