@ -626,15 +655,20 @@ int match_basename(const char *basename, int basenamelen,
@@ -626,15 +655,20 @@ int match_basename(const char *basename, int basenamelen,
int flags)
{
if (prefix == patternlen) {
if (!strcmp_icase(pattern, basename))
if (patternlen == basenamelen &&
!strncmp_icase(pattern, basename, basenamelen))
return 1;
} else if (flags & EXC_FLAG_ENDSWITH) {
/* "*literal" matching against "fooliteral" */
if (patternlen - 1 <= basenamelen &&
!strcmp_icase(pattern + 1,
basename + basenamelen - patternlen + 1))
!strncmp_icase(pattern + 1,
basename + basenamelen - (patternlen - 1),
patternlen - 1))
return 1;
} else {
if (fnmatch_icase(pattern, basename, 0) == 0)
if (fnmatch_icase_mem(pattern, patternlen,
basename, basenamelen,
0) == 0)
return 1;
}
return 0;
@ -654,6 +688,7 @@ int match_pathname(const char *pathname, int pathlen,
@@ -654,6 +688,7 @@ int match_pathname(const char *pathname, int pathlen,
*/
if (*pattern == '/') {
pattern++;
patternlen--;
prefix--;
}
@ -680,13 +715,22 @@ int match_pathname(const char *pathname, int pathlen,
@@ -680,13 +715,22 @@ int match_pathname(const char *pathname, int pathlen,