Lines Matching refs:pat
306 Str_Match(const char *str, const char *pat)
311 const char *fixed_pat = pat;
315 pat = fixed_pat;
316 for (; *pat != '\0' && *pat != '*'; str++, pat++) {
320 if (*pat == '?') /* match any single character */
323 if (*pat == '[') { /* match a character from a list */
324 bool neg = pat[1] == '^';
325 pat += neg ? 2 : 1;
328 if (*pat == '\0')
330 if (*pat == ']' || *pat == '\0') {
335 if (*pat == *str)
337 if (pat[1] == '-' && pat[2] == '\0') {
342 if (pat[1] == '-') {
343 unsigned char e1 = (unsigned char)pat[0];
345 unsigned char e2 = (unsigned char)pat[2];
349 pat += 2;
351 pat++;
355 if (neg && *pat != ']' && *pat != '\0')
357 while (*pat != ']' && *pat != '\0')
358 pat++;
359 if (*pat == '\0')
360 pat--;
364 if (*pat == '\\') /* match the next character exactly */
365 pat++;
366 if (*pat != *str) {
368 while (*str != '\0' && *str != *pat)
377 if (*pat == '*') {
379 while (*pat == '*')
380 pat++;
381 if (*pat == '\0') {
386 fixed_pat = pat;