Annotation of researchv10no/cmd/mk/src/match.c, revision 1.1.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.