Annotation of researchv10dc/cmd/worm/scsi/tcl/strstr.c, revision 1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.