wildmatch: replace variable 'special' with better named ones
'special' is too generic and is used for two different purposes. Replace it with 'match_slash' to indicate "**" pattern and 'negated' for "[!...]" and "[^...]". Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
889316d252
commit
b6a3d3353f
18
wildmatch.c
18
wildmatch.c
@ -61,7 +61,7 @@ static int dowild(const uchar *p, const uchar *text, int force_lower_case)
|
|||||||
const uchar *pattern = p;
|
const uchar *pattern = p;
|
||||||
|
|
||||||
for ( ; (p_ch = *p) != '\0'; text++, p++) {
|
for ( ; (p_ch = *p) != '\0'; text++, p++) {
|
||||||
int matched, special;
|
int matched, match_slash, negated;
|
||||||
uchar t_ch, prev_ch;
|
uchar t_ch, prev_ch;
|
||||||
if ((t_ch = *text) == '\0' && p_ch != '*')
|
if ((t_ch = *text) == '\0' && p_ch != '*')
|
||||||
return ABORT_ALL;
|
return ABORT_ALL;
|
||||||
@ -103,15 +103,15 @@ static int dowild(const uchar *p, const uchar *text, int force_lower_case)
|
|||||||
if (p[0] == '/' &&
|
if (p[0] == '/' &&
|
||||||
dowild(p + 1, text, force_lower_case) == MATCH)
|
dowild(p + 1, text, force_lower_case) == MATCH)
|
||||||
return MATCH;
|
return MATCH;
|
||||||
special = TRUE;
|
match_slash = TRUE;
|
||||||
} else
|
} else
|
||||||
return ABORT_MALFORMED;
|
return ABORT_MALFORMED;
|
||||||
} else
|
} else
|
||||||
special = FALSE;
|
match_slash = FALSE;
|
||||||
if (*p == '\0') {
|
if (*p == '\0') {
|
||||||
/* Trailing "**" matches everything. Trailing "*" matches
|
/* Trailing "**" matches everything. Trailing "*" matches
|
||||||
* only if there are no more slash characters. */
|
* only if there are no more slash characters. */
|
||||||
if (!special) {
|
if (!match_slash) {
|
||||||
if (strchr((char*)text, '/') != NULL)
|
if (strchr((char*)text, '/') != NULL)
|
||||||
return NOMATCH;
|
return NOMATCH;
|
||||||
}
|
}
|
||||||
@ -121,9 +121,9 @@ static int dowild(const uchar *p, const uchar *text, int force_lower_case)
|
|||||||
if (t_ch == '\0')
|
if (t_ch == '\0')
|
||||||
break;
|
break;
|
||||||
if ((matched = dowild(p, text, force_lower_case)) != NOMATCH) {
|
if ((matched = dowild(p, text, force_lower_case)) != NOMATCH) {
|
||||||
if (!special || matched != ABORT_TO_STARSTAR)
|
if (!match_slash || matched != ABORT_TO_STARSTAR)
|
||||||
return matched;
|
return matched;
|
||||||
} else if (!special && t_ch == '/')
|
} else if (!match_slash && t_ch == '/')
|
||||||
return ABORT_TO_STARSTAR;
|
return ABORT_TO_STARSTAR;
|
||||||
t_ch = *++text;
|
t_ch = *++text;
|
||||||
}
|
}
|
||||||
@ -135,8 +135,8 @@ static int dowild(const uchar *p, const uchar *text, int force_lower_case)
|
|||||||
p_ch = NEGATE_CLASS;
|
p_ch = NEGATE_CLASS;
|
||||||
#endif
|
#endif
|
||||||
/* Assign literal TRUE/FALSE because of "matched" comparison. */
|
/* Assign literal TRUE/FALSE because of "matched" comparison. */
|
||||||
special = p_ch == NEGATE_CLASS? TRUE : FALSE;
|
negated = p_ch == NEGATE_CLASS? TRUE : FALSE;
|
||||||
if (special) {
|
if (negated) {
|
||||||
/* Inverted character class. */
|
/* Inverted character class. */
|
||||||
p_ch = *++p;
|
p_ch = *++p;
|
||||||
}
|
}
|
||||||
@ -218,7 +218,7 @@ static int dowild(const uchar *p, const uchar *text, int force_lower_case)
|
|||||||
} else if (t_ch == p_ch)
|
} else if (t_ch == p_ch)
|
||||||
matched = TRUE;
|
matched = TRUE;
|
||||||
} while (prev_ch = p_ch, (p_ch = *++p) != ']');
|
} while (prev_ch = p_ch, (p_ch = *++p) != ']');
|
||||||
if (matched == special || t_ch == '/')
|
if (matched == negated || t_ch == '/')
|
||||||
return NOMATCH;
|
return NOMATCH;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user