commit d94fa6842b25809958903fdd33d498bb622695a5 Author: Dave Hansen Date: Tue Apr 19 09:31:07 2022 -0700 foo bar1 diff --git a/lib/string-internal.h b/lib/string-internal.h new file mode 100644 index 000000000000..230c22864b75 --- /dev/null +++ b/lib/string-internal.h @@ -0,0 +1,31 @@ +#include + +/** + * strncasecmp - Case insensitive, length-limited string comparison + * @s1: One string + * @s2: The other string + * @len: the maximum number of characters to compare + */ +static inline int __lib_strncasecmp(const char *s1, const char *s2, size_t len) +{ + /* Yes, Virginia, it had better be unsigned */ + unsigned char c1, c2; + + if (!len) + return 0; + + do { + c1 = *s1++; + c2 = *s2++; + if (!c1 || !c2) + break; + if (c1 == c2) + continue; + c1 = tolower(c1); + c2 = tolower(c2); + if (c1 != c2) + break; + } while (--len); + return (int)c1 - (int)c2; +} +#endif diff --git a/lib/string.c b/lib/string.c index 485777c9da83..705b799e3b5c 100644 --- a/lib/string.c +++ b/lib/string.c @@ -29,6 +29,7 @@ #include #include +#include "string-internal.h" #ifndef __HAVE_ARCH_STRNCASECMP /** * strncasecmp - Case insensitive, length-limited string comparison @@ -38,25 +39,7 @@ */ int strncasecmp(const char *s1, const char *s2, size_t len) { - /* Yes, Virginia, it had better be unsigned */ - unsigned char c1, c2; - - if (!len) - return 0; - - do { - c1 = *s1++; - c2 = *s2++; - if (!c1 || !c2) - break; - if (c1 == c2) - continue; - c1 = tolower(c1); - c2 = tolower(c2); - if (c1 != c2) - break; - } while (--len); - return (int)c1 - (int)c2; + return __lib_strncasecmp(s1, s1, len); } EXPORT_SYMBOL(strncasecmp); #endif