#include #include #include bool GlobMatches(char *rule, char *string) { char c1, c2; if (!rule || !string) { return false; } while ((c1 = *rule)) { char next = *(rule + 1); c2 = *string; switch (c1) { case '*': while ((c2 = *string) && (c2 != next)) { string++; } if (next && !c2) { return false; } break; case '?': if (!c2) { return false; } string++; break; default: if (c1 != c2) { return false; } string++; break; } rule++; } return !*string; }