projects
/
debian
/
tar
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Import upstream version 1.27
[debian/tar]
/
gnu
/
fnmatch_loop.c
diff --git
a/gnu/fnmatch_loop.c
b/gnu/fnmatch_loop.c
index f083cc2cd119c02e41f087b3615e9ce1dd8abcf4..19955061ac78818f8c34e01b87eb9939267acf3b 100644
(file)
--- a/
gnu/fnmatch_loop.c
+++ b/
gnu/fnmatch_loop.c
@@
-1,6
+1,6
@@
/* -*- buffer-read-only: t -*- vi: set ro: */
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* -*- buffer-read-only: t -*- vi: set ro: */
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Copyright (C) 1991-1993, 1996-2006, 2009-201
1
Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993, 1996-2006, 2009-201
3
Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify
@@
-14,8
+14,7
@@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Match STRING against the file name pattern PATTERN, returning zero if
it matches, nonzero if not. */
/* Match STRING against the file name pattern PATTERN, returning zero if
it matches, nonzero if not. */
@@
-202,6
+201,8
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
case L_('['):
{
/* Nonzero if the sense of the character class is inverted. */
case L_('['):
{
/* Nonzero if the sense of the character class is inverted. */
+ const CHAR *p_init = p;
+ const CHAR *n_init = n;
register bool not;
CHAR cold;
UCHAR fn;
register bool not;
CHAR cold;
UCHAR fn;
@@
-216,7
+217,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
return FNM_NOMATCH;
if (*n == L_('/') && (flags & FNM_FILE_NAME))
return FNM_NOMATCH;
if (*n == L_('/') && (flags & FNM_FILE_NAME))
- /*
`
/' cannot be matched. */
+ /*
'
/' cannot be matched. */
return FNM_NOMATCH;
not = (*p == L_('!') || (posixly_correct < 0 && *p == L_('^')));
return FNM_NOMATCH;
not = (*p == L_('!') || (posixly_correct < 0 && *p == L_('^')));
@@
-382,7
+383,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
{
/* We found a table entry. Now see whether the
character we are currently at has the same
{
/* We found a table entry. Now see whether the
character we are currently at has the same
- equival
a
nce class value. */
+ equival
e
nce class value. */
int len = weights[idx & 0xffffff];
int32_t idx2;
const UCHAR *np = (const UCHAR *) n;
int len = weights[idx & 0xffffff];
int32_t idx2;
const UCHAR *np = (const UCHAR *) n;
@@
-412,8
+413,13
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
}
#endif
else if (c == L_('\0'))
}
#endif
else if (c == L_('\0'))
- /* [ (unterminated) loses. */
- return FNM_NOMATCH;
+ {
+ /* [ unterminated, treat as normal character. */
+ p = p_init;
+ n = n_init;
+ c = L_('[');
+ goto normal_match;
+ }
else
{
bool is_range = false;
else
{
bool is_range = false;
@@
-631,7
+637,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
UCHAR cend = *p++;
# ifdef WIDE_CHAR_VERSION
UCHAR cend = *p++;
# ifdef WIDE_CHAR_VERSION
- /* Search in the
`
names' array for the characters. */
+ /* Search in the
'
names' array for the characters. */
fcollseq = __collseq_table_lookup (collseq, fn);
if (fcollseq == ~((uint32_t) 0))
/* XXX We don't know anything about the character
fcollseq = __collseq_table_lookup (collseq, fn);
if (fcollseq == ~((uint32_t) 0))
/* XXX We don't know anything about the character
@@
-834,7
+840,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
#else
/* We use a boring value comparison of the character
values. This is better than comparing using
#else
/* We use a boring value comparison of the character
values. This is better than comparing using
-
`
strcoll' since the latter would have surprising
+
'
strcoll' since the latter would have surprising
and sometimes fatal consequences. */
UCHAR cend = *p++;
and sometimes fatal consequences. */
UCHAR cend = *p++;
@@
-1151,7
+1157,7
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
case L_('@'):
do
case L_('@'):
do
- /* I cannot believe it but
`
strcat' is actually acceptable
+ /* I cannot believe it but
'
strcat' is actually acceptable
here. Match the entire string with the prefix from the
pattern list and the rest of the pattern following the
pattern list. */
here. Match the entire string with the prefix from the
pattern list and the rest of the pattern following the
pattern list. */
@@
-1209,7
+1215,6
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
#undef END
#undef MEMPCPY
#undef MEMCHR
#undef END
#undef MEMPCPY
#undef MEMCHR
-#undef STRCOLL
#undef STRLEN
#undef STRCAT
#undef L_
#undef STRLEN
#undef STRCAT
#undef L_