aboutsummaryrefslogtreecommitdiff
path: root/bin/sh/var.c
diff options
context:
space:
mode:
authorJilles Tjoelker <jilles@FreeBSD.org>2011-01-01 13:26:18 +0000
committerJilles Tjoelker <jilles@FreeBSD.org>2011-01-01 13:26:18 +0000
commit850460c0f1891b03bde0193ca5af32fd6ed2ba53 (patch)
tree9ba2056874948170151c7134c7d81e6ce37af27b /bin/sh/var.c
parent5610751bf13f4f617c7821418b748952a1a5301a (diff)
Notes
Diffstat (limited to 'bin/sh/var.c')
-rw-r--r--bin/sh/var.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/bin/sh/var.c b/bin/sh/var.c
index 6c0618f3e5832..e841647ed779b 100644
--- a/bin/sh/var.c
+++ b/bin/sh/var.c
@@ -333,6 +333,8 @@ setvareq(char *s, int flags)
len = strchr(s, '=') - s;
error("%.*s: is read only", len, s);
}
+ if (flags & VNOSET)
+ return;
INTOFF;
if (vp->func && (flags & VNOFUNC) == 0)
@@ -365,6 +367,8 @@ setvareq(char *s, int flags)
}
}
/* not found */
+ if (flags & VNOSET)
+ return;
vp = ckmalloc(sizeof (*vp));
vp->flags = flags;
vp->text = s;
@@ -386,13 +390,13 @@ setvareq(char *s, int flags)
*/
void
-listsetvar(struct strlist *list)
+listsetvar(struct strlist *list, int flags)
{
struct strlist *lp;
INTOFF;
for (lp = list ; lp ; lp = lp->next) {
- setvareq(savestr(lp->text), 0);
+ setvareq(savestr(lp->text), flags);
}
INTON;
}