- if (dot_special && *str == '.' && *pattern != *str)
- return FALSE;
-
- while ((*pattern != '\0') && (!done)
- && (((*str=='\0')&&((*pattern==OB)||(*pattern=='*')))||(*str!='\0'))) {
- switch (*pattern) {
- case '\\':
- pattern++;
- if (*pattern != '\0')
- pattern++;
- break;
- case '*':
- pattern++;
- ret_code = FALSE;
- while ((*str!='\0')
- && (!(ret_code=wxMatchWild(pattern, str++, FALSE))))
- /*loop*/;
- if (ret_code) {
- while (*str != '\0')
- str++;
- while (*pattern != '\0')
- pattern++;
- }
- break;
- case '[':
- pattern++;
- repeat:
- if ((*pattern == '\0') || (*pattern == ']')) {
- done = TRUE;
- break;
- }
- if (*pattern == '\\') {
- pattern++;
- if (*pattern == '\0') {
- done = TRUE;
- break;
- }
- }
- if (*(pattern + 1) == '-') {
- c = *pattern;
- pattern += 2;
- if (*pattern == ']') {
- done = TRUE;
- break;
- }
- if (*pattern == '\\') {
- pattern++;
- if (*pattern == '\0') {
- done = TRUE;
- break;
- }
- }
- if ((*str < c) || (*str > *pattern)) {
- pattern++;
- goto repeat;
- }
- } else if (*pattern != *str) {
- pattern++;
- goto repeat;
- }
- pattern++;
- while ((*pattern != ']') && (*pattern != '\0')) {
- if ((*pattern == '\\') && (*(pattern + 1) != '\0'))
- pattern++;
- pattern++;
- }
- if (*pattern != '\0') {
- pattern++, str++;
- }
- break;
- case '?':
- pattern++;
- str++;
- break;
- case OB:
- pattern++;
- while ((*pattern != CB) && (*pattern != '\0')) {
- cp = str;
- ok = TRUE;
- while (ok && (*cp != '\0') && (*pattern != '\0')
- && (*pattern != ',') && (*pattern != CB)) {
- if (*pattern == '\\')
- pattern++;
- ok = (*pattern++ == *cp++);
- }
- if (*pattern == '\0') {
- ok = FALSE;
- done = TRUE;
- break;
- } else if (ok) {
- str = cp;
- while ((*pattern != CB) && (*pattern != '\0')) {
- if (*++pattern == '\\') {
- if (*++pattern == CB)
- pattern++;
- }
- }
- } else {
- while (*pattern!=CB && *pattern!=',' && *pattern!='\0') {
- if (*++pattern == '\\') {
- if (*++pattern == CB || *pattern == ',')
- pattern++;
- }
- }
- }
- if (*pattern != '\0')
- pattern++;
- }
- break;
- default:
- if (*str == *pattern) {
- str++, pattern++;
- } else {
- done = TRUE;
- }
- }
+ if (dot_special && *str == wxT('.') && *pattern != *str)
+ return FALSE;
+
+ while ((*pattern != wxT('\0')) && (!done)
+ && (((*str==wxT('\0'))&&((*pattern==OB)||(*pattern==wxT('*'))))||(*str!=wxT('\0')))) {
+ switch (*pattern) {
+ case wxT('\\'):
+ pattern++;
+ if (*pattern != wxT('\0'))
+ pattern++;
+ break;
+ case wxT('*'):
+ pattern++;
+ ret_code = FALSE;
+ while ((*str!=wxT('\0'))
+ && ((ret_code=wxMatchWild(pattern, str++, FALSE)) == 0))
+ /*loop*/;
+ if (ret_code) {
+ while (*str != wxT('\0'))
+ str++;
+ while (*pattern != wxT('\0'))
+ pattern++;
+ }
+ break;
+ case wxT('['):
+ pattern++;
+ repeat:
+ if ((*pattern == wxT('\0')) || (*pattern == wxT(']'))) {
+ done = TRUE;
+ break;
+ }
+ if (*pattern == wxT('\\')) {
+ pattern++;
+ if (*pattern == wxT('\0')) {
+ done = TRUE;
+ break;
+ }
+ }
+ if (*(pattern + 1) == wxT('-')) {
+ c = *pattern;
+ pattern += 2;
+ if (*pattern == wxT(']')) {
+ done = TRUE;
+ break;
+ }
+ if (*pattern == wxT('\\')) {
+ pattern++;
+ if (*pattern == wxT('\0')) {
+ done = TRUE;
+ break;
+ }
+ }
+ if ((*str < c) || (*str > *pattern)) {
+ pattern++;
+ goto repeat;
+ }
+ } else if (*pattern != *str) {
+ pattern++;
+ goto repeat;
+ }
+ pattern++;
+ while ((*pattern != wxT(']')) && (*pattern != wxT('\0'))) {
+ if ((*pattern == wxT('\\')) && (*(pattern + 1) != wxT('\0')))
+ pattern++;
+ pattern++;
+ }
+ if (*pattern != wxT('\0')) {
+ pattern++, str++;
+ }
+ break;
+ case wxT('?'):
+ pattern++;
+ str++;
+ break;
+ case OB:
+ pattern++;
+ while ((*pattern != CB) && (*pattern != wxT('\0'))) {
+ cp = str;
+ ok = TRUE;
+ while (ok && (*cp != wxT('\0')) && (*pattern != wxT('\0'))
+ && (*pattern != wxT(',')) && (*pattern != CB)) {
+ if (*pattern == wxT('\\'))
+ pattern++;
+ ok = (*pattern++ == *cp++);
+ }
+ if (*pattern == wxT('\0')) {
+ ok = FALSE;
+ done = TRUE;
+ break;
+ } else if (ok) {
+ str = cp;
+ while ((*pattern != CB) && (*pattern != wxT('\0'))) {
+ if (*++pattern == wxT('\\')) {
+ if (*++pattern == CB)
+ pattern++;
+ }
+ }
+ } else {
+ while (*pattern!=CB && *pattern!=wxT(',') && *pattern!=wxT('\0')) {
+ if (*++pattern == wxT('\\')) {
+ if (*++pattern == CB || *pattern == wxT(','))
+ pattern++;
+ }
+ }
+ }
+ if (*pattern != wxT('\0'))
+ pattern++;
+ }
+ break;
+ default:
+ if (*str == *pattern) {
+ str++, pattern++;
+ } else {
+ done = TRUE;
+ }
+ }