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