xref: /plan9/sys/src/cmd/mk/var.c (revision 4de34a7edde43207e841ec91ecd12e6cf5f5ebe7)
1 #include	"mk.h"
2 
3 void
setvar(char * name,void * value)4 setvar(char *name, void *value)
5 {
6 	symlook(name, S_VAR, value)->u.ptr = value;
7 	symlook(name, S_MAKEVAR, (void*)"");
8 }
9 
10 static void
print1(Symtab * s)11 print1(Symtab *s)
12 {
13 	Word *w;
14 
15 	Bprint(&bout, "\t%s=", s->name);
16 	for (w = s->u.ptr; w; w = w->next)
17 		Bprint(&bout, "'%s'", w->s);
18 	Bprint(&bout, "\n");
19 }
20 
21 void
dumpv(char * s)22 dumpv(char *s)
23 {
24 	Bprint(&bout, "%s:\n", s);
25 	symtraverse(S_VAR, print1);
26 }
27 
28 char *
shname(char * a)29 shname(char *a)
30 {
31 	Rune r;
32 	int n;
33 
34 	while (*a) {
35 		n = chartorune(&r, a);
36 		if (!WORDCHR(r))
37 			break;
38 		a += n;
39 	}
40 	return a;
41 }
42