blob: ed10e3f602c5edde5b57a502dd7d0b74c0dd6fb0 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Ard Biesheuvele8f30102015-10-08 20:02:04 +01002/*
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