Annotation of researchv10no/cmd/basic/bite/src/isthere.c, revision 1.1

1.1     ! root        1: /* Copyright Bell Telephone Laboratories Whippany, N.J.
        !             2: 
        !             3:  *     ******************************************
        !             4:  *     ******************************************
        !             5:  *     *** IS STRING IN THERE ? IF SO WHERE ? ***
        !             6:  *     ****** R. B. Drake WH 8C-005 X4163 *******
        !             7:  *     ******** Fri Aug 24 17:38:24 1979 ********
        !             8:  *     ******************************************
        !             9:  *     ******************************************
        !            10: 
        !            11: */
        !            12: /*   "@(#) isthere.c:  V 1.1  12/21/80" */
        !            13: 
        !            14: /* determine if a group of characters is in a string and if so
        !            15:  * return a pointer to the start of the group otherwise return
        !            16:  * -1 */
        !            17: #include "bas.h"
        !            18: static char *beyond; /*pointer to first non-blank beyond group*/
        !            19: char *isthere(s,t,flg)
        !            20: char *s,*t;
        !            21: int flg; /* used to turn quote testing on and off */
        !            22: {
        !            23:        int i;
        !            24:        char *quot();
        !            25:        for(;*t != 0;t++)
        !            26:        {
        !            27:                if((*t == '"') && ( flg ==1))
        !            28:                {
        !            29:                        t=quot(t);
        !            30:                        if(t < (char *)0)
        !            31:                                return(0);
        !            32:                        if(*t == '\0')
        !            33:                                return(0);
        !            34:                }
        !            35:                for(i=0; s[i] == 0 || s[i] == t[i];i++)
        !            36:                        if(s[i] == '\0')
        !            37:                        {
        !            38:                        for(i=i;t[i] == ' ';i++);
        !            39:                        beyond = &t[i];
        !            40:                        return(t);
        !            41:                        }
        !            42:        }
        !            43:        return(0);
        !            44: }
        !            45: /* take the string starting at ptr and */
        !            46: shrink(ptr)
        !            47: char *ptr;
        !            48: {
        !            49:        extern char linbuf[];
        !            50:        while(*beyond != '\0')
        !            51:                *ptr++ = *beyond++;
        !            52:        *ptr = '\0';
        !            53: }
        !            54: /* routine to push the incoming pointer past anything enclosed
        !            55:  * in double quotes. If we hit the end of string first, its an error */
        !            56: char *quot(t)
        !            57: char *t;
        !            58: {
        !            59:        t++; /* get past the opening quote */
        !            60:        while(*t++ != '"')
        !            61:                if(*t == '\0')
        !            62:                {
        !            63:                        error(inst.thing.linno,11);
        !            64:                        return(0);
        !            65:                }
        !            66:        return(t);
        !            67: }

unix.superglobalmegacorp.com

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