projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix autoreconf invocation.
[gnulib.git]
/
lib
/
fnmatch_loop.c
diff --git
a/lib/fnmatch_loop.c
b/lib/fnmatch_loop.c
index
1a1e9cf
..
35d5980
100644
(file)
--- a/
lib/fnmatch_loop.c
+++ b/
lib/fnmatch_loop.c
@@
-1,5
+1,5
@@
-/* Copyright (C) 1991,
1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001,
-
2002, 2003
Free Software Foundation, Inc.
+/* Copyright (C) 1991,
1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005
+
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-13,19
+13,19
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
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., 5
9 Temple Place - Suite 330, Boston, MA 02111-1307
, USA. */
+ Inc., 5
1 Franklin Street, Fifth Floor, Boston, MA 02110-1301
, USA. */
-/* Match STRING against the filename pattern PATTERN, returning zero if
+/* Match STRING against the file
name pattern PATTERN, returning zero if
it matches, nonzero if not. */
static int EXT (INT opt, const CHAR *pattern, const CHAR *string,
it matches, nonzero if not. */
static int EXT (INT opt, const CHAR *pattern, const CHAR *string,
- const CHAR *string_end,
int
no_leading_period, int flags)
+ const CHAR *string_end,
bool
no_leading_period, int flags)
internal_function;
static const CHAR *END (const CHAR *patternp) internal_function;
static int
internal_function
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
internal_function;
static const CHAR *END (const CHAR *patternp) internal_function;
static int
internal_function
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
-
int
no_leading_period, int flags)
+
bool
no_leading_period, int flags)
{
register const CHAR *p = pattern, *n = string;
register UCHAR c;
{
register const CHAR *p = pattern, *n = string;
register UCHAR c;
@@
-41,7
+41,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
while ((c = *p++) != L('\0'))
{
while ((c = *p++) != L('\0'))
{
-
int new_no_leading_period = 0
;
+
bool new_no_leading_period = false
;
c = FOLD (c);
switch (c)
c = FOLD (c);
switch (c)
@@
-161,9
+161,9
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
{
int flags2 = ((flags & FNM_FILE_NAME)
? flags : (flags & ~FNM_PERIOD));
{
int flags2 = ((flags & FNM_FILE_NAME)
? flags : (flags & ~FNM_PERIOD));
-
int
no_leading_period2 = no_leading_period;
+
bool
no_leading_period2 = no_leading_period;
- for (--p; n < endp; ++n, no_leading_period2 =
0
)
+ for (--p; n < endp; ++n, no_leading_period2 =
false
)
if (FCT (p, n, string_end, no_leading_period2, flags2)
== 0)
return 0;
if (FCT (p, n, string_end, no_leading_period2, flags2)
== 0)
return 0;
@@
-186,7
+186,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
if (c == L('\\') && !(flags & FNM_NOESCAPE))
c = *p;
c = FOLD (c);
if (c == L('\\') && !(flags & FNM_NOESCAPE))
c = *p;
c = FOLD (c);
- for (--p; n < endp; ++n, no_leading_period2 =
0
)
+ for (--p; n < endp; ++n, no_leading_period2 =
false
)
if (FOLD ((UCHAR) *n) == c
&& (FCT (p, n, string_end, no_leading_period2, flags2)
== 0))
if (FOLD ((UCHAR) *n) == c
&& (FCT (p, n, string_end, no_leading_period2, flags2)
== 0))
@@
-200,7
+200,7
@@
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. */
- register
int
not;
+ register
bool
not;
CHAR cold;
UCHAR fn;
CHAR cold;
UCHAR fn;
@@
-410,10
+410,10
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
return FNM_NOMATCH;
else
{
return FNM_NOMATCH;
else
{
-
int is_range = 0
;
+
bool is_range = false
;
#ifdef _LIBC
#ifdef _LIBC
-
int is_seqval = 0
;
+
bool is_seqval = false
;
if (c == L('[') && *p == L('.'))
{
if (c == L('[') && *p == L('.'))
{
@@
-460,7
+460,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
const int32_t *symb_table;
# ifdef WIDE_CHAR_VERSION
char str[c1];
const int32_t *symb_table;
# ifdef WIDE_CHAR_VERSION
char str[c1];
-
unsigned in
t strcnt;
+
size_
t strcnt;
# else
# define str (startp + 1)
# endif
# else
# define str (startp + 1)
# endif
@@
-531,11
+531,13
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
if (! is_range)
{
# ifdef WIDE_CHAR_VERSION
if (! is_range)
{
# ifdef WIDE_CHAR_VERSION
- for (c1 = 0; c1 < wextra[idx]; ++c1)
+ for (c1 = 0;
+ (int32_t) c1 < wextra[idx];
+ ++c1)
if (n[c1] != wextra[1 + c1])
break;
if (n[c1] != wextra[1 + c1])
break;
- if (c1 == wextra[idx])
+ if (
(int32_t)
c1 == wextra[idx])
goto matched;
# else
for (c1 = 0; c1 < extra[idx]; ++c1)
goto matched;
# else
for (c1 = 0; c1 < extra[idx]; ++c1)
@@
-548,7
+550,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
}
/* Get the collation sequence value. */
}
/* Get the collation sequence value. */
- is_seqval =
1
;
+ is_seqval =
true
;
# ifdef WIDE_CHAR_VERSION
cold = wextra[1 + wextra[idx]];
# else
# ifdef WIDE_CHAR_VERSION
cold = wextra[1 + wextra[idx]];
# else
@@
-611,7
+613,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
# ifdef WIDE_CHAR_VERSION
/* Search in the `names' array for the characters. */
# ifdef WIDE_CHAR_VERSION
/* Search in the `names' array for the characters. */
- fcollseq = collseq_table_lookup (collseq, fn);
+ fcollseq =
__
collseq_table_lookup (collseq, fn);
if (fcollseq == ~((uint32_t) 0))
/* XXX We don't know anything about the character
we are supposed to match. This means we are
if (fcollseq == ~((uint32_t) 0))
/* XXX We don't know anything about the character
we are supposed to match. This means we are
@@
-621,13
+623,13
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
if (is_seqval)
lcollseq = cold;
else
if (is_seqval)
lcollseq = cold;
else
- lcollseq = collseq_table_lookup (collseq, cold);
+ lcollseq =
__
collseq_table_lookup (collseq, cold);
# else
fcollseq = collseq[fn];
lcollseq = is_seqval ? cold : collseq[(UCHAR) cold];
# endif
# else
fcollseq = collseq[fn];
lcollseq = is_seqval ? cold : collseq[(UCHAR) cold];
# endif
- is_seqval =
0
;
+ is_seqval =
false
;
if (cend == L('[') && *p == L('.'))
{
uint32_t nrules =
if (cend == L('[') && *p == L('.'))
{
uint32_t nrules =
@@
-666,7
+668,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
const int32_t *symb_table;
# ifdef WIDE_CHAR_VERSION
char str[c1];
const int32_t *symb_table;
# ifdef WIDE_CHAR_VERSION
char str[c1];
-
unsigned in
t strcnt;
+
size_
t strcnt;
# else
# define str (startp + 1)
# endif
# else
# define str (startp + 1)
# endif
@@
-736,7
+738,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
wextra = (int32_t *) &extra[idx + 4];
# endif
/* Get the collation sequence value. */
wextra = (int32_t *) &extra[idx + 4];
# endif
/* Get the collation sequence value. */
- is_seqval =
1
;
+ is_seqval =
true
;
# ifdef WIDE_CHAR_VERSION
cend = wextra[1 + wextra[idx]];
# else
# ifdef WIDE_CHAR_VERSION
cend = wextra[1 + wextra[idx]];
# else
@@
-783,7
+785,7
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
{
# ifdef WIDE_CHAR_VERSION
hcollseq =
{
# ifdef WIDE_CHAR_VERSION
hcollseq =
- collseq_table_lookup (collseq, cend);
+
__
collseq_table_lookup (collseq, cend);
if (hcollseq == ~((uint32_t) 0))
{
/* Hum, no information about the upper
if (hcollseq == ~((uint32_t) 0))
{
/* Hum, no information about the upper
@@
-924,10
+926,10
@@
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
case L('/'):
if (NO_LEADING_PERIOD (flags))
{
case L('/'):
if (NO_LEADING_PERIOD (flags))
{
- if (n == string_end || c != *n)
+ if (n == string_end || c !=
(UCHAR)
*n)
return FNM_NOMATCH;
return FNM_NOMATCH;
- new_no_leading_period =
1
;
+ new_no_leading_period =
true
;
break;
}
/* FALLTHROUGH */
break;
}
/* FALLTHROUGH */
@@
-994,10
+996,10
@@
END (const CHAR *pattern)
static int
internal_function
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
static int
internal_function
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
-
int
no_leading_period, int flags)
+
bool
no_leading_period, int flags)
{
const CHAR *startp;
{
const CHAR *startp;
-
in
t level;
+
size_
t level;
struct patternlist
{
struct patternlist *next;
struct patternlist
{
struct patternlist *next;
@@
-1007,10
+1009,11
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
size_t pattern_len = STRLEN (pattern);
const CHAR *p;
const CHAR *rs;
size_t pattern_len = STRLEN (pattern);
const CHAR *p;
const CHAR *rs;
+ enum { ALLOCA_LIMIT = 8000 };
/* Parse the pattern. Store the individual parts in the list. */
level = 0;
/* Parse the pattern. Store the individual parts in the list. */
level = 0;
- for (startp = p = pattern + 1;
level >= 0
; ++p)
+ for (startp = p = pattern + 1; ; ++p)
if (*p == L('\0'))
/* This is an invalid pattern. */
return -1;
if (*p == L('\0'))
/* This is an invalid pattern. */
return -1;
@@
-1042,7
+1045,6
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
if (level-- == 0)
{
/* This means we found the end of the pattern. */
if (level-- == 0)
{
/* This means we found the end of the pattern. */
-#define ALLOCA_LIMIT 8000
#define NEW_PATTERN \
struct patternlist *newp; \
size_t plen; \
#define NEW_PATTERN \
struct patternlist *newp; \
size_t plen; \
@@
-1064,6
+1066,7
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
*lastp = newp; \
lastp = &newp->next
NEW_PATTERN;
*lastp = newp; \
lastp = &newp->next
NEW_PATTERN;
+ break;
}
}
else if (*p == L('|'))
}
}
else if (*p == L('|'))
@@
-1098,7
+1101,7
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
&& (FCT (p, rs, string_end,
rs == string
? no_leading_period
&& (FCT (p, rs, string_end,
rs == string
? no_leading_period
- : rs[-1] == '/' && NO_LEADING_PERIOD (flags)
? 1 : 0
,
+ : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
flags & FNM_FILE_NAME
? flags : flags & ~FNM_PERIOD) == 0
/* This didn't work. Try the whole pattern. */
flags & FNM_FILE_NAME
? flags : flags & ~FNM_PERIOD) == 0
/* This didn't work. Try the whole pattern. */
@@
-1106,8
+1109,7
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
&& FCT (pattern - 1, rs, string_end,
rs == string
? no_leading_period
&& FCT (pattern - 1, rs, string_end,
rs == string
? no_leading_period
- : (rs[-1] == '/' && NO_LEADING_PERIOD (flags)
- ? 1 : 0),
+ : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
flags & FNM_FILE_NAME
? flags : flags & ~FNM_PERIOD) == 0)))
/* It worked. Signal success. */
flags & FNM_FILE_NAME
? flags : flags & ~FNM_PERIOD) == 0)))
/* It worked. Signal success. */
@@
-1154,7
+1156,7
@@
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
&& (FCT (p, rs, string_end,
rs == string
? no_leading_period
&& (FCT (p, rs, string_end,
rs == string
? no_leading_period
- : rs[-1] == '/' && NO_LEADING_PERIOD (flags)
? 1 : 0
,
+ : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD)
== 0))
/* This is successful. */
flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD)
== 0))
/* This is successful. */