From efea9d2819165b414b81a47c8227ae007bd5382a Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Thu, 9 Apr 2009 13:43:11 +0000 Subject: hush: fix EXIT trap recursion case; check redirection failures function old new delta run_pipe 1299 1328 +29 hush_exit 90 102 +12 hush_main 1172 1179 +7 run_list 1226 1225 -1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/1 up/down: 48/-1) Total: 47 bytes --- shell/hush_test/hush-misc/exit1.right | 1 + shell/hush_test/hush-misc/exit1.tests | 4 ++++ shell/hush_test/hush-misc/redir3.right | 14 ++++++++++++++ shell/hush_test/hush-misc/redir3.tests | 9 +++++++++ 4 files changed, 28 insertions(+) create mode 100644 shell/hush_test/hush-misc/exit1.right create mode 100755 shell/hush_test/hush-misc/exit1.tests create mode 100644 shell/hush_test/hush-misc/redir3.right create mode 100755 shell/hush_test/hush-misc/redir3.tests (limited to 'shell/hush_test/hush-misc') diff --git a/shell/hush_test/hush-misc/exit1.right b/shell/hush_test/hush-misc/exit1.right new file mode 100644 index 000000000..dd2cfc279 --- /dev/null +++ b/shell/hush_test/hush-misc/exit1.right @@ -0,0 +1 @@ +Once diff --git a/shell/hush_test/hush-misc/exit1.tests b/shell/hush_test/hush-misc/exit1.tests new file mode 100755 index 000000000..41e0d092d --- /dev/null +++ b/shell/hush_test/hush-misc/exit1.tests @@ -0,0 +1,4 @@ +trap "echo Not shown" EXIT +(exit) # must be silent +trap "echo Once; exit" EXIT +{ exit; } diff --git a/shell/hush_test/hush-misc/redir3.right b/shell/hush_test/hush-misc/redir3.right new file mode 100644 index 000000000..3d20bbf68 --- /dev/null +++ b/shell/hush_test/hush-misc/redir3.right @@ -0,0 +1,14 @@ +hush: can't open '/does/not/exist': No such file or directory +One:1 +hush: can't open '/cant/be/created': No such file or directory +One:1 +Ok +hush: can't open '/cant/be/created': No such file or directory +Zero:0 +hush: can't open '/cant/be/created': No such file or directory +One:1 +hush: can't open '/cant/be/created': No such file or directory +One:1 +hush: can't open '/cant/be/created': No such file or directory +Zero:0 +Done diff --git a/shell/hush_test/hush-misc/redir3.tests b/shell/hush_test/hush-misc/redir3.tests new file mode 100755 index 000000000..7c28e4324 --- /dev/null +++ b/shell/hush_test/hush-misc/redir3.tests @@ -0,0 +1,9 @@ +echo Error >/does/not/exist; echo One:$? +t=BAD +t=Ok >>/cant/be/created; echo One:$? +echo $t +! >/cant/be/created; echo Zero:$? +exec >/cant/be/created; echo One:$? +exec /bin/true >/cant/be/created; echo One:$? +! exec /bin/true >/cant/be/created; echo Zero:$? +echo Done -- cgit v1.2.3