+#ifdef __WIN32__
+static bool
+match_wildcard_case_sensitive(const tchar *string, size_t string_len,
+ const tchar *wildcard, size_t wildcard_len)
+{
+ for (;;) {
+ if (string_len == 0) {
+ while (wildcard_len != 0 && *wildcard == T('*')) {
+ wildcard++;
+ wildcard_len--;
+ }
+ return (wildcard_len == 0);
+ } else if (wildcard_len == 0) {
+ return false;
+ } else if (*string == *wildcard || *wildcard == '?') {
+ string++;
+ string_len--;
+ wildcard_len--;
+ wildcard++;
+ continue;
+ } else if (*wildcard == '*') {
+ return match_wildcard_case_sensitive(
+ string, string_len,
+ wildcard + 1, wildcard_len - 1) ||
+ match_wildcard_case_sensitive(
+ string + 1, string_len - 1,
+ wildcard, wildcard_len);
+ } else {
+ return false;
+ }
+ }
+}
+#endif
+