From 109ee5d33694a03cda3424b4846584250832ba8e Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 16 Mar 2014 18:41:11 +0100 Subject: ash: make "locak VAR" unset VAR (bash does that) Signed-off-by: Denys Vlasenko --- shell/ash.c | 3 +++ shell/ash_test/ash-misc/local1.right | 4 ++++ shell/ash_test/ash-misc/local1.tests | 11 +++++++++++ 3 files changed, 18 insertions(+) create mode 100644 shell/ash_test/ash-misc/local1.right create mode 100755 shell/ash_test/ash-misc/local1.tests (limited to 'shell') diff --git a/shell/ash.c b/shell/ash.c index 04ba447b1..7a097c814 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -8960,6 +8960,9 @@ mklocal(char *name) vp->flags |= VSTRFIXED|VTEXTFIXED; if (eq) setvareq(name, 0); + else + /* "local VAR" unsets VAR: */ + setvar(name, NULL, 0); } } lvp->vp = vp; diff --git a/shell/ash_test/ash-misc/local1.right b/shell/ash_test/ash-misc/local1.right new file mode 100644 index 000000000..a2d121df6 --- /dev/null +++ b/shell/ash_test/ash-misc/local1.right @@ -0,0 +1,4 @@ +A1:'A' +A2:'' +A3:'' +A4:'A' diff --git a/shell/ash_test/ash-misc/local1.tests b/shell/ash_test/ash-misc/local1.tests new file mode 100755 index 000000000..b1e675059 --- /dev/null +++ b/shell/ash_test/ash-misc/local1.tests @@ -0,0 +1,11 @@ +a=A +f() { + local a + # the above line unsets $a + echo "A2:'$a'" + unset a + echo "A3:'$a'" +} +echo "A1:'$a'" +f +echo "A4:'$a'" -- cgit v1.2.3