xref: /plan9-contrib/sys/src/cmd/mk/arc.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1 #include	"mk.h"
2 
3 Arc *
4 newarc(Node *n, Rule *r, char *stem, Resub *match)
5 {
6 	Arc *a;
7 
8 	a = (Arc *)Malloc(sizeof(Arc));
9 	a->n = n;
10 	a->r = r;
11 	a->stem = strdup(stem);
12 	memmove((char *)a->match, (char *)match, (COUNT)sizeof a->match);
13 	a->next = 0;
14 	a->flag = 0;
15 	a->prog = r->prog;
16 	return(a);
17 }
18 
19 void
20 dumpa(char *s, Arc *a)
21 {
22 	char buf[1024];
23 
24 	sprint(buf, "%s    ", (*s == ' ')? s:"");
25 	Bprint(&stdout, "%sArc@%ld: n=%ld r=%ld flag=0x%x stem='%s'",
26 		s, a, a->n, a->r, a->flag, a->stem);
27 	if(a->prog)
28 		Bprint(&stdout, " prog='%s'", a->prog);
29 	Bprint(&stdout, "\n");
30 	if(a->n)
31 		dumpn(buf, a->n);
32 }
33 
34 void
35 nrep(void)
36 {
37 	Symtab *sym;
38 	Word *w;
39 
40 	if(sym = symlook("NREP", S_VAR, (char *)0)) {
41 		w = (Word *) sym->value;
42 		if (w && w->s && *w->s)
43 			nreps = atoi(w->s);
44 	}
45 	if(nreps < 1)
46 		nreps = 1;
47 	if(DEBUG(D_GRAPH))
48 		Bprint(&stdout, "nreps = %d\n", nreps);
49 }
50