diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2020-06-20 11:30:56 -0700 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2020-06-20 11:30:56 -0700 |
commit | 955516759cfed29122439938632964fed4f8a347 (patch) | |
tree | 6cc0c6300e2b3d5b4e0c08103ecd9c9e939bc1c8 /sys/cmd/rc/var.c | |
parent | 91c673b37782d4cd90e5cf9a8e4491723e6c04bf (diff) |
feat: file globbing in shell. added dynamic.mk
Diffstat (limited to 'sys/cmd/rc/var.c')
-rw-r--r-- | sys/cmd/rc/var.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/sys/cmd/rc/var.c b/sys/cmd/rc/var.c index ef339d7..d442369 100644 --- a/sys/cmd/rc/var.c +++ b/sys/cmd/rc/var.c @@ -73,10 +73,13 @@ newvar(char *name, Var *link) Var *v; alloc(v); - v->name = name; - v->val = 0; - v->func = nil; - v->link = link; + v->name = name; + v->val = 0; + v->func = nil; + v->funcnew = 0; + v->new = 0; + v->update = nil; + v->link = link; return v; } @@ -106,3 +109,21 @@ vlookup(char *name) return v; return gvlookup(name); } + +static +void +set(char *name, Word *val, int call) +{ + Var *v = vlookup(name); + freelist(v->val); + v->val = val; + v->new = 1; + if (call && v->update) + v->update(v); +} + +void +setvar(char *name, Word *val) +{ + set(name, val, 1); +} |