diff options
| -rw-r--r-- | include/linux/string.h | 1 | ||||
| -rw-r--r-- | lib/string.c | 27 |
2 files changed, 28 insertions, 0 deletions
diff --git a/include/linux/string.h b/include/linux/string.h index 5e4594b19df..986499dfc70 100644 --- a/include/linux/string.h +++ b/include/linux/string.h @@ -71,6 +71,7 @@ extern char * strstr(const char *,const char *); #ifndef __HAVE_ARCH_STRNSTR extern char *strnstr(const char *, const char *, size_t); #endif +char *strcasestr(const char *, const char *); #ifndef __HAVE_ARCH_STRLEN extern __kernel_size_t strlen(const char *); #endif diff --git a/lib/string.c b/lib/string.c index 20c934c18c3..dbf2ce340df 100644 --- a/lib/string.c +++ b/lib/string.c @@ -701,6 +701,33 @@ char *strstr(const char *s1, const char *s2) } #endif +/** + * strcasestr() - Case insensitive substring search + * + * @haystack: string to be searched + * @needle: string to search for + * + * Return: pointer to the first occurrence or NULL + * + * The case of both strings are ignored. + */ +char *strcasestr(const char *haystack, const char *needle) +{ + size_t l1, l2; + + l1 = strlen(haystack); + l2 = strlen(needle); + + while (l1 >= l2) { + if (!strncasecmp(haystack, needle, l2)) + return (char *)haystack; + haystack++; + l1--; + } + + return NULL; +} + #ifndef __HAVE_ARCH_MEMCHR /** * memchr - Find a character in an area of memory. |
