removed unused glob.inc file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -109,7 +109,6 @@ cd ..
|
|||||||
|
|
||||||
cd common
|
cd common
|
||||||
md \wxmsw_dist\wxMSW\src\common
|
md \wxmsw_dist\wxMSW\src\common
|
||||||
copy glob.inc \wxmsw_dist\wxMSW\src\common
|
|
||||||
copy lexer.l \wxmsw_dist\wxMSW\src\common
|
copy lexer.l \wxmsw_dist\wxMSW\src\common
|
||||||
copy parser.y \wxmsw_dist\wxMSW\src\common
|
copy parser.y \wxmsw_dist\wxMSW\src\common
|
||||||
copy *.c \wxmsw_dist\wxMSW\src\common
|
copy *.c \wxmsw_dist\wxMSW\src\common
|
||||||
|
@@ -1,367 +0,0 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Name: glob.inc
|
|
||||||
// Purpose: File and other globbing (included by utils.cpp)
|
|
||||||
// Author: Karsten Ballueder
|
|
||||||
// Modified by:
|
|
||||||
// Created: 20/5/1998
|
|
||||||
// RCS-ID: $Id$
|
|
||||||
// Copyright: (c) Karsten Ballueder
|
|
||||||
// Licence: wxWindows licence
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// This file includes:
|
|
||||||
// wxIsWild(const char *pattern)
|
|
||||||
// wxMatchWild(const char *pattern, const char *str, bool dot_special)
|
|
||||||
//
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
#ifndef UNIX_GLOB
|
|
||||||
# ifdef wx_x
|
|
||||||
# define UNIX_GLOB 1
|
|
||||||
# else
|
|
||||||
# define UNIX_GLOB 0
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if UNIX_GLOB
|
|
||||||
# ifdef wx_msw
|
|
||||||
# error "Can't use Unix file globbing under Windows!"
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* wxIsWild checks whether the pattern contains wildcards, and
|
|
||||||
* returns TRUE if it does, and FALSE if it does not (or if the
|
|
||||||
* pattern is NULL -- i.e. no string).
|
|
||||||
*
|
|
||||||
* The argument is:
|
|
||||||
*
|
|
||||||
* 1) pattern - a character string
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
wxIsWild (const char *pattern)
|
|
||||||
{
|
|
||||||
while (*pattern)
|
|
||||||
{
|
|
||||||
switch (*pattern++)
|
|
||||||
{
|
|
||||||
case '?':
|
|
||||||
case '*':
|
|
||||||
#if UNIX_GLOB
|
|
||||||
case '[':
|
|
||||||
case '{': /* } */
|
|
||||||
#endif
|
|
||||||
return TRUE;
|
|
||||||
#if UNIX_GLOB
|
|
||||||
case '\\':
|
|
||||||
if (!*pattern++)
|
|
||||||
return FALSE;
|
|
||||||
#endif
|
|
||||||
} /* switch() */
|
|
||||||
} /* while() */
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if UNIX_GLOB
|
|
||||||
|
|
||||||
// Unix Glob()
|
|
||||||
//
|
|
||||||
// Pattern Function
|
|
||||||
// -----------------------------------------------------
|
|
||||||
// '*' = match 0 or more occurances of anything
|
|
||||||
// "[abc]" = match anyof "abc" (ranges supported)
|
|
||||||
// "{xx,yy,zz}" = match anyof "xx", "yy", or "zz"
|
|
||||||
// '?' = match any character
|
|
||||||
//
|
|
||||||
// '\' is used to "escape" special characters
|
|
||||||
// Recursive
|
|
||||||
|
|
||||||
bool
|
|
||||||
wxMatchWild (const char *pattern, const char *str, bool dot_special)
|
|
||||||
{
|
|
||||||
char c;
|
|
||||||
const char *cp;
|
|
||||||
bool done = FALSE, ret_code, ok;
|
|
||||||
// Below is for vi fans
|
|
||||||
const char OB = '{', CB = '}';
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (strcmp(pattern, "*.*") == 0)
|
|
||||||
pattern = "*"; // Hack for MS-DOS compat.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// dot_special means '.' only matches '.'
|
|
||||||
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))));
|
|
||||||
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++;
|
|
||||||
} // while()
|
|
||||||
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++);
|
|
||||||
} // while()
|
|
||||||
if (*pattern == '\0')
|
|
||||||
{
|
|
||||||
ok = FALSE;
|
|
||||||
done = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (ok)
|
|
||||||
{
|
|
||||||
str = cp;
|
|
||||||
while ((*pattern != CB) && (*pattern != '\0'))
|
|
||||||
{
|
|
||||||
if (*++pattern == '\\')
|
|
||||||
{
|
|
||||||
if (*++pattern == CB)
|
|
||||||
pattern++;
|
|
||||||
}
|
|
||||||
} // while()
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
while (*pattern != CB && *pattern != ',' && *pattern != '\0')
|
|
||||||
{
|
|
||||||
if (*++pattern == '\\')
|
|
||||||
{
|
|
||||||
if (*++pattern == CB || *pattern == ',')
|
|
||||||
pattern++;
|
|
||||||
}
|
|
||||||
} // while()
|
|
||||||
}
|
|
||||||
if (*pattern != '\0')
|
|
||||||
pattern++;
|
|
||||||
} // while()
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (*str == *pattern)
|
|
||||||
{
|
|
||||||
str++, pattern++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
done = TRUE;
|
|
||||||
}
|
|
||||||
} // switch()
|
|
||||||
} // while()
|
|
||||||
while (*pattern == '*')
|
|
||||||
pattern++;
|
|
||||||
return ((*str == '\0') && (*pattern == '\0'));
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* MS-DOS/Windows glob() */
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* wxMatchWild matches the given pattern string against
|
|
||||||
* a text string, and returns TRUE if it matches, FALSE otherwise.
|
|
||||||
*
|
|
||||||
* A match means that the entire text string is used up in the matching.
|
|
||||||
* The pattern can contain the following wildcards.
|
|
||||||
*
|
|
||||||
* * -- matches any sequence of characters
|
|
||||||
* ? -- matches one character
|
|
||||||
*
|
|
||||||
* If one or other or both of the string arguments to wxMatchWild function is
|
|
||||||
* NULL (i.e. there isn't a string), then the function returns FALSE.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static bool wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j);
|
|
||||||
|
|
||||||
// @@@@ dotSpecial is ignored by MS-DOS
|
|
||||||
bool
|
|
||||||
wxMatchWild (const char *pattern, const char *text, bool /* dotSpecial */ )
|
|
||||||
{
|
|
||||||
if (pattern == NULL || text == NULL || *pattern == '\0' || *text == '\0')
|
|
||||||
return FALSE;
|
|
||||||
return wxPatternMatch (pattern, text, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* wxPatternMatch does the work for wxMatchWild. wxPatternMatch matches
|
|
||||||
* the given pattern string against a text string, and returns TRUE if
|
|
||||||
* it matches, FALSE otherwise. It is assumed that the string arguments
|
|
||||||
* to wxPatternMatch exist.
|
|
||||||
*
|
|
||||||
* A match means that the entire text string is used up in the matching.
|
|
||||||
* The pattern can contain the following wildcards.
|
|
||||||
*
|
|
||||||
* * -- matches any sequence of characters
|
|
||||||
* ? -- matches one character
|
|
||||||
*
|
|
||||||
* wxPatternMatch works by going down the pattern trying to match the
|
|
||||||
* the same index character in the pattern and string arrays, and stops
|
|
||||||
* when the end of the pattern or text string is reached. However, if a
|
|
||||||
* '*' wildcard is met, the algorithm checks to see whether the remaining
|
|
||||||
* pattern (after the wildcard) matches the rest of the text (i.e. the
|
|
||||||
* wxPatternMatch function is called recursively).
|
|
||||||
*/
|
|
||||||
// Recursive
|
|
||||||
static bool
|
|
||||||
wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j)
|
|
||||||
{
|
|
||||||
size_t pattern_length = strlen (pattern);
|
|
||||||
size_t text_length = strlen (text);
|
|
||||||
bool match = FALSE;
|
|
||||||
|
|
||||||
#ifdef wx_msw
|
|
||||||
// MS-DOS file system is case INDEPENDENT
|
|
||||||
# define EQU(x,y) (wxToLower(x) == wxToLower(y))
|
|
||||||
#else
|
|
||||||
# define EQU(x,y) ((x) == (y))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while (j < pattern_length && i < text_length)
|
|
||||||
{
|
|
||||||
if (EQU(text[i], pattern[j]) || pattern[j] == '?')
|
|
||||||
{
|
|
||||||
match = TRUE;
|
|
||||||
i++, j++;
|
|
||||||
}
|
|
||||||
else if (pattern[j] == '*')
|
|
||||||
{
|
|
||||||
// If pattern ends in '*'
|
|
||||||
if (++j == pattern_length)
|
|
||||||
{
|
|
||||||
match = TRUE;
|
|
||||||
i = text_length;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
match = FALSE;
|
|
||||||
// after wildcard check to see whether rest of pattern matches
|
|
||||||
// up with rest of text
|
|
||||||
while (i < text_length && match != TRUE)
|
|
||||||
{
|
|
||||||
match = wxPatternMatch (pattern, text, i, j);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
// text index is decremented so that it points to where
|
|
||||||
// the text string starts to match the rest of the pattern
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (! EQU(text[i], pattern[j]))
|
|
||||||
{
|
|
||||||
j = pattern_length;
|
|
||||||
match = FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (j == pattern_length && i == text_length && match == TRUE)
|
|
||||||
{
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
// special case where pattern and text are the same except that pattern
|
|
||||||
// also only has '*' wildcards on the end
|
|
||||||
if (i == text_length && pattern[j] == '*' && match == TRUE)
|
|
||||||
{
|
|
||||||
for (; j < pattern_length; j++)
|
|
||||||
{
|
|
||||||
if (pattern[j] != '*')
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* UNIX_GLOB */
|
|
||||||
//-----------------------------------------------------------------------------
|
|
Reference in New Issue
Block a user