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