* posix/glob.c (glob): Recognize patterns starting \/.
	* posix/tst-gnuglob.c (find_file): Handle absolute path names.
	(main): Add test for pattern starting \/.
This commit is contained in:
Ulrich Drepper 2007-10-07 18:54:52 +00:00
parent a1a363d20c
commit c8d48faef0
3 changed files with 25 additions and 3 deletions

View File

@ -1,5 +1,10 @@
2007-10-07 Ulrich Drepper <drepper@redhat.com>
[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.

View File

@ -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;

View File

@ -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 <drepper@redhat.com>, 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;