From b28d4c3462e6b0e66322503f5ef0b941e0bb9cb8 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 25 Jul 2017 16:29:36 +0200 Subject: ash: [VAR] Move unsetvar functionality into setvareq Upstream commit: Date: Tue, 25 May 2010 20:55:05 +0800 [VAR] Move unsetvar functionality into setvareq This patch moves the unsetvar code into setvareq so that we can no have a pathological case of an unset variable hanging around unless it has a bit pinning it like VEXPORT. Signed-off-by: Herbert Xu function old new delta setvareq 227 303 +76 expmeta 517 521 +4 localcmd 364 366 +2 unsetcmd 96 76 -20 unsetvar 129 7 -122 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/2 up/down: 82/-142) Total: -60 bytes Signed-off-by: Denys Vlasenko --- shell/ash_test/ash-vars/readonly0.right | 2 +- shell/ash_test/ash-vars/unset.right | 17 ++++++++++++++ shell/ash_test/ash-vars/unset.tests | 40 +++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 shell/ash_test/ash-vars/unset.right create mode 100755 shell/ash_test/ash-vars/unset.tests (limited to 'shell/ash_test') diff --git a/shell/ash_test/ash-vars/readonly0.right b/shell/ash_test/ash-vars/readonly0.right index f3a6bde..ecc4054 100644 --- a/shell/ash_test/ash-vars/readonly0.right +++ b/shell/ash_test/ash-vars/readonly0.right @@ -10,4 +10,4 @@ Fail:2 ./readonly0.tests: export: line 27: a: is read only Fail:2 -Fail:1 +./readonly0.tests: unset: line 44: a: is read only diff --git a/shell/ash_test/ash-vars/unset.right b/shell/ash_test/ash-vars/unset.right new file mode 100644 index 0000000..77d5abe --- /dev/null +++ b/shell/ash_test/ash-vars/unset.right @@ -0,0 +1,17 @@ +./unset.tests: unset: line 3: -: bad variable name +2 +./unset.tests: unset: line 5: illegal option -m +2 +0 +___ +0 f g +0 g +0 +___ +0 f g +0 +0 f g +0 +___ +./unset.tests: unset: line 36: VAR_RO: is read only +2 f g diff --git a/shell/ash_test/ash-vars/unset.tests b/shell/ash_test/ash-vars/unset.tests new file mode 100755 index 0000000..11b3927 --- /dev/null +++ b/shell/ash_test/ash-vars/unset.tests @@ -0,0 +1,40 @@ +# check invalid options are rejected +# bash: in posix mode, aborts if non-interactive; using subshell to avoid that +(unset -) +echo $? +(unset -m a b c) +echo $? + +# check funky usage +unset +echo $? + +# check normal usage +echo ___ +f=f g=g +echo $? $f $g +unset f +echo $? $f $g +unset g +echo $? $f $g + +echo ___ +f=f g=g +echo $? $f $g +unset f g +echo $? $f $g +f=f g=g +echo $? $f $g +unset -v f g +echo $? $f $g + +# check read only vars +echo ___ +f=f g=g +VAR_RO=1 +readonly VAR_RO +(unset VAR_RO) +echo $? $f $g +# not testing "do variables survive error halfway through unset" since unset aborts +# unset f VAR_RO g +#echo $? $f $g -- cgit v1.1