diff options
Diffstat (limited to 'drivers/firmware/efi/libstub/string.c')
| -rw-r--r-- | drivers/firmware/efi/libstub/string.c | 57 | 
1 files changed, 57 insertions, 0 deletions
| diff --git a/drivers/firmware/efi/libstub/string.c b/drivers/firmware/efi/libstub/string.c new file mode 100644 index 000000000000..09d5a0894343 --- /dev/null +++ b/drivers/firmware/efi/libstub/string.c @@ -0,0 +1,57 @@ +/* + * Taken from: + *  linux/lib/string.c + * + *  Copyright (C) 1991, 1992  Linus Torvalds + */ + +#include <linux/types.h> +#include <linux/string.h> + +#ifndef __HAVE_ARCH_STRSTR +/** + * strstr - Find the first substring in a %NUL terminated string + * @s1: The string to be searched + * @s2: The string to search for + */ +char *strstr(const char *s1, const char *s2) +{ +	size_t l1, l2; + +	l2 = strlen(s2); +	if (!l2) +		return (char *)s1; +	l1 = strlen(s1); +	while (l1 >= l2) { +		l1--; +		if (!memcmp(s1, s2, l2)) +			return (char *)s1; +		s1++; +	} +	return NULL; +} +#endif + +#ifndef __HAVE_ARCH_STRNCMP +/** + * strncmp - Compare two length-limited strings + * @cs: One string + * @ct: Another string + * @count: The maximum number of bytes to compare + */ +int strncmp(const char *cs, const char *ct, size_t count) +{ +	unsigned char c1, c2; + +	while (count) { +		c1 = *cs++; +		c2 = *ct++; +		if (c1 != c2) +			return c1 < c2 ? -1 : 1; +		if (!c1) +			break; +		count--; +	} +	return 0; +} +#endif |