- if (wild == mask.end() && string != str.end())
- return false;
-
- while (string != str.end())
- {
- //printf("outer\n %c", *string);
- if (wild != mask.end() && *wild == '*')
- {
-
- //printf("inner %c\n", *wild);
- if (++wild == mask.end())
- return true;
-
- mp = wild;
- cp = string;
-
- if (cp != str.end())
- cp++;
-
- }
- else
- if ((string != str.end() && wild != mask.end()) && ((lowermap[(unsigned char)*wild] == lowermap[(unsigned char)*string]) || (*wild == '?')))
- {
- if (wild != mask.end())
- wild++;
-
- if (string != str.end())
- string++;
- }
- else
- {
- wild = mp;
- if (cp == str.end())
- string = str.end();
- else
- string = cp++;
- }