Mercurial > hg > CbC > CbC_gcc
comparison libiberty/strstr.c @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Simple implementation of strstr for systems without it. | |
2 This function is in the public domain. */ | |
3 | |
4 /* | |
5 | |
6 @deftypefn Supplemental char* strstr (const char *@var{string}, const char *@var{sub}) | |
7 | |
8 This function searches for the substring @var{sub} in the string | |
9 @var{string}, not including the terminating null characters. A pointer | |
10 to the first occurrence of @var{sub} is returned, or @code{NULL} if the | |
11 substring is absent. If @var{sub} points to a string with zero | |
12 length, the function returns @var{string}. | |
13 | |
14 @end deftypefn | |
15 | |
16 | |
17 */ | |
18 | |
19 | |
20 /* FIXME: The above description is ANSI compiliant. This routine has not | |
21 been validated to comply with it. -fnf */ | |
22 | |
23 #include <stddef.h> | |
24 | |
25 extern char *strchr (const char *, int); | |
26 extern int strncmp (const void *, const void *, size_t); | |
27 extern size_t strlen (const char *); | |
28 | |
29 char * | |
30 strstr (const char *s1, const char *s2) | |
31 { | |
32 const char *p = s1; | |
33 const size_t len = strlen (s2); | |
34 | |
35 for (; (p = strchr (p, *s2)) != 0; p++) | |
36 { | |
37 if (strncmp (p, s2, len) == 0) | |
38 return (char *)p; | |
39 } | |
40 return (0); | |
41 } |