version 1.1.1.1, 2012/02/17 15:09:30
|
version 1.1.1.2, 2021/03/17 00:32:36
|
Line 53
|
Line 53
|
#define ISUPPER(c) (ISASCII(c) && isupper(c)) |
#define ISUPPER(c) (ISASCII(c) && isupper(c)) |
#define ISXDIGIT(c) (ISASCII(c) && isxdigit(c)) |
#define ISXDIGIT(c) (ISASCII(c) && isxdigit(c)) |
|
|
|
extern int ignore_case; |
|
|
#ifdef WILD_TEST_ITERATIONS |
#ifdef WILD_TEST_ITERATIONS |
int wildmatch_iteration_count; |
int wildmatch_iteration_count; |
#endif |
#endif |
Line 72 static int dowild(const uchar *p, const uchar *text, c
|
Line 74 static int dowild(const uchar *p, const uchar *text, c
|
for ( ; (p_ch = *p) != '\0'; text++, p++) { |
for ( ; (p_ch = *p) != '\0'; text++, p++) { |
int matched, special; |
int matched, special; |
uchar t_ch, prev_ch; |
uchar t_ch, prev_ch; |
|
if (ignore_case && ISUPPER(p_ch)) |
|
p_ch = tolower(p_ch); |
while ((t_ch = *text) == '\0') { |
while ((t_ch = *text) == '\0') { |
if (*a == NULL) { |
if (*a == NULL) { |
if (p_ch != '*') |
if (p_ch != '*') |
Line 237 static int dowild(const uchar *p, const uchar *text, c
|
Line 241 static int dowild(const uchar *p, const uchar *text, c
|
* of "text" and any strings in array "a". */ |
* of "text" and any strings in array "a". */ |
static int doliteral(const uchar *s, const uchar *text, const uchar*const *a) |
static int doliteral(const uchar *s, const uchar *text, const uchar*const *a) |
{ |
{ |
|
uchar s_ch, t_ch; |
for ( ; *s != '\0'; text++, s++) { |
for ( ; *s != '\0'; text++, s++) { |
while (*text == '\0') { |
while (*text == '\0') { |
if ((text = *a++) == NULL) |
if ((text = *a++) == NULL) |
return FALSE; |
return FALSE; |
} |
} |
if (*text != *s) | s_ch = *s; |
| t_ch = *text; |
| if (ignore_case) { |
| if (ISUPPER(s_ch)) |
| s_ch = tolower(s_ch); |
| if (ISUPPER(t_ch)) |
| t_ch = tolower(t_ch); |
| } |
| if (t_ch != s_ch) |
return FALSE; |
return FALSE; |
} |
} |
|
|
Line 288 static const uchar *trailing_N_elements(const uchar*co
|
Line 301 static const uchar *trailing_N_elements(const uchar*co
|
int wildmatch(const char *pattern, const char *text) |
int wildmatch(const char *pattern, const char *text) |
{ |
{ |
static const uchar *nomore[1]; /* A NULL pointer. */ |
static const uchar *nomore[1]; /* A NULL pointer. */ |
|
int ret; |
#ifdef WILD_TEST_ITERATIONS |
#ifdef WILD_TEST_ITERATIONS |
wildmatch_iteration_count = 0; |
wildmatch_iteration_count = 0; |
#endif |
#endif |
return dowild((const uchar*)pattern, (const uchar*)text, nomore) == TRUE; | force_lower_case = ignore_case; |
| ret = dowild((const uchar*)pattern, (const uchar*)text, nomore) == TRUE; |
| force_lower_case = 0; |
| return ret; |
} |
} |
|
|
/* Match the "pattern" against the forced-to-lower-case "text" string. */ |
/* Match the "pattern" against the forced-to-lower-case "text" string. */ |
Line 331 int wildmatch_array(const char *pattern, const char*co
|
Line 348 int wildmatch_array(const char *pattern, const char*co
|
if (!text) |
if (!text) |
return FALSE; |
return FALSE; |
|
|
|
force_lower_case = ignore_case; |
|
|
if ((matched = dowild(p, text, a)) != TRUE && where < 0 |
if ((matched = dowild(p, text, a)) != TRUE && where < 0 |
&& matched != ABORT_ALL) { |
&& matched != ABORT_ALL) { |
while (1) { |
while (1) { |
if (*text == '\0') { |
if (*text == '\0') { |
if ((text = (uchar*)*a++) == NULL) |
if ((text = (uchar*)*a++) == NULL) |
return FALSE; | break; |
continue; |
continue; |
} |
} |
if (*text++ == '/' && (matched = dowild(p, text, a)) != FALSE |
if (*text++ == '/' && (matched = dowild(p, text, a)) != FALSE |
Line 344 int wildmatch_array(const char *pattern, const char*co
|
Line 363 int wildmatch_array(const char *pattern, const char*co
|
break; |
break; |
} |
} |
} |
} |
|
|
|
force_lower_case = 0; |
|
|
return matched == TRUE; |
return matched == TRUE; |
} |
} |
|
|