var.c 530 B

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