From 8f7af29d746f3e921b58ed66b00d10e61b5f217b Mon Sep 17 00:00:00 2001 From: Petro Karashchenko Date: Sat, 23 Apr 2022 15:25:11 +0200 Subject: [PATCH] libs/libc/string: unify implementation across the functions Signed-off-by: Petro Karashchenko --- libs/libc/string/lib_strcasecmp.c | 5 +++-- libs/libc/string/lib_strcasestr.c | 11 ++++------- libs/libc/string/lib_strcmp.c | 2 +- libs/libc/string/lib_strncasecmp.c | 7 ++++--- libs/libc/string/lib_strncat.c | 4 ++-- libs/libc/string/lib_strncmp.c | 6 +++--- 6 files changed, 17 insertions(+), 18 deletions(-) diff --git a/libs/libc/string/lib_strcasecmp.c b/libs/libc/string/lib_strcasecmp.c index e02fddd717..b1be6b07ab 100644 --- a/libs/libc/string/lib_strcasecmp.c +++ b/libs/libc/string/lib_strcasecmp.c @@ -35,10 +35,11 @@ #undef strcasecmp /* See mm/README.txt */ int strcasecmp(FAR const char *cs, FAR const char *ct) { - int result; + register int result; for (; ; ) { - if ((result = (int)toupper(*cs) - (int)toupper(*ct)) != 0 || !*cs) + if ((result = toupper(*cs) - toupper(*ct)) != 0 || + *cs == '\0') { break; } diff --git a/libs/libc/string/lib_strcasestr.c b/libs/libc/string/lib_strcasestr.c index e63e644a73..8da18860a1 100644 --- a/libs/libc/string/lib_strcasestr.c +++ b/libs/libc/string/lib_strcasestr.c @@ -36,15 +36,12 @@ static FAR char *strcasechr(FAR const char *s, int uc) { register char ch; - if (s) + for (; *s; s++) { - for (; *s; s++) + ch = *s; + if (toupper(ch) == uc) { - ch = *s; - if (toupper(ch) == uc) - { - return (FAR char *)s; - } + return (FAR char *)s; } } diff --git a/libs/libc/string/lib_strcmp.c b/libs/libc/string/lib_strcmp.c index edb6d23c83..3067684698 100644 --- a/libs/libc/string/lib_strcmp.c +++ b/libs/libc/string/lib_strcmp.c @@ -38,7 +38,7 @@ int strcmp(FAR const char *cs, FAR const char *ct) for (; ; ) { if ((result = (unsigned char)*cs - (unsigned char)*ct++) != 0 || - !*cs++) + *cs++ == '\0') { break; } diff --git a/libs/libc/string/lib_strncasecmp.c b/libs/libc/string/lib_strncasecmp.c index 2b3ac6bfe3..6aeb57273c 100644 --- a/libs/libc/string/lib_strncasecmp.c +++ b/libs/libc/string/lib_strncasecmp.c @@ -34,12 +34,13 @@ #ifndef CONFIG_ARCH_STRNCASECMP #undef strncasecmp /* See mm/README.txt */ -int strncasecmp(const char *cs, const char *ct, size_t nb) +int strncasecmp(FAR const char *cs, FAR const char *ct, size_t nb) { - int result = 0; + register int result = 0; for (; nb > 0; nb--) { - if ((result = (int)toupper(*cs) - (int)toupper(*ct)) != 0 || !*cs) + if ((result = toupper(*cs) - toupper(*ct)) != 0 || + *cs == '\0') { break; } diff --git a/libs/libc/string/lib_strncat.c b/libs/libc/string/lib_strncat.c index cc68ea156a..23ae796054 100644 --- a/libs/libc/string/lib_strncat.c +++ b/libs/libc/string/lib_strncat.c @@ -32,9 +32,9 @@ #ifndef CONFIG_ARCH_STRNCAT #undef strncat /* See mm/README.txt */ -char *strncat(char *dest, const char *src, size_t n) +FAR char *strncat(FAR char *dest, FAR const char *src, size_t n) { - char *ret = dest; + FAR char *ret = dest; dest += strlen(dest); for (; n > 0 && *src != '\0' ; n--) diff --git a/libs/libc/string/lib_strncmp.c b/libs/libc/string/lib_strncmp.c index 48e2a2486a..10869cb411 100644 --- a/libs/libc/string/lib_strncmp.c +++ b/libs/libc/string/lib_strncmp.c @@ -32,13 +32,13 @@ #ifndef CONFIG_ARCH_STRNCMP #undef strncmp /* See mm/README.txt */ -int strncmp(const char *cs, const char *ct, size_t nb) +int strncmp(FAR const char *cs, FAR const char *ct, size_t nb) { - int result = 0; + register int result = 0; for (; nb > 0; nb--) { if ((result = (unsigned char)*cs - (unsigned char)*ct++) != 0 || - !*cs++) + *cs++ == '\0') { break; }