Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_unix/sys/src/cmd/mk/match.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include	"mk.h"
2
 
3
int
4
match(char *name, char *template, char *stem)
5
{
6
	Rune r;
7
	int n;
8
 
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
}
30
 
31
void
32
subst(char *stem, char *template, char *dest, int dlen)
33
{
34
	Rune r;
35
	char *s, *e;
36
	int n;
37
 
38
	e = dest+dlen-1;
39
	while(*template){
40
		n = chartorune(&r, template);
41
		if (PERCENT(r)) {
42
			template += n;
43
			for (s = stem; *s; s++)
44
				if(dest < e)
45
					*dest++ = *s;
46
		} else
47
			while (n--){
48
				if(dest < e)
49
					*dest++ = *template;
50
				template++;
51
			}
52
	}
53
	*dest = 0;
54
}