lib: add function u16_strcasecmp()
Provide a function for comparing UTF-16 strings in a case insensitive manner. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
parent
d7ddeb66a6
commit
7a9b366cd9
@ -173,6 +173,19 @@ s32 utf_to_lower(const s32 code);
|
||||
*/
|
||||
s32 utf_to_upper(const s32 code);
|
||||
|
||||
/**
|
||||
* u16_strcasecmp() - compare two u16 strings case insensitively
|
||||
*
|
||||
* @s1: first string to compare
|
||||
* @s2: second string to compare
|
||||
* @n: maximum number of u16 to compare
|
||||
* Return: 0 if the first n u16 are the same in s1 and s2
|
||||
* < 0 if the first different u16 in s1 is less than the
|
||||
* corresponding u16 in s2
|
||||
* > 0 if the first different u16 in s1 is greater than the
|
||||
*/
|
||||
int u16_strcasecmp(const u16 *s1, const u16 *s2);
|
||||
|
||||
/**
|
||||
* u16_strncmp() - compare two u16 string
|
||||
*
|
||||
|
@ -350,6 +350,32 @@ s32 utf_to_upper(const s32 code)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* u16_strcasecmp() - compare two u16 strings case insensitively
|
||||
*
|
||||
* @s1: first string to compare
|
||||
* @s2: second string to compare
|
||||
* @n: maximum number of u16 to compare
|
||||
* Return: 0 if the first n u16 are the same in s1 and s2
|
||||
* < 0 if the first different u16 in s1 is less than the
|
||||
* corresponding u16 in s2
|
||||
* > 0 if the first different u16 in s1 is greater than the
|
||||
*/
|
||||
int u16_strcasecmp(const u16 *s1, const u16 *s2)
|
||||
{
|
||||
int ret = 0;
|
||||
s32 c1, c2;
|
||||
|
||||
for (;;) {
|
||||
c1 = utf_to_upper(utf16_get(&s1));
|
||||
c2 = utf_to_upper(utf16_get(&s2));
|
||||
ret = c1 - c2;
|
||||
if (ret || !c1 || c1 == -1 || c2 == -1)
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* u16_strncmp() - compare two u16 string
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user