|
|
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.