rendered paste body//Wildcard String matching, wrote by Aikar@windower.netbool strmatchwc(const char* pattern, const char* string, bool Escape = false){ static int i = 0; if(!pattern || !string) return false; if(!*pattern || !*string) { if(!*pattern && !*string) { return true; }else{ return false; } } while(*pattern) { if(!*string) { if(*pattern == '*' && strlen(pattern) == 1) { return true; }else{ return false; } } switch(*pattern) { case '?': { if(!Escape) { string++; pattern++; break; } } case '\\': { if(!Escape) { Escape = true; pattern++; break; } } case '*': { if(!Escape) { if(!*(pattern + 1)) { return true; }else{ bool bEscape = false; if(*(pattern + 1) == '\\') { pattern++; bEscape = true; } while(true) { if(*(pattern+1) != '?') string = strchr(string,*(pattern + 1)); if(!string || !*string) return false; if(strmatchwc(pattern+1,string++,bEscape)) return true; } } break; } } case '[': { if(!Escape) { if(strlen(pattern) >= 4) { if(*(pattern + 3) == ']' && *(pattern + 1) == '?') { unsigned char v = (*(pattern + 2) - '0'); if(v > strlen(string)) return true; string += v; pattern += 4; break; } if(strlen(pattern) >= 5) { if(*(pattern + 4) == ']' && *(pattern + 2) == '-') { if(*string < *(pattern + 1) || *string > *(pattern + 3)) { return false; }else{ pattern += 5; string++; } break; } } } } } default: { Escape = false; if(!*pattern || !*string) { if(!*pattern && !*string) { return true; }else{ return false; } } if(*pattern == *string) { pattern++; string++; }else{ return false; } } } } if(!*pattern && !*string) { return true; }else{ return false; }}