1 /* 2 * Taken from: 3 * linux/lib/string.c 4 * 5 * Copyright (C) 1991, 1992 Linus Torvalds 6 */ 7 8 #include <linux/types.h> 9 #include <linux/string.h> 10 11 #ifndef __HAVE_ARCH_STRSTR 12 /** 13 * strstr - Find the first substring in a %NUL terminated string 14 * @s1: The string to be searched 15 * @s2: The string to search for 16 */ 17 char *strstr(const char *s1, const char *s2) 18 { 19 size_t l1, l2; 20 21 l2 = strlen(s2); 22 if (!l2) 23 return (char *)s1; 24 l1 = strlen(s1); 25 while (l1 >= l2) { 26 l1--; 27 if (!memcmp(s1, s2, l2)) 28 return (char *)s1; 29 s1++; 30 } 31 return NULL; 32 } 33 #endif 34 35 #ifndef __HAVE_ARCH_STRNCMP 36 /** 37 * strncmp - Compare two length-limited strings 38 * @cs: One string 39 * @ct: Another string 40 * @count: The maximum number of bytes to compare 41 */ 42 int strncmp(const char *cs, const char *ct, size_t count) 43 { 44 unsigned char c1, c2; 45 46 while (count) { 47 c1 = *cs++; 48 c2 = *ct++; 49 if (c1 != c2) 50 return c1 < c2 ? -1 : 1; 51 if (!c1) 52 break; 53 count--; 54 } 55 return 0; 56 } 57 #endif 58