xref: /plan9/sys/src/cmd/mk/var.c (revision 4de34a7edde43207e841ec91ecd12e6cf5f5ebe7)
13e12c5d1SDavid du Colombier #include	"mk.h"
23e12c5d1SDavid du Colombier 
33e12c5d1SDavid du Colombier void
setvar(char * name,void * value)47dd7cddfSDavid du Colombier setvar(char *name, void *value)
53e12c5d1SDavid du Colombier {
6*4de34a7eSDavid du Colombier 	symlook(name, S_VAR, value)->u.ptr = value;
77dd7cddfSDavid du Colombier 	symlook(name, S_MAKEVAR, (void*)"");
83e12c5d1SDavid du Colombier }
93e12c5d1SDavid du Colombier 
103e12c5d1SDavid du Colombier static void
print1(Symtab * s)113e12c5d1SDavid du Colombier print1(Symtab *s)
123e12c5d1SDavid du Colombier {
133e12c5d1SDavid du Colombier 	Word *w;
143e12c5d1SDavid du Colombier 
157dd7cddfSDavid du Colombier 	Bprint(&bout, "\t%s=", s->name);
16*4de34a7eSDavid du Colombier 	for (w = s->u.ptr; w; w = w->next)
177dd7cddfSDavid du Colombier 		Bprint(&bout, "'%s'", w->s);
187dd7cddfSDavid du Colombier 	Bprint(&bout, "\n");
193e12c5d1SDavid du Colombier }
203e12c5d1SDavid du Colombier 
213e12c5d1SDavid du Colombier void
dumpv(char * s)223e12c5d1SDavid du Colombier dumpv(char *s)
233e12c5d1SDavid du Colombier {
247dd7cddfSDavid du Colombier 	Bprint(&bout, "%s:\n", s);
253e12c5d1SDavid du Colombier 	symtraverse(S_VAR, print1);
263e12c5d1SDavid du Colombier }
273e12c5d1SDavid du Colombier 
283e12c5d1SDavid du Colombier char *
shname(char * a)293e12c5d1SDavid du Colombier shname(char *a)
303e12c5d1SDavid du Colombier {
313e12c5d1SDavid du Colombier 	Rune r;
323e12c5d1SDavid du Colombier 	int n;
333e12c5d1SDavid du Colombier 
343e12c5d1SDavid du Colombier 	while (*a) {
353e12c5d1SDavid du Colombier 		n = chartorune(&r, a);
363e12c5d1SDavid du Colombier 		if (!WORDCHR(r))
373e12c5d1SDavid du Colombier 			break;
383e12c5d1SDavid du Colombier 		a += n;
393e12c5d1SDavid du Colombier 	}
403e12c5d1SDavid du Colombier 	return a;
413e12c5d1SDavid du Colombier }
42