|
|
| 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; |
| } | } |