*/
+#include <stddef.h>
-/* FIXME: The above description is ANSI compiliant. This routine has not
- been validated to comply with it. -fnf */
+extern int memcmp (const void *, const void *, size_t);
+extern size_t strlen (const char *);
char *
-strstr (s1, s2)
- char *s1, *s2;
+strstr (const char *s1, const char *s2)
{
- register char *p = s1;
- extern char *strchr ();
- extern int strncmp ();
-#if __GNUC__==2
- extern __SIZE_TYPE__ strlen ();
-#endif
- register int len = strlen (s2);
-
- for (; (p = strchr (p, *s2)) != 0; p++)
+ const size_t len = strlen (s2);
+ while (*s1)
{
- if (strncmp (p, s2, len) == 0)
- {
- return (p);
- }
+ if (!memcmp (s1, s2, len))
+ return (char *)s1;
+ ++s1;
}
return (0);
}