mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-10-23 06:14:18 -04:00
Call wildmatch(), not fnmatch().
This commit is contained in:
1 parent
3c0b1ebf78
commit
fe332038c6
4 files changed
+6
-15
No files matched your search
@@ -27,7 +27,7 @@
|
||||
static int match_hostname(char *host, char *tok)
|
||||
{
|
||||
if (!host || !*host) return 0;
|
||||
return (fnmatch(tok, host, 0) == 0);
|
||||
return wildmatch(tok, host);
|
||||
}
|
||||
|
||||
static int match_binary(char *b1, char *b2, char *mask, int addrlen)
|
||||
|
||||
+1
-1
@@ -239,7 +239,7 @@ char *auth_server(int f_in, int f_out, int module, char *addr, char *leader)
|
||||
if (!users) return NULL;
|
||||
|
||||
for (tok=strtok(users," ,\t"); tok; tok = strtok(NULL," ,\t")) {
|
||||
if (fnmatch(tok, user, 0) == 0) break;
|
||||
if (wildmatch(tok, user)) break;
|
||||
}
|
||||
free(users);
|
||||
|
||||
|
||||
@@ -70,12 +70,6 @@ static struct exclude_struct *make_exclude(const char *pattern, int include)
|
||||
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] == '*')
|
||||
@@ -155,8 +149,6 @@ static int check_one_exclude(char *name, struct exclude_struct *ex,
|
||||
}
|
||||
|
||||
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 &&
|
||||
@@ -168,14 +160,13 @@ static int check_one_exclude(char *name, struct exclude_struct *ex,
|
||||
}
|
||||
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) {
|
||||
@@ -184,7 +175,7 @@ static int check_one_exclude(char *name, struct exclude_struct *ex,
|
||||
* after every slash. */
|
||||
while ((name = strchr(name, '/')) != NULL) {
|
||||
name++;
|
||||
if (fnmatch(pattern, name, fnmatch_flags) == 0)
|
||||
if (wildmatch(pattern, name))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user