xref: /plan9-contrib/sys/src/cmd/mk/arc.c (revision 4de34a7edde43207e841ec91ecd12e6cf5f5ebe7)
13e12c5d1SDavid du Colombier #include	"mk.h"
23e12c5d1SDavid du Colombier 
33e12c5d1SDavid du Colombier Arc *
newarc(Node * n,Rule * r,char * stem,Resub * match)43e12c5d1SDavid du Colombier newarc(Node *n, Rule *r, char *stem, Resub *match)
53e12c5d1SDavid du Colombier {
63e12c5d1SDavid du Colombier 	Arc *a;
73e12c5d1SDavid du Colombier 
83e12c5d1SDavid du Colombier 	a = (Arc *)Malloc(sizeof(Arc));
93e12c5d1SDavid du Colombier 	a->n = n;
103e12c5d1SDavid du Colombier 	a->r = r;
113e12c5d1SDavid du Colombier 	a->stem = strdup(stem);
127dd7cddfSDavid du Colombier 	rcopy(a->match, match, NREGEXP);
133e12c5d1SDavid du Colombier 	a->next = 0;
143e12c5d1SDavid du Colombier 	a->flag = 0;
153e12c5d1SDavid du Colombier 	a->prog = r->prog;
163e12c5d1SDavid du Colombier 	return(a);
173e12c5d1SDavid du Colombier }
183e12c5d1SDavid du Colombier 
193e12c5d1SDavid du Colombier void
dumpa(char * s,Arc * a)203e12c5d1SDavid du Colombier dumpa(char *s, Arc *a)
213e12c5d1SDavid du Colombier {
223e12c5d1SDavid du Colombier 	char buf[1024];
233e12c5d1SDavid du Colombier 
247dd7cddfSDavid du Colombier 	Bprint(&bout, "%sArc@%p: n=%p r=%p flag=0x%x stem='%s'",
253e12c5d1SDavid du Colombier 		s, a, a->n, a->r, a->flag, a->stem);
263e12c5d1SDavid du Colombier 	if(a->prog)
277dd7cddfSDavid du Colombier 		Bprint(&bout, " prog='%s'", a->prog);
287dd7cddfSDavid du Colombier 	Bprint(&bout, "\n");
297dd7cddfSDavid du Colombier 
307dd7cddfSDavid du Colombier 	if(a->n){
317dd7cddfSDavid du Colombier 		snprint(buf, sizeof(buf), "%s    ", (*s == ' ')? s:"");
323e12c5d1SDavid du Colombier 		dumpn(buf, a->n);
333e12c5d1SDavid du Colombier 	}
347dd7cddfSDavid du Colombier }
353e12c5d1SDavid du Colombier 
363e12c5d1SDavid du Colombier void
nrep(void)373e12c5d1SDavid du Colombier nrep(void)
383e12c5d1SDavid du Colombier {
393e12c5d1SDavid du Colombier 	Symtab *sym;
403e12c5d1SDavid du Colombier 	Word *w;
413e12c5d1SDavid du Colombier 
427dd7cddfSDavid du Colombier 	sym = symlook("NREP", S_VAR, 0);
437dd7cddfSDavid du Colombier 	if(sym){
44*4de34a7eSDavid du Colombier 		w = sym->u.ptr;
453e12c5d1SDavid du Colombier 		if (w && w->s && *w->s)
463e12c5d1SDavid du Colombier 			nreps = atoi(w->s);
473e12c5d1SDavid du Colombier 	}
483e12c5d1SDavid du Colombier 	if(nreps < 1)
493e12c5d1SDavid du Colombier 		nreps = 1;
503e12c5d1SDavid du Colombier 	if(DEBUG(D_GRAPH))
517dd7cddfSDavid du Colombier 		Bprint(&bout, "nreps = %d\n", nreps);
523e12c5d1SDavid du Colombier }
53