09d5a0894343ac929a223be46681076de6a1a8c7
[sfrench/cifs-2.6.git] / drivers / firmware / efi / libstub / string.c
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