mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
lib: charset: add u16_str<n>cmp()
u16 version of strcmp(): u16_strncmp() works like u16_strcmp() but only at most n characters (in u16) are compared. This function will be used in my UEFI secure boot patch. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
5a24239c95
commit
f8062c963a
2 changed files with 40 additions and 0 deletions
|
@ -168,6 +168,21 @@ s32 utf_to_lower(const s32 code);
|
|||
*/
|
||||
s32 utf_to_upper(const s32 code);
|
||||
|
||||
/*
|
||||
* u16_strncmp() - compare two u16 string
|
||||
*
|
||||
* @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
|
||||
* corresponding u16 in s2
|
||||
*/
|
||||
int u16_strncmp(const u16 *s1, const u16 *s2, size_t n);
|
||||
#define u16_strcmp(s1, s2) u16_strncmp((s1), (s2), SIZE_MAX)
|
||||
|
||||
/**
|
||||
* u16_strlen - count non-zero words
|
||||
*
|
||||
|
|
|
@ -335,6 +335,31 @@ s32 utf_to_upper(const s32 code)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* u16_strncmp() - compare two u16 string
|
||||
*
|
||||
* @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
|
||||
* corresponding u16 in s2
|
||||
*/
|
||||
int u16_strncmp(const u16 *s1, const u16 *s2, size_t n)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
for (; n; --n, ++s1, ++s2) {
|
||||
ret = *s1 - *s2;
|
||||
if (ret || !*s1)
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
size_t u16_strlen(const void *in)
|
||||
{
|
||||
const char *pos = in;
|
||||
|
|
Loading…
Add table
Reference in a new issue