diff options
Diffstat (limited to 'lib/string.c')
| -rw-r--r-- | lib/string.c | 27 | 
1 files changed, 26 insertions, 1 deletions
diff --git a/lib/string.c b/lib/string.c index 9f75b4ec50b..a1cdcfcc42d 100644 --- a/lib/string.c +++ b/lib/string.c @@ -667,7 +667,7 @@ EXPORT_SYMBOL(memscan);   */  char *strstr(const char *s1, const char *s2)  { -	int l1, l2; +	size_t l1, l2;  	l2 = strlen(s2);  	if (!l2) @@ -684,6 +684,31 @@ char *strstr(const char *s1, const char *s2)  EXPORT_SYMBOL(strstr);  #endif +#ifndef __HAVE_ARCH_STRNSTR +/** + * strnstr - Find the first substring in a length-limited string + * @s1: The string to be searched + * @s2: The string to search for + * @len: the maximum number of characters to search + */ +char *strnstr(const char *s1, const char *s2, size_t len) +{ +	size_t l1 = len, l2; + +	l2 = strlen(s2); +	if (!l2) +		return (char *)s1; +	while (l1 >= l2) { +		l1--; +		if (!memcmp(s1, s2, l2)) +			return (char *)s1; +		s1++; +	} +	return NULL; +} +EXPORT_SYMBOL(strnstr); +#endif +  #ifndef __HAVE_ARCH_MEMCHR  /**   * memchr - Find a character in an area of memory.  |