aboutsummaryrefslogtreecommitdiff
path: root/posix
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-10-21 07:30:28 +0000
committerUlrich Drepper <drepper@redhat.com>2000-10-21 07:30:28 +0000
commita4607c1f07fac984c22325e84caa525fa177edc9 (patch)
tree3dfafdd516700f16723722a01612a3c74c96b015 /posix
parentd785c366924df522974f4ee88d77fd8aaed58803 (diff)
downloadglibc-a4607c1f07fac984c22325e84caa525fa177edc9.zip
glibc-a4607c1f07fac984c22325e84caa525fa177edc9.tar.gz
glibc-a4607c1f07fac984c22325e84caa525fa177edc9.tar.bz2
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.c15
-rw-r--r--posix/tst-fnmatch.input23
2 files changed, 27 insertions, 11 deletions
diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c
index 6b20aa4..4c619ed 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 7c79ddc..3e0fb95 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