Ruby  2.5.0dev(2017-10-22revision60238)
strstr.c
Go to the documentation of this file.
1 /* public domain rewrite of strstr(3) */
2 
3 #include "ruby/missing.h"
4 
5 size_t strlen(const char*);
6 
7 char *
8 strstr(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 }
char * strstr(const char *haystack, const char *needle)
Definition: strstr.c:8
size_t strlen(const char *)