From: Ulrich Drepper Date: Sun, 7 Oct 2007 18:54:52 +0000 (+0000) Subject: [BZ #5103] X-Git-Tag: upstream/2.30~14605 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c8d48faef08fe72320394ebc5dc3d12059392b90;p=external%2Fglibc.git [BZ #5103] * posix/glob.c (glob): Recognize patterns starting \/. * posix/tst-gnuglob.c (find_file): Handle absolute path names. (main): Add test for pattern starting \/. --- diff --git a/ChangeLog b/ChangeLog index 60cdd2e..2813e59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2007-10-07 Ulrich Drepper + [BZ #5103] + * posix/glob.c (glob): Recognize patterns starting \/. + * posix/tst-gnuglob.c (find_file): Handle absolute path names. + (main): Add test for pattern starting \/. + * misc/error.h: Use __const instead of const. * misc/bits/error.h: Likewise. diff --git a/posix/glob.c b/posix/glob.c index 6d8a891..6ae09ef 100644 --- a/posix/glob.c +++ b/posix/glob.c @@ -454,9 +454,10 @@ glob (pattern, flags, errfunc, pglob) dirlen = 0; } } - else if (filename == pattern) + else if (filename == pattern + || (filename == pattern + 1 && pattern[0] == '\\')) { - /* "/pattern". */ + /* "/pattern" or "\\/pattern". */ dirname = "/"; dirlen = 1; ++filename; diff --git a/posix/tst-gnuglob.c b/posix/tst-gnuglob.c index 72f3fa4..95bfbae 100644 --- a/posix/tst-gnuglob.c +++ b/posix/tst-gnuglob.c @@ -1,6 +1,6 @@ /* Test the GNU extensions in glob which allow the user to provide callbacks for the filesystem access functions. - Copyright (C) 2001-2002 Free Software Foundation, Inc. + Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -103,6 +103,16 @@ find_file (const char *s) int level = 1; long int idx = 0; + while (s[0] == '/') + { + if (s[1] == '\0') + { + s = "."; + break; + } + ++s; + } + if (strcmp (s, ".") == 0) return 0; @@ -439,6 +449,12 @@ main (void) "dir2lev1/dir1lev2/.dir", "dir2lev1/dir1lev2/.foo"); + test ("\\/*", GLOB_ALTDIRFUNC, + "/dir1lev1", + "/dir2lev1", + "/file1lev1", + "/file2lev1"); + globfree (&gl); return result;