diff options
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); +} |