1 extern void abort (void);
2 typedef __SIZE_TYPE__
size_t;
3 extern size_t strlen(const char *);
4 extern char *strchr(const char *, int);
5 extern int strcmp(const char *, const char *);
6 extern int strncmp(const char *, const char *, size_t);
7 extern int inside_main
;
10 __attribute__ ((used
))
12 my_strstr (const char *s1
, const char *s2
)
14 const size_t len
= strlen (s2
);
17 /* If optimizing, we should be called only in the strstr (foo + 2, p)
18 case. All other cases should be optimized. */
20 if (s2
!= p
|| strcmp (s1
, "hello world" + 2) != 0)
25 for (s1
= strchr (s1
, *s2
); s1
; s1
= strchr (s1
+ 1, *s2
))
26 if (strncmp (s1
, s2
, len
) == 0)
32 strstr (const char *s1
, const char *s2
)
37 return my_strstr (s1
, s2
);