if (strpbrk(pattern, "*[?")) {
ret->match_flags |= MATCHFLG_WILD;
if (strstr(pattern, "**")) {
- static int tested;
- if (!tested) {
- tested = 1;
- if (fnmatch("a/b/*","a/b/c/d",FNM_PATHNAME)==0)
- rprintf(FERROR,"WARNING: fnmatch FNM_PATHNAME is broken on your system\n");
- }
ret->match_flags |= MATCHFLG_WILD2;
/* If the pattern starts with **, note that. */
if (*pattern == '*' && pattern[1] == '*')
}
if (ex->match_flags & MATCHFLG_WILD) {
- int fnmatch_flags = (ex->match_flags & MATCHFLG_WILD2)?
- 0 : FNM_PATHNAME;
/* A non-anchored match with an infix slash and no "**"
* needs to match the last slash_cnt+1 name elements. */
if (!match_start && ex->slash_cnt &&
}
name = p+1;
}
- if (fnmatch(pattern, name, fnmatch_flags) == 0)
+ if (wildmatch(pattern, name))
return 1;
if (ex->match_flags & MATCHFLG_WILD2_PREFIX) {
/* If the **-prefixed pattern has a '/' as the next
* character, then try to match the rest of the
* pattern at the root. */
- if (pattern[2] == '/' &&
- fnmatch(pattern+3, name, fnmatch_flags) == 0)
+ if (pattern[2] == '/' && wildmatch(pattern+3, name))
return 1;
}
else if (!match_start && ex->match_flags & MATCHFLG_WILD2) {
* after every slash. */
while ((name = strchr(name, '/')) != NULL) {
name++;
- if (fnmatch(pattern, name, fnmatch_flags) == 0)
+ if (wildmatch(pattern, name))
return 1;
}
}
void send_exclude_list(int f)
{
int i;
- extern int remote_version;
+ extern int protocol_version;
extern int list_only, recurse;
/* This is a complete hack - blame Rusty.
l = strlen(pattern);
if (l == 0) continue;
if (exclude_list[i]->include) {
- if (remote_version < 19) {
+ if (protocol_version < 19) {
rprintf(FERROR,"remote rsync does not support include syntax - aborting\n");
exit_cleanup(RERR_UNSUPPORTED);
}