
u16 version of strcmp()
AUTHER: Patrick Wildt patrick@blueri.se Signed-off-by: AKASHI Takahiro takahiro.akashi@linaro.org --- include/charset.h | 5 +++++ lib/charset.c | 10 ++++++++++ 2 files changed, 15 insertions(+)
diff --git a/include/charset.h b/include/charset.h index 65087f76d1fc..747a9b376c03 100644 --- a/include/charset.h +++ b/include/charset.h @@ -166,6 +166,11 @@ s32 utf_to_lower(const s32 code); */ s32 utf_to_upper(const s32 code);
+/* + * u16_strcmp() - strcmp() for u16 strings + */ +int u16_strcmp(const u16 *s1, const u16 *s2); + /** * u16_strlen - count non-zero words * diff --git a/lib/charset.c b/lib/charset.c index 5e349ed5ee45..4a25ac0bdb9c 100644 --- a/lib/charset.c +++ b/lib/charset.c @@ -335,6 +335,16 @@ s32 utf_to_upper(const s32 code) return ret; }
+int u16_strcmp(const u16 *s1, const u16 *s2) +{ + while (*s1 == *s2++) + if (*s1++ == 0) + return (0); + --s2; + + return (*(uint16_t *)s1 - *(uint16_t *)s2); +} + size_t u16_strlen(const u16 *in) { size_t i;