mirror of
https://github.com/taglib/taglib.git
synced 2025-05-27 21:20:26 -04:00
tolower() depends on the current locale.
It's much easier to write our own function than to use locales properly.
This commit is contained in:
parent
e390cbac52
commit
d81d894d41
@ -222,15 +222,27 @@ namespace TagLib
|
||||
}
|
||||
|
||||
/*!
|
||||
* Returns whether the two strings s1 and s2 are equal, ignoring the case of
|
||||
* the characters.
|
||||
* Converts the letter c to lower case, not depending on the locale.
|
||||
*/
|
||||
inline int toLowerCase(char c)
|
||||
{
|
||||
if('A' <= c && c <= 'Z')
|
||||
return c + ('a' - 'A');
|
||||
else
|
||||
return c;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Returns whether the two strings s1 and s2 are equal, ignoring the case
|
||||
* of the characters. This only supports US-ASCII and does not depend on
|
||||
* the current locale.
|
||||
*
|
||||
* We took the trouble to define this one here, since there are some
|
||||
* incompatible variations of case insensitive strcmp().
|
||||
*/
|
||||
inline bool equalsIgnoreCase(const char *s1, const char *s2)
|
||||
{
|
||||
while(*s1 != '\0' && *s2 != '\0' && ::tolower(*s1) == ::tolower(*s2)) {
|
||||
while(*s1 != '\0' && *s2 != '\0' && toLowerCase(*s1) == toLowerCase(*s2)) {
|
||||
s1++;
|
||||
s2++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user