Annotation of researchv10no/cmd/mk/export/match.c, revision 1.1

1.1     ! root        1: #include       "mk.h"
        !             2: 
        !             3: mninlist(name, list, stem)
        !             4:        register char *name, *stem;
        !             5:        Word *list;
        !             6: {
        !             7:        for(; list; list = list->next){
        !             8:                if(match(name, list->s, stem))
        !             9:                        return(1);
        !            10:        }
        !            11:        return(0);
        !            12: }
        !            13: 
        !            14: static
        !            15: isatomic(p)
        !            16:        char *p;
        !            17: {
        !            18:        while(*p){
        !            19:                if((*p == '.') || (*p == '/'))
        !            20:                        return(0);
        !            21:                p++;
        !            22:        }
        !            23:        return(1);
        !            24: }
        !            25: 
        !            26: match(name, template, stem)
        !            27:        char *name, *template, *stem;
        !            28: {
        !            29:        register char *p, *q;
        !            30:        char *b;
        !            31:        char *ostem = stem;
        !            32: 
        !            33:        for(p = name, q = template; *p && *q && !PERCENT(*q);)
        !            34:                if(*p++ != *q++) return(0);
        !            35:        if(!PERCENT(*q))
        !            36:                return(0);
        !            37:        b = p;
        !            38:        while(*p) p++;
        !            39:        while(*q) q++;
        !            40:        for(q--; !PERCENT(*q); q--)
        !            41:                if(*--p != *q) return(0);
        !            42:        while(b < p)
        !            43:                *stem++ = *b++;
        !            44:        *stem = 0;
        !            45:        if(*q == '&')
        !            46:                return(isatomic(ostem));
        !            47:        return(1);
        !            48: }
        !            49: 
        !            50: subst(stem, template, dest)
        !            51:        register char *stem, *template, *dest;
        !            52: {
        !            53:        while(*template){
        !            54:                if(PERCENT(*template)){
        !            55:                        template++;
        !            56:                        while(*stem)
        !            57:                                *dest++ = *stem++;
        !            58:                } else
        !            59:                        *dest++ = *template++;
        !            60:        }
        !            61:        *dest = 0;
        !            62: }

unix.superglobalmegacorp.com

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