|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.