diff options
Diffstat (limited to 'src/cmd/mk/var.c')
-rw-r--r-- | src/cmd/mk/var.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/cmd/mk/var.c b/src/cmd/mk/var.c new file mode 100644 index 00000000..8429918d --- /dev/null +++ b/src/cmd/mk/var.c @@ -0,0 +1,41 @@ +#include "mk.h" + +void +setvar(char *name, void *value) +{ + symlook(name, S_VAR, value)->value = value; + symlook(name, S_MAKEVAR, (void*)""); +} + +static void +print1(Symtab *s) +{ + Word *w; + + Bprint(&bout, "\t%s=", s->name); + for (w = (Word *) s->value; w; w = w->next) + Bprint(&bout, "'%s'", w->s); + Bprint(&bout, "\n"); +} + +void +dumpv(char *s) +{ + Bprint(&bout, "%s:\n", s); + symtraverse(S_VAR, print1); +} + +char * +shname(char *a) +{ + Rune r; + int n; + + while (*a) { + n = chartorune(&r, a); + if (!WORDCHR(r)) + break; + a += n; + } + return a; +} |