Commit fe332038 authored by Wayne Davison's avatar Wayne Davison

Call wildmatch(), not fnmatch().

parent 3c0b1ebf
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
static int match_hostname(char *host, char *tok) static int match_hostname(char *host, char *tok)
{ {
if (!host || !*host) return 0; 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) static int match_binary(char *b1, char *b2, char *mask, int addrlen)
......
...@@ -239,7 +239,7 @@ char *auth_server(int f_in, int f_out, int module, char *addr, char *leader) ...@@ -239,7 +239,7 @@ char *auth_server(int f_in, int f_out, int module, char *addr, char *leader)
if (!users) return NULL; if (!users) return NULL;
for (tok=strtok(users," ,\t"); tok; tok = strtok(NULL," ,\t")) { for (tok=strtok(users," ,\t"); tok; tok = strtok(NULL," ,\t")) {
if (fnmatch(tok, user, 0) == 0) break; if (wildmatch(tok, user)) break;
} }
free(users); free(users);
......
...@@ -70,12 +70,6 @@ static struct exclude_struct *make_exclude(const char *pattern, int include) ...@@ -70,12 +70,6 @@ static struct exclude_struct *make_exclude(const char *pattern, int include)
if (strpbrk(pattern, "*[?")) { if (strpbrk(pattern, "*[?")) {
ret->match_flags |= MATCHFLG_WILD; ret->match_flags |= MATCHFLG_WILD;
if (strstr(pattern, "**")) { 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; ret->match_flags |= MATCHFLG_WILD2;
/* If the pattern starts with **, note that. */ /* If the pattern starts with **, note that. */
if (*pattern == '*' && pattern[1] == '*') if (*pattern == '*' && pattern[1] == '*')
...@@ -155,8 +149,6 @@ static int check_one_exclude(char *name, struct exclude_struct *ex, ...@@ -155,8 +149,6 @@ static int check_one_exclude(char *name, struct exclude_struct *ex,
} }
if (ex->match_flags & MATCHFLG_WILD) { 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 "**" /* A non-anchored match with an infix slash and no "**"
* needs to match the last slash_cnt+1 name elements. */ * needs to match the last slash_cnt+1 name elements. */
if (!match_start && ex->slash_cnt && if (!match_start && ex->slash_cnt &&
...@@ -168,14 +160,13 @@ static int check_one_exclude(char *name, struct exclude_struct *ex, ...@@ -168,14 +160,13 @@ static int check_one_exclude(char *name, struct exclude_struct *ex,
} }
name = p+1; name = p+1;
} }
if (fnmatch(pattern, name, fnmatch_flags) == 0) if (wildmatch(pattern, name))
return 1; return 1;
if (ex->match_flags & MATCHFLG_WILD2_PREFIX) { if (ex->match_flags & MATCHFLG_WILD2_PREFIX) {
/* If the **-prefixed pattern has a '/' as the next /* If the **-prefixed pattern has a '/' as the next
* character, then try to match the rest of the * character, then try to match the rest of the
* pattern at the root. */ * pattern at the root. */
if (pattern[2] == '/' && if (pattern[2] == '/' && wildmatch(pattern+3, name))
fnmatch(pattern+3, name, fnmatch_flags) == 0)
return 1; return 1;
} }
else if (!match_start && ex->match_flags & MATCHFLG_WILD2) { else if (!match_start && ex->match_flags & MATCHFLG_WILD2) {
...@@ -184,7 +175,7 @@ static int check_one_exclude(char *name, struct exclude_struct *ex, ...@@ -184,7 +175,7 @@ static int check_one_exclude(char *name, struct exclude_struct *ex,
* after every slash. */ * after every slash. */
while ((name = strchr(name, '/')) != NULL) { while ((name = strchr(name, '/')) != NULL) {
name++; name++;
if (fnmatch(pattern, name, fnmatch_flags) == 0) if (wildmatch(pattern, name))
return 1; return 1;
} }
} }
......
...@@ -51,7 +51,7 @@ void set_compression(char *fname) ...@@ -51,7 +51,7 @@ void set_compression(char *fname)
strlower(fname); strlower(fname);
for (tok=strtok(dont," ");tok;tok=strtok(NULL," ")) { for (tok=strtok(dont," ");tok;tok=strtok(NULL," ")) {
if (fnmatch(tok, fname, 0) == 0) { if (wildmatch(tok, fname)) {
compression_level = 0; compression_level = 0;
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment