From: Alan Cox Date: Fri, 2 Jan 2015 23:06:15 +0000 (+0000) Subject: strcasestr: another BSDism X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=7ea9309a6dab417fa6f9982ac5e3ecef25a68634;p=FUZIX.git strcasestr: another BSDism --- diff --git a/Library/include/string.h b/Library/include/string.h index 8d60d3ce..858f7728 100644 --- a/Library/include/string.h +++ b/Library/include/string.h @@ -51,6 +51,9 @@ extern size_t strspn __P ((const char *, const char *)); extern size_t strlcpy __P((char *, const char *, size_t)); extern size_t strlcat __P((char *, const char *, size_t)); + +extern char *strcasestr __P((const char *, const char *)); + #ifdef z80 #pagma inline(memcpy) #pagma inline(memset) diff --git a/Library/libs/strcasestr.c b/Library/libs/strcasestr.c new file mode 100644 index 00000000..67cd83da --- /dev/null +++ b/Library/libs/strcasestr.c @@ -0,0 +1,20 @@ +/* Another BSDism */ + +#include +#include + +char *strcasestr(const char *needle, const char *haystack) +{ + size_t s = strlen(needle); + char c = tolower(needle[0]); + + while(*haystack) { + /* check the lead byte here for speed */ + if (tolower(*haystack) == c) { + if (strncasecmp(needle, haystack, s) == 0) + return haystack; + } + haystack++; + } + return NULL; +}