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