diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-10-21 07:30:28 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-10-21 07:30:28 +0000 |
commit | a4607c1f07fac984c22325e84caa525fa177edc9 (patch) | |
tree | 3dfafdd516700f16723722a01612a3c74c96b015 /posix | |
parent | d785c366924df522974f4ee88d77fd8aaed58803 (diff) | |
download | glibc-a4607c1f07fac984c22325e84caa525fa177edc9.tar.gz glibc-a4607c1f07fac984c22325e84caa525fa177edc9.tar.xz glibc-a4607c1f07fac984c22325e84caa525fa177edc9.zip |
Update.
* posix/fnmatch_loop.c: Make FNM_LEADING_DIR behave as GNU tar expects it. Patch by Colin Watson <riva.ucam.org>. * posix/tst-fnmatch.input: Add test cases for FNM_LEADING_DIR.
Diffstat (limited to 'posix')
-rw-r--r-- | posix/fnmatch_loop.c | 15 | ||||
-rw-r--r-- | posix/tst-fnmatch.input | 23 |
2 files changed, 27 insertions, 11 deletions
diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c index 6b20aa4304..4c619ed4bb 100644 --- a/posix/fnmatch_loop.c +++ b/posix/fnmatch_loop.c @@ -99,25 +99,18 @@ FCT (pattern, string, no_leading_period, flags) if (c == L('\0')) /* The wildcard(s) is/are the last element of the pattern. If the name is a file name and contains another slash - this does mean it cannot match. If the FNM_LEADING_DIR - flag is set and exactly one slash is following, we have - a match. */ + this means it cannot match, unless the FNM_LEADING_DIR + flag is set. */ { int result = (flags & FNM_FILE_NAME) == 0 ? 0 : FNM_NOMATCH; if (flags & FNM_FILE_NAME) { - const CHAR *slashp = STRCHR (n, L('/')); - if (flags & FNM_LEADING_DIR) - { - if (slashp != NULL - && STRCHR (slashp + 1, L('/')) == NULL) - result = 0; - } + result = 0; else { - if (slashp == NULL) + if (STRCHR (n, L('/')) == NULL) result = 0; } } diff --git a/posix/tst-fnmatch.input b/posix/tst-fnmatch.input index 7c79ddc3ab..3e0fb95ca2 100644 --- a/posix/tst-fnmatch.input +++ b/posix/tst-fnmatch.input @@ -459,3 +459,26 @@ de_DE.ISO-8859-1 "á" "[[=ä=]b]" 0 de_DE.ISO-8859-1 "ä" "[[=ä=]b]" 0 de_DE.ISO-8859-1 "b" "[[=ä=]b]" 0 de_DE.ISO-8859-1 "c" "[[=ä=]b]" NOMATCH + +# Test of GNU extensions. +C "x" "x" 0 PATHNAME|LEADING_DIR +C "x/y" "x" 0 PATHNAME|LEADING_DIR +C "x/y/z" "x" 0 PATHNAME|LEADING_DIR +C "x" "*" 0 PATHNAME|LEADING_DIR +C "x/y" "*" 0 PATHNAME|LEADING_DIR +C "x/y/z" "*" 0 PATHNAME|LEADING_DIR +C "x" "*x" 0 PATHNAME|LEADING_DIR +C "x/y" "*x" 0 PATHNAME|LEADING_DIR +C "x/y/z" "*x" 0 PATHNAME|LEADING_DIR +C "x" "x*" 0 PATHNAME|LEADING_DIR +C "x/y" "x*" 0 PATHNAME|LEADING_DIR +C "x/y/z" "x*" 0 PATHNAME|LEADING_DIR +C "x" "a" NOMATCH PATHNAME|LEADING_DIR +C "x/y" "a" NOMATCH PATHNAME|LEADING_DIR +C "x/y/z" "a" NOMATCH PATHNAME|LEADING_DIR +C "x" "x/y" NOMATCH PATHNAME|LEADING_DIR +C "x/y" "x/y" 0 PATHNAME|LEADING_DIR +C "x/y/z" "x/y" 0 PATHNAME|LEADING_DIR +C "x" "x?y" NOMATCH PATHNAME|LEADING_DIR +C "x/y" "x?y" NOMATCH PATHNAME|LEADING_DIR +C "x/y/z" "x?y" NOMATCH PATHNAME|LEADING_DIR |