Skip to content

Commit

Permalink
[BZ #5103]
Browse files Browse the repository at this point in the history
	* posix/glob.c (glob): Recognize patterns starting \/.
	* posix/tst-gnuglob.c (find_file): Handle absolute path names.
	(main): Add test for pattern starting \/.
  • Loading branch information
Ulrich Drepper committed Oct 7, 2007
1 parent a1a363d commit c8d48fa
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
5 changes: 3 additions & 2 deletions posix/glob.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
18 changes: 17 additions & 1 deletion posix/tst-gnuglob.c
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -439,6 +449,12 @@ main (void)
"dir2lev1/dir1lev2/.dir",
"dir2lev1/dir1lev2/.foo");

test ("\\/*", GLOB_ALTDIRFUNC,
"/dir1lev1",
"/dir2lev1",
"/file1lev1",
"/file2lev1");

globfree (&gl);

return result;
Expand Down

0 comments on commit c8d48fa

Please sign in to comment.