Update year range in copyright notice of binutils files
[binutils-gdb.git] / libiberty / strstr.c
index ffe1d10fc9ef5f6e241cc7b8be1344943ef88a33..c6f68495a33d124cec901251812150c52e2d0ea3 100644 (file)
@@ -7,7 +7,7 @@
 
 This function searches for the substring @var{sub} in the string
 @var{string}, not including the terminating null characters.  A pointer
-to the first occurrence of @var{sub} is returned, or NULL if the
+to the first occurrence of @var{sub} is returned, or @code{NULL} if the
 substring is absent.  If @var{sub} points to a string with zero
 length, the function returns @var{string}.
 
@@ -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);
 }