xref: /openbsd-src/gnu/usr.bin/cvs/lib/strstr.c (revision 1e72d8d26fae84dfb4bcd4cecabd10b989ec3f29)
1*1e72d8d2Sderaadt /******************************************************************************
2*1e72d8d2Sderaadt *                                                                             *
3*1e72d8d2Sderaadt *   s t r s t r                                                               *
4*1e72d8d2Sderaadt *                                                                             *
5*1e72d8d2Sderaadt *   Find the first occurrence of a string in another string.                  *
6*1e72d8d2Sderaadt *                                                                             *
7*1e72d8d2Sderaadt * Format:                                                                     *
8*1e72d8d2Sderaadt *             return = strstr(Source,What);                                   *
9*1e72d8d2Sderaadt *                                                                             *
10*1e72d8d2Sderaadt * Parameters:                                                                 *
11*1e72d8d2Sderaadt *                                                                             *
12*1e72d8d2Sderaadt * Returns:                                                                    *
13*1e72d8d2Sderaadt *                                                                             *
14*1e72d8d2Sderaadt * Scope:      PUBLIC                                                          *
15*1e72d8d2Sderaadt *                                                                             *
16*1e72d8d2Sderaadt ******************************************************************************/
17*1e72d8d2Sderaadt 
strstr(Source,What)18*1e72d8d2Sderaadt char *strstr(Source, What)
19*1e72d8d2Sderaadt register const char *Source;
20*1e72d8d2Sderaadt register const char *What;
21*1e72d8d2Sderaadt {
22*1e72d8d2Sderaadt register char WhatChar;
23*1e72d8d2Sderaadt register char SourceChar;
24*1e72d8d2Sderaadt register long Length;
25*1e72d8d2Sderaadt 
26*1e72d8d2Sderaadt 
27*1e72d8d2Sderaadt     if ((WhatChar = *What++) != 0) {
28*1e72d8d2Sderaadt         Length = strlen(What);
29*1e72d8d2Sderaadt         do {
30*1e72d8d2Sderaadt             do {
31*1e72d8d2Sderaadt                 if ((SourceChar = *Source++) == 0) {
32*1e72d8d2Sderaadt                     return (0);
33*1e72d8d2Sderaadt                 }
34*1e72d8d2Sderaadt             } while (SourceChar != WhatChar);
35*1e72d8d2Sderaadt         } while (strncmp(Source, What, Length) != 0);
36*1e72d8d2Sderaadt         Source--;
37*1e72d8d2Sderaadt     }
38*1e72d8d2Sderaadt     return ((char *)Source);
39*1e72d8d2Sderaadt 
40*1e72d8d2Sderaadt }/*strstr*/
41