| 537 | } |
| 538 | |
| 539 | bool WildcardMatch(const char* psz, const char* mask) { |
| 540 | while (true) { |
| 541 | switch (*mask) { |
| 542 | case '\0': |
| 543 | return (*psz == '\0'); |
| 544 | case '*': |
| 545 | return WildcardMatch(psz, mask + 1) || (*psz && WildcardMatch(psz + 1, mask)); |
| 546 | case '?': |
| 547 | if (*psz == '\0') return false; |
| 548 | break; |
| 549 | default: |
| 550 | if (*psz != *mask) return false; |
| 551 | break; |
| 552 | } |
| 553 | psz++; |
| 554 | mask++; |
| 555 | } |
| 556 | return false; |
| 557 | } |
| 558 | |
| 559 | bool WildcardMatch(const string& str, const string& mask) { |
| 560 | return WildcardMatch(str.c_str(), mask.c_str()); |
no outgoing calls