mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-16 01:38:27 +00:00
Added SDL_wcscasecmp() and SDL_wcsncasecmp()
This commit is contained in:
parent
e4b7d9a221
commit
46a844786b
8 changed files with 93 additions and 2 deletions
|
@ -531,6 +531,85 @@ SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen)
|
|||
#endif /* HAVE_WCSNCMP */
|
||||
}
|
||||
|
||||
int
|
||||
SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2)
|
||||
{
|
||||
#if defined(HAVE_WCSCASECMP)
|
||||
return wcscasecmp(str1, str2);
|
||||
#elif defined(HAVE__WCSICMP)
|
||||
return _wcsicmp(str1, str2);
|
||||
#else
|
||||
wchar_t a = 0;
|
||||
wchar_t b = 0;
|
||||
while (*str1 && *str2) {
|
||||
/* FIXME: This doesn't actually support wide characters */
|
||||
if (*str1 >= 0x80 || *str2 >= 0x80) {
|
||||
a = *str1;
|
||||
b = *str2;
|
||||
} else {
|
||||
a = SDL_toupper((unsigned char) *str1);
|
||||
b = SDL_toupper((unsigned char) *str2);
|
||||
}
|
||||
if (a != b)
|
||||
break;
|
||||
++str1;
|
||||
++str2;
|
||||
}
|
||||
|
||||
/* FIXME: This doesn't actually support wide characters */
|
||||
if (*str1 >= 0x80 || *str2 >= 0x80) {
|
||||
a = *str1;
|
||||
b = *str2;
|
||||
} else {
|
||||
a = SDL_toupper((unsigned char) *str1);
|
||||
b = SDL_toupper((unsigned char) *str2);
|
||||
}
|
||||
return (int) ((unsigned int) a - (unsigned int) b);
|
||||
#endif /* HAVE__WCSICMP */
|
||||
}
|
||||
|
||||
int
|
||||
SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen)
|
||||
{
|
||||
#if defined(HAVE_WCSNCASECMP)
|
||||
return wcsncasecmp(str1, str2, maxlen);
|
||||
#elif defined(HAVE__WCSNICMP)
|
||||
return _wcsnicmp(str1, str2, maxlen);
|
||||
#else
|
||||
wchar_t a = 0;
|
||||
wchar_t b = 0;
|
||||
while (*str1 && *str2 && maxlen) {
|
||||
/* FIXME: This doesn't actually support wide characters */
|
||||
if (*str1 >= 0x80 || *str2 >= 0x80) {
|
||||
a = *str1;
|
||||
b = *str2;
|
||||
} else {
|
||||
a = SDL_toupper((unsigned char) *str1);
|
||||
b = SDL_toupper((unsigned char) *str2);
|
||||
}
|
||||
if (a != b)
|
||||
break;
|
||||
++str1;
|
||||
++str2;
|
||||
--maxlen;
|
||||
}
|
||||
|
||||
if (maxlen == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
/* FIXME: This doesn't actually support wide characters */
|
||||
if (*str1 >= 0x80 || *str2 >= 0x80) {
|
||||
a = *str1;
|
||||
b = *str2;
|
||||
} else {
|
||||
a = SDL_toupper((unsigned char) *str1);
|
||||
b = SDL_toupper((unsigned char) *str2);
|
||||
}
|
||||
return (int) ((unsigned int) a - (unsigned int) b);
|
||||
}
|
||||
#endif /* HAVE__WCSNICMP */
|
||||
}
|
||||
|
||||
size_t
|
||||
SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue