Lines Matching refs:pattern
99 classmatch(const char *pattern, char test, int foldcase, const char **ep) in classmatch() argument
101 const char * const mismatch = pattern; in classmatch()
107 if (pattern[0] != '[' || pattern[1] != ':') { in classmatch()
111 pattern += 2; in classmatch()
113 if ((colon = strchr(pattern, ':')) == NULL || colon[1] != ']') { in classmatch()
118 len = (size_t)(colon - pattern); in classmatch()
120 if (foldcase && strncmp(pattern, "upper:]", 7) == 0) in classmatch()
121 pattern = "lower:]"; in classmatch()
123 if (!strncmp(pattern, cc->name, len) && cc->name[len] == '\0') { in classmatch()
144 static int fnmatch_ch(const char **pattern, const char **string, int flags) in fnmatch_ch() argument
146 const char * const mismatch = *pattern; in fnmatch_ch()
154 if (**pattern == '[') { in fnmatch_ch()
155 ++*pattern; in fnmatch_ch()
158 negate = (**pattern == '!') || (**pattern == '^'); in fnmatch_ch()
160 ++*pattern; in fnmatch_ch()
163 if (**pattern == ']') in fnmatch_ch()
166 while (**pattern) { in fnmatch_ch()
167 if (**pattern == ']') { in fnmatch_ch()
168 ++*pattern; in fnmatch_ch()
174 if (escape && (**pattern == '\\')) { in fnmatch_ch()
175 ++*pattern; in fnmatch_ch()
178 if (!**pattern) in fnmatch_ch()
183 if (slash && (**pattern == '/')) in fnmatch_ch()
187 switch (classmatch(*pattern, **string, nocase, pattern)) { in fnmatch_ch()
198 if (!**pattern) in fnmatch_ch()
206 if (((*pattern)[1] == '-') && ((*pattern)[2] != ']')) { in fnmatch_ch()
207 startch = *pattern; in fnmatch_ch()
208 *pattern += (escape && ((*pattern)[2] == '\\')) ? 3 : 2; in fnmatch_ch()
216 if (!**pattern || (slash && (**pattern == '/'))) in fnmatch_ch()
220 if ((**string >= *startch) && (**string <= **pattern)) in fnmatch_ch()
225 isupper((unsigned char)**pattern)) && in fnmatch_ch()
229 tolower((unsigned char)**pattern))) in fnmatch_ch()
232 ++*pattern; in fnmatch_ch()
237 if ((**string == **pattern)) in fnmatch_ch()
240 isupper((unsigned char)**pattern)) && in fnmatch_ch()
242 tolower((unsigned char)**pattern))) in fnmatch_ch()
245 ++*pattern; in fnmatch_ch()
251 *pattern = mismatch; in fnmatch_ch()
253 } else if (**pattern == '?') { in fnmatch_ch()
259 } else if (escape && (**pattern == '\\') && (*pattern)[1]) { in fnmatch_ch()
260 ++*pattern; in fnmatch_ch()
264 if (**string == **pattern) in fnmatch_ch()
267 isupper((unsigned char)**pattern)) && in fnmatch_ch()
269 tolower((unsigned char)**pattern))) in fnmatch_ch()
273 if (**string == '\0' || **pattern == '\0' || in fnmatch_ch()
274 (slash && ((**string == '/') || (**pattern == '/')))) in fnmatch_ch()
278 ++*pattern; in fnmatch_ch()
284 int fnmatch(const char *pattern, const char *string, int flags) in fnmatch() argument
299 if (*pattern == '*') in fnmatch()
302 while (*pattern && *string) { in fnmatch()
307 if (slash && escape && (*pattern == '\\') && (pattern[1] == '/')) in fnmatch()
308 ++pattern; in fnmatch()
309 if (slash && (*pattern == '/') && (*string == '/')) { in fnmatch()
310 ++pattern; in fnmatch()
320 if (*pattern == '.') in fnmatch()
321 ++pattern; in fnmatch()
322 else if (escape && (*pattern == '\\') && (pattern[1] == '.')) in fnmatch()
323 pattern += 2; in fnmatch()
345 while (*pattern) { in fnmatch()
347 ((string == strendseg) && (*pattern != '*'))) in fnmatch()
350 if (slash && ((*pattern == '/') || in fnmatch()
351 (escape && (*pattern == '\\') && (pattern[1] == '/')))) in fnmatch()
358 for (wild = 0; (*pattern == '*') || (*pattern == '?'); ++pattern) { in fnmatch()
359 if (*pattern == '*') { in fnmatch()
372 mismatch = pattern; in fnmatch()
378 for (matchptr = pattern, matchlen = 0; 1; ++matchlen) { in fnmatch()
435 while (*pattern && (string < strendseg)) { in fnmatch()
437 if (*pattern == '*') in fnmatch()
441 (*pattern == '/') || (escape && in fnmatch()
442 (*pattern == '\\') && (pattern[1] == '/')))) in fnmatch()
450 if (!fnmatch_ch(&pattern, &string, flags)) in fnmatch()
465 pattern = mismatch; in fnmatch()
475 if (*pattern && !(slash && ((*pattern == '/') || in fnmatch()
476 (escape && (*pattern == '\\') && (pattern[1] == '/'))))) in fnmatch()
479 if (leading_dir && !*pattern && *string == '/') in fnmatch()
484 if (!*string && !*pattern) in fnmatch()