summaryrefslogtreecommitdiff
path: root/libiberty/strstr.c
diff options
context:
space:
mode:
Diffstat (limited to 'libiberty/strstr.c')
-rw-r--r--libiberty/strstr.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/libiberty/strstr.c b/libiberty/strstr.c
index 60902ea40ee..c6f68495a33 100644
--- a/libiberty/strstr.c
+++ b/libiberty/strstr.c
@@ -16,26 +16,20 @@ length, the function returns @var{string}.
*/
-
-/* FIXME: The above description is ANSI compiliant. This routine has not
- been validated to comply with it. -fnf */
-
#include <stddef.h>
-extern char *strchr (const char *, int);
-extern int strncmp (const void *, const void *, size_t);
+extern int memcmp (const void *, const void *, size_t);
extern size_t strlen (const char *);
char *
strstr (const char *s1, const char *s2)
{
- const char *p = s1;
const size_t len = strlen (s2);
-
- for (; (p = strchr (p, *s2)) != 0; p++)
+ while (*s1)
{
- if (strncmp (p, s2, len) == 0)
- return (char *)p;
+ if (!memcmp (s1, s2, len))
+ return (char *)s1;
+ ++s1;
}
return (0);
}