diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-07-02 07:08:33 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-07-02 07:08:46 +0200 |
commit | 8afe2cb4d4af5b472adeac9132200dc8c9100821 (patch) | |
tree | b6164ed60137b82e6e820a329999f4f0f515bd84 /lib | |
parent | 12657cb99e1ca670da6a7cace3b238a42003e629 (diff) | |
parent | fff76d57d2670a8f15c875355fb840665ebf8a3e (diff) | |
download | barebox-8afe2cb4d4af5b472adeac9132200dc8c9100821.tar.gz barebox-8afe2cb4d4af5b472adeac9132200dc8c9100821.tar.xz |
Merge branch 'for-next-manual/oftree-linux-sync'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/string.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/string.c b/lib/string.c index db4f2ae7db..f544b23664 100644 --- a/lib/string.c +++ b/lib/string.c @@ -22,6 +22,66 @@ char * ___strtok; +#ifndef __HAVE_ARCH_STRNICMP +/** + * strnicmp - Case insensitive, length-limited string comparison + * @s1: One string + * @s2: The other string + * @len: the maximum number of characters to compare + */ +int strnicmp(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; +} +EXPORT_SYMBOL(strnicmp); +#endif + +#ifndef __HAVE_ARCH_STRCASECMP +int strcasecmp(const char *s1, const char *s2) +{ + int c1, c2; + + do { + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } while (c1 == c2 && c1 != 0); + return c1 - c2; +} +EXPORT_SYMBOL(strcasecmp); +#endif + +#ifndef __HAVE_ARCH_STRNCASECMP +int strncasecmp(const char *s1, const char *s2, size_t n) +{ + int c1, c2; + + do { + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } while ((--n > 0) && c1 == c2 && c1 != 0); + return c1 - c2; +} +EXPORT_SYMBOL(strncasecmp); +#endif + #ifndef __HAVE_ARCH_STRCPY /** * strcpy - Copy a %NUL terminated string |