Blob
1 #include "mk.h"3 int4 match(char *name, char *template, char *stem)5 {6 Rune r;7 int n;9 while(*name && *template){10 n = chartorune(&r, template);11 if (PERCENT(r))12 break;13 while (n--)14 if(*name++ != *template++)15 return 0;16 }17 if(!PERCENT(*template))18 return 0;19 n = strlen(name)-strlen(template+1);20 if (n < 0)21 return 0;22 if (strcmp(template+1, name+n))23 return 0;24 strncpy(stem, name, n);25 stem[n] = 0;26 if(*template == '&')27 return !charin(stem, "./");28 return 1;29 }31 void32 subst(char *stem, char *template, char *dest)33 {34 Rune r;35 char *s;36 int n;38 while(*template){39 n = chartorune(&r, template);40 if (PERCENT(r)) {41 template += n;42 for (s = stem; *s; s++)43 *dest++ = *s;44 } else45 while (n--)46 *dest++ = *template++;47 }48 *dest = 0;49 }