Call wildmatch(), not fnmatch().
authorWayne Davison <wayned@samba.org>
Wed, 30 Jul 2003 06:12:27 +0000 (06:12 +0000)
committerWayne Davison <wayned@samba.org>
Wed, 30 Jul 2003 06:12:27 +0000 (06:12 +0000)
access.c
authenticate.c
exclude.c
token.c

index 25a0680..1dc73ae 100644 (file)
--- a/access.c
+++ b/access.c
@@ -27,7 +27,7 @@
 static int match_hostname(char *host, char *tok)
 {
        if (!host || !*host) return 0;
 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)
 }
 
 static int match_binary(char *b1, char *b2, char *mask, int addrlen)
index 7da25d4..ef4f6af 100644 (file)
@@ -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 (!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);
 
        }
        free(users);
 
index 3b8b7f0..a12e3b7 100644 (file)
--- a/exclude.c
+++ b/exclude.c
@@ -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, "**")) {
        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] == '*')
                        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) {
        }
 
        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 &&
                /* 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;
                }
                        }
                        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. */
                        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) {
                                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++;
                         * after every slash. */
                        while ((name = strchr(name, '/')) != NULL) {
                                name++;
-                               if (fnmatch(pattern, name, fnmatch_flags) == 0)
+                               if (wildmatch(pattern, name))
                                        return 1;
                        }
                }
                                        return 1;
                        }
                }
diff --git a/token.c b/token.c
index 0b3aa99..9f33436 100644 (file)
--- a/token.c
+++ b/token.c
@@ -51,7 +51,7 @@ void set_compression(char *fname)
        strlower(fname);
 
        for (tok=strtok(dont," ");tok;tok=strtok(NULL," ")) {
        strlower(fname);
 
        for (tok=strtok(dont," ");tok;tok=strtok(NULL," ")) {
-               if (fnmatch(tok, fname, 0) == 0) {
+               if (wildmatch(tok, fname)) {
                        compression_level = 0;
                        break;
                }
                        compression_level = 0;
                        break;
                }