[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox-cvs
Subject:    [git commit] ash: make "locak VAR" unset VAR (bash does that)
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2014-03-16 17:41:11
Message-ID: 20140316174137.7FC689BF8A () busybox ! osuosl ! org
[Download RAW message or body]

commit: http://git.busybox.net/busybox/commit/?id=109ee5d33694a03cda3424b4846584250832ba8e
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 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(+), 0 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 04ba447..7a097c8 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 0000000..a2d121d
--- /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 0000000..b1e6750
--- /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'"
_______________________________________________
busybox-cvs mailing list
busybox-cvs@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox-cvs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic