This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! When FNM_NOESCAPE is not set, [\\-a] is a range from backslash to a, while glibc was not handling this as a range. I've added 25 tests, without the fnmatch_loop.c patch 6 of them fail. I have not been able to reproduce any problems when backslash is in the end of range nor I saw any obvious problems in the code related to this. Markus, if you see problems with some other pattern, can you please provide testcase for it? 2004-09-01 Jakub Jelinek <jakub@redhat.com> [BZ #361] * posix/fnmatch_loop.c (FCT): For backslash between brackets, branch to normal_bracket after fetching the next character. * posix/tst-fnmatch.input: Add 25 new tests. Reported by Markus Oberhumer <markus@oberhumer.com>. --- libc/posix/fnmatch_loop.c.jj 2003-06-13 22:54:18.000000000 +0200 +++ libc/posix/fnmatch_loop.c 2004-09-01 22:44:18.309301655 +0200 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2003 +/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -242,8 +242,7 @@ FCT (pattern, string, string_end, no_lea c = FOLD ((UCHAR) *p); ++p; - if (c == fn) - goto matched; + goto normal_bracket; } else if (c == L('[') && *p == L(':')) { --- libc/posix/tst-fnmatch.input.jj 2001-10-27 04:37:27.000000000 +0200 +++ libc/posix/tst-fnmatch.input 2004-09-01 23:15:28.962236860 +0200 @@ -1,5 +1,5 @@ # Tests for fnmatch. -# Copyright (C) 2000, 2001 Free Software Foundation, Inc. +# Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributes by Ulrich Drepper <drepper@redhat.com>. # @@ -389,6 +389,31 @@ C "az" "[-a]z" 0 C "bz" "[-ab]z" 0 C "cz" "[-ab]z" NOMATCH C "-z" "[-ab]z" 0 +C "\\" "[\\\\-a]" 0 +C "_" "[\\\\-a]" 0 +C "a" "[\\\\-a]" 0 +C "-" "[\\\\-a]" NOMATCH +C "\\" "[\\]-a]" NOMATCH +C "_" "[\\]-a]" 0 +C "a" "[\\]-a]" 0 +C "]" "[\\]-a]" 0 +C "-" "[\\]-a]" NOMATCH +C "\\" "[!\\\\-a]" NOMATCH +C "_" "[!\\\\-a]" NOMATCH +C "a" "[!\\\\-a]" NOMATCH +C "-" "[!\\\\-a]" 0 +C "!" "[\\!-]" 0 +C "-" "[\\!-]" 0 +C "\\" "[\\!-]" NOMATCH +C "Z" "[Z-\\\\]" 0 +C "[" "[Z-\\\\]" 0 +C "\\" "[Z-\\\\]" 0 +C "-" "[Z-\\\\]" NOMATCH +C "Z" "[Z-\\]]" 0 +C "[" "[Z-\\]]" 0 +C "\\" "[Z-\\]]" 0 +C "]" "[Z-\\]]" 0 +C "-" "[Z-\\]]" NOMATCH # Following are tests outside the scope of IEEE 2003.2 since they are using # locales other than the C locale. The main focus of the tests is on the Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |