aboutsummaryrefslogtreecommitdiff
path: root/sys/libkern
diff options
context:
space:
mode:
authorJohn Polstra <jdp@FreeBSD.org>1997-04-29 03:24:57 +0000
committerJohn Polstra <jdp@FreeBSD.org>1997-04-29 03:24:57 +0000
commit298c8e3d6b1c3c1b69ab15a71b9ac5da9fa8a805 (patch)
treecfb23c023ce2651abf5002f7b5fa937b69c1843e /sys/libkern
parent1a0345d5436b8e8dfa5f8770447dd91037bad606 (diff)
downloadsrc-298c8e3d6b1c3c1b69ab15a71b9ac5da9fa8a805.tar.gz
src-298c8e3d6b1c3c1b69ab15a71b9ac5da9fa8a805.zip
Fix a bug that caused some false mismatches when both FNM_PATHNAME
and FNM_LEADING_DIR were specified and the pattern ended with "*". Example: pattern="src/usr.sbin/w*", string="src/usr.sbin/watch/watch.8,v". This should match, but did not.
Notes
Notes: svn path=/head/; revision=25269
Diffstat (limited to 'sys/libkern')
-rw-r--r--sys/libkern/fnmatch.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/libkern/fnmatch.c b/sys/libkern/fnmatch.c
index 1330ddbf4fef..0512b436f282 100644
--- a/sys/libkern/fnmatch.c
+++ b/sys/libkern/fnmatch.c
@@ -93,7 +93,8 @@ fnmatch(pattern, string, flags)
/* Optimize for pattern with * at end or before /. */
if (c == EOS)
if (flags & FNM_PATHNAME)
- return (strchr(string, '/') == NULL ?
+ return ((flags & FNM_LEADING_DIR) ||
+ strchr(string, '/') == NULL ?
0 : FNM_NOMATCH);
else
return (0);