for (stringstart = string;;)
switch (c = *pattern++) {
case EOS:
- if ((flags & FNM_LEADING_DIR) && *string == '/')
+ if (ISSET(flags, FNM_LEADING_DIR) && *string == '/')
return (0);
return (*string == EOS ? 0 : FNM_NOMATCH);
case '?':
if (*string == EOS)
return (FNM_NOMATCH);
- if (*string == '/' && (flags & FNM_PATHNAME))
+ if (*string == '/' && ISSET(flags, FNM_PATHNAME))
return (FNM_NOMATCH);
- if (*string == '.' && (flags & FNM_PERIOD) &&
+ if (*string == '.' && ISSET(flags, FNM_PERIOD) &&
(string == stringstart ||
- ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
+ (ISSET(flags, FNM_PATHNAME) && *(string - 1) == '/')))
return (FNM_NOMATCH);
++string;
break;
while (c == '*')
c = *++pattern;
- if (*string == '.' && (flags & FNM_PERIOD) &&
+ if (*string == '.' && ISSET(flags, FNM_PERIOD) &&
(string == stringstart ||
- ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
+ (ISSET(flags, FNM_PATHNAME) && *(string - 1) == '/')))
return (FNM_NOMATCH);
/* Optimize for pattern with * at end or before /. */
if (c == EOS) {
- if (flags & FNM_PATHNAME)
- return ((flags & FNM_LEADING_DIR) ||
+ if (ISSET(flags, FNM_PATHNAME))
+ return (ISSET(flags, FNM_LEADING_DIR) ||
strchr(string, '/') == NULL ?
0 : FNM_NOMATCH);
else
return (0);
- } else if (c == '/' && (flags & FNM_PATHNAME)) {
+ } else if (c == '/' && ISSET(flags, FNM_PATHNAME)) {
if ((string = strchr(string, '/')) == NULL)
return (FNM_NOMATCH);
break;
while ((test = *string) != EOS) {
if (!fnmatch(pattern, string, flags & ~FNM_PERIOD))
return (0);
- if (test == '/' && (flags & FNM_PATHNAME))
+ if (test == '/' && ISSET(flags, FNM_PATHNAME))
break;
++string;
}
case '[':
if (*string == EOS)
return (FNM_NOMATCH);
- if (*string == '/' && (flags & FNM_PATHNAME))
+ if (*string == '/' && ISSET(flags, FNM_PATHNAME))
return (FNM_NOMATCH);
- if (*string == '.' && (flags & FNM_PERIOD) &&
+ if (*string == '.' && ISSET(flags, FNM_PERIOD) &&
(string == stringstart ||
- ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
+ (ISSET(flags, FNM_PATHNAME) && *(string - 1) == '/')))
return (FNM_NOMATCH);
switch (rangematch(pattern, *string, flags, &newp)) {
++string;
break;
case '\\':
- if (!(flags & FNM_NOESCAPE)) {
+ if (!ISSET(flags, FNM_NOESCAPE)) {
if ((c = *pattern++) == EOS) {
c = '\\';
--pattern;
/* FALLTHROUGH */
default:
normal:
- if (c != *string && !((flags & FNM_CASEFOLD) &&
+ if (c != *string && !(ISSET(flags, FNM_CASEFOLD) &&
(tolower((unsigned char)c) ==
tolower((unsigned char)*string))))
return (FNM_NOMATCH);
if ((negate = (*pattern == '!' || *pattern == '^')))
++pattern;
- if (flags & FNM_CASEFOLD)
+ if (ISSET(flags, FNM_CASEFOLD))
test = tolower((unsigned char)test);
/*
ok = 0;
c = *pattern++;
do {
- if (c == '\\' && !(flags & FNM_NOESCAPE))
+ if (c == '\\' && !ISSET(flags, FNM_NOESCAPE))
c = *pattern++;
if (c == EOS)
return (RANGE_ERROR);
- if (c == '/' && (flags & FNM_PATHNAME))
+ if (c == '/' && ISSET(flags, FNM_PATHNAME))
return (RANGE_NOMATCH);
- if ((flags & FNM_CASEFOLD))
+ if (ISSET(flags, FNM_CASEFOLD))
c = tolower((unsigned char)c);
if (*pattern == '-'
&& (c2 = *(pattern+1)) != EOS && c2 != ']') {
pattern += 2;
- if (c2 == '\\' && !(flags & FNM_NOESCAPE))
+ if (c2 == '\\' && !ISSET(flags, FNM_NOESCAPE))
c2 = *pattern++;
if (c2 == EOS)
return (RANGE_ERROR);
- if (flags & FNM_CASEFOLD)
+ if (ISSET(flags, FNM_CASEFOLD))
c2 = tolower((unsigned char)c2);
if (c <= test && test <= c2)
ok = 1;