commit 494bd039510a349f198a1cd310b8e36ed8ddce09
parent 801803b4a94822bc1a1f4d69b797f312519dfdfd
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Thu, 23 Feb 2017 15:16:38 +0100
[libc] Add strstr()
Diffstat:
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/libc/src/Makefile b/libc/src/Makefile
@@ -3,7 +3,7 @@
LIBCOBJ = assert.o strcpy.o strcmp.o strlen.o strchr.o \
strrchr.o strcat.o strncmp.o strncpy.o strncat.o strcoll.o \
- strxfrm.o strtok.o \
+ strxfrm.o strtok.o strstr.o \
memset.o memcpy.o memmove.o memcmp.o memchr.o \
isalnum.o isalpha.o isascii.o isblank.o iscntrl.o isdigit.o \
isgraph.o islower.o isprint.o ispunct.o isspace.o isupper.o \
diff --git a/libc/src/strstr.c b/libc/src/strstr.c
@@ -0,0 +1,27 @@
+/* See LICENSE file for copyright and license details. */
+
+#include <string.h>
+
+char *
+strstr(const char *s1, const char *s2)
+{
+ const char *p, *q;
+ int c;
+
+ c = *s2++;
+ if (c == '\0')
+ return (char *) s1;
+
+ while (*s1) {
+ if (*s1 != c) {
+ ++s1;
+ } else {
+ p = s1++;
+ for (q = s2; *q && *s1 == *q; ++s1, ++q)
+ /* nothing */;
+ if (*q == '\0')
+ return (char *) p;
+ }
+ }
+ return NULL;
+}