Refactor set_internal_breakpoint / internal_breakpoint ctor
[binutils-gdb.git] / libiberty / strstr.c
index 470e04b1a7613c0e848aa39d6775a2a34912cf44..c6f68495a33d124cec901251812150c52e2d0ea3 100644 (file)
@@ -16,28 +16,20 @@ length, the function returns @var{string}.
 
 */
 
+#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);
 }