strstr.c revision 89857
118334Speter/* Simple implementation of strstr for systems without it. 252284Sobrien This function is in the public domain. */ 318334Speter 418334Speter/* 518334Speter 618334Speter@deftypefn Supplemental char* strstr (const char *@var{string}, const char *@var{sub}) 718334Speter 818334SpeterThis function searches for the substring @var{sub} in the string 918334Speter@var{string}, not including the terminating null characters. A pointer 1018334Speterto the first occurrence of @var{sub} is returned, or @code{NULL} if the 1118334Spetersubstring is absent. If @var{sub} points to a string with zero 1218334Speterlength, the function returns @var{string}. 1318334Speter 1418334Speter@end deftypefn 1518334Speter 1618334Speter 1718334Speter*/ 1818334Speter 1918334Speter 2018334Speter/* FIXME: The above description is ANSI compiliant. This routine has not 2118334Speter been validated to comply with it. -fnf */ 2218334Speter 2318334Speterchar * 2418334Speterstrstr (s1, s2) 2518334Speter char *s1, *s2; 2618334Speter{ 2718334Speter register char *p = s1; 2818334Speter extern char *strchr (); 2918334Speter extern int strncmp (); 3050397Sobrien#if __GNUC__==2 3118334Speter extern __SIZE_TYPE__ strlen (); 3218334Speter#endif 3318334Speter register int len = strlen (s2); 3418334Speter 3518334Speter for (; (p = strchr (p, *s2)) != 0; p++) 3650397Sobrien { 3718334Speter if (strncmp (p, s2, len) == 0) 3850397Sobrien { 3950397Sobrien return (p); 4052284Sobrien } 4150397Sobrien } 4250397Sobrien return (0); 4318334Speter} 4418334Speter