1208615Sraj/* Simple implementation of strstr for systems without it. 2208615Sraj This function is in the public domain. */ 3208615Sraj 4208615Sraj/* 5208615Sraj 6208615Sraj@deftypefn Supplemental char* strstr (const char *@var{string}, const char *@var{sub}) 7208615Sraj 8208615SrajThis function searches for the substring @var{sub} in the string 9208615Sraj@var{string}, not including the terminating null characters. A pointer 10208615Srajto the first occurrence of @var{sub} is returned, or @code{NULL} if the 11208615Srajsubstring is absent. If @var{sub} points to a string with zero 12208615Srajlength, the function returns @var{string}. 13208615Sraj 14208615Sraj@end deftypefn 15208615Sraj 16208615Sraj 17208615Sraj*/ 18208615Sraj 19208615Sraj#include <stddef.h> 20208615Sraj 21208615Srajextern char *strchr (const char *, int); 22208615Srajextern int strncmp (const void *, const void *, size_t); 23208615Srajextern size_t strlen (const char *); 24208615Sraj 25208615Srajchar * 26208615Srajstrstr (const char *s1, const char *s2) 27208615Sraj{ 28208615Sraj const char *p = s1; 29208615Sraj const size_t len = strlen (s2); 30208615Sraj 31208615Sraj if (!len) 32208615Sraj return s1; 33208615Sraj 34208615Sraj for (; (p = strchr (p, *s2)) != 0; p++) 35208615Sraj { 36208615Sraj if (strncmp (p, s2, len) == 0) 37208615Sraj return (char *)p; 38208615Sraj } 39208615Sraj return (0); 40208615Sraj} 41208615Sraj