|
|
|
@ -20,23 +20,22 @@ 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 size_t strlen (const char *); |
|
|
|
|
|
|
|
char * |
|
|
|
strstr (char *s1, char *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 (const char *); |
|
|
|
#endif |
|
|
|
register int len = strlen (s2); |
|
|
|
const char *p = s1; |
|
|
|
const size_t len = strlen (s2); |
|
|
|
|
|
|
|
for (; (p = strchr (p, *s2)) != 0; p++) |
|
|
|
{ |
|
|
|
if (strncmp (p, s2, len) == 0) |
|
|
|
{ |
|
|
|
return (p); |
|
|
|
} |
|
|
|
return (char *)p; |
|
|
|
} |
|
|
|
return (0); |
|
|
|
} |
|
|
|
|