dm thin metadata: fix __udivdi3 undefined on 32-bit
[linux/fpc-iii.git] / drivers / firmware / efi / libstub / string.c
blob09d5a0894343ac929a223be46681076de6a1a8c7
1 /*
2 * Taken from:
3 * linux/lib/string.c
5 * Copyright (C) 1991, 1992 Linus Torvalds
6 */
8 #include <linux/types.h>
9 #include <linux/string.h>
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
17 char *strstr(const char *s1, const char *s2)
19 size_t l1, l2;
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++;
31 return NULL;
33 #endif
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
42 int strncmp(const char *cs, const char *ct, size_t count)
44 unsigned char c1, c2;
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--;
55 return 0;
57 #endif