1/* public domain rewrite of strstr(3) */ 2 3#include "ruby/missing.h" 4 5size_t strlen(const char*); 6 7char * 8strstr(const char *haystack, const char *needle) 9{ 10 const char *hend; 11 const char *a, *b; 12 13 if (*needle == 0) return (char *)haystack; 14 hend = haystack + strlen(haystack) - strlen(needle) + 1; 15 while (haystack < hend) { 16 if (*haystack == *needle) { 17 a = haystack; 18 b = needle; 19 for (;;) { 20 if (*b == 0) return (char *)haystack; 21 if (*a++ != *b++) { 22 break; 23 } 24 } 25 } 26 haystack++; 27 } 28 return 0; 29} 30