dir.c: Avoid c99 array initialization
The following syntax: char foo[] = { [0] = 1, [7] = 2, [15] = 3 }; is a c99 construct which some compilers do not support even though they support other c99 constructs. This construct can be avoided by folding these 'special' test cases into the sane_ctype array and making use of the related infrastructure. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
1b0f7978dd
commit
63e8aea74e
14
dir.c
14
dir.c
@ -52,11 +52,6 @@ int common_prefix(const char **pathspec)
|
||||
return prefix;
|
||||
}
|
||||
|
||||
static inline int special_char(unsigned char c1)
|
||||
{
|
||||
return !c1 || c1 == '*' || c1 == '[' || c1 == '?' || c1 == '\\';
|
||||
}
|
||||
|
||||
/*
|
||||
* Does 'match' matches the given name?
|
||||
* A match is found if
|
||||
@ -80,7 +75,7 @@ static int match_one(const char *match, const char *name, int namelen)
|
||||
for (;;) {
|
||||
unsigned char c1 = *match;
|
||||
unsigned char c2 = *name;
|
||||
if (special_char(c1))
|
||||
if (isspecial(c1))
|
||||
break;
|
||||
if (c1 != c2)
|
||||
return 0;
|
||||
@ -680,17 +675,12 @@ static int cmp_name(const void *p1, const void *p2)
|
||||
*/
|
||||
static int simple_length(const char *match)
|
||||
{
|
||||
const char special[256] = {
|
||||
[0] = 1, ['?'] = 1,
|
||||
['\\'] = 1, ['*'] = 1,
|
||||
['['] = 1
|
||||
};
|
||||
int len = -1;
|
||||
|
||||
for (;;) {
|
||||
unsigned char c = *match++;
|
||||
len++;
|
||||
if (special[c])
|
||||
if (isspecial(c))
|
||||
return len;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user