|
|
1.1 root 1: /*
2: * strstr.c --
3: *
4: * Source code for the "strstr" library routine.
5: *
6: * Copyright 1988 Regents of the University of California
7: * Permission to use, copy, modify, and distribute this
8: * software and its documentation for any purpose and without
9: * fee is hereby granted, provided that the above copyright
10: * notice appear in all copies. The University of California
11: * makes no representations about the suitability of this
12: * software for any purpose. It is provided "as is" without
13: * express or implied warranty.
14: */
15:
16: #ifndef lint
17: static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strstr.c,v 1.2 89/03/22 16:07:57 rab Exp $ SPRITE (Berkeley)";
18: #endif /* not lint */
19:
20: /*
21: *----------------------------------------------------------------------
22: *
23: * strstr --
24: *
25: * Locate the first instance of a substring in a string.
26: *
27: * Results:
28: * If string contains substring, the return value is the
29: * location of the first matching instance of substring
30: * in string. If string doesn't contain substring, the
31: * return value is 0. Matching is done on an exact
32: * character-for-character basis with no wildcards or special
33: * characters.
34: *
35: * Side effects:
36: * None.
37: *
38: *----------------------------------------------------------------------
39: */
40:
41: char *
42: strstr(string, substring)
43: register char *string; /* String to search. */
44: char *substring; /* Substring to try to find in string. */
45: {
46: register char *a, *b;
47:
48: /* First scan quickly through the two strings looking for a
49: * single-character match. When it's found, then compare the
50: * rest of the substring.
51: */
52:
53: b = substring;
54: if (*b == 0) {
55: return string;
56: }
57: for ( ; *string != 0; string += 1) {
58: if (*string != *b) {
59: continue;
60: }
61: a = string;
62: while (1) {
63: if (*b == 0) {
64: return string;
65: }
66: if (*a++ != *b++) {
67: break;
68: }
69: }
70: b = substring;
71: }
72: return (char *) 0;
73: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.