123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /*
- * Copyright (C) 2002 Manuel Novoa III
- * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
- *
- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
- #include "_string.h"
- #include <ctype.h>
- char attribute_hidden *__strcasestr(const char *s1, const char *s2)
- {
- register const char *s = s1;
- register const char *p = s2;
- #if 1
- do {
- if (!*p) {
- return (char *) s1;;
- }
- if ((*p == *s)
- || (__tolower(*((unsigned char *)p)) == __tolower(*((unsigned char *)s)))
- ) {
- ++p;
- ++s;
- } else {
- p = s2;
- if (!*s) {
- return NULL;
- }
- s = ++s1;
- }
- } while (1);
- #else
- while (*p && *s) {
- if ((*p == *s)
- || (__tolower(*((unsigned char *)p)) == __tolower(*((unsigned char *)s)))
- ) {
- ++p;
- ++s;
- } else {
- p = s2;
- s = ++s1;
- }
- }
- return (*p) ? NULL : (char *) s1;
- #endif
- }
- strong_alias(__strcasestr,strcasestr)
|