diff options
author | Ron Yorston <rmy@pobox.com> | 2017-01-03 11:18:23 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-01-03 11:18:23 +0100 |
commit | ea7d2f6ec0596789fc5b2e3fca3b7a602bfa2c26 (patch) | |
tree | 80bf9f7fae0b7dc5c8cd0047129ce792ceb37ec9 /shell/hush_test | |
parent | bddbeb82bfeac8d4795ab995eae09109c048e9df (diff) | |
download | busybox-ea7d2f6ec0596789fc5b2e3fca3b7a602bfa2c26.tar.gz |
ash: fix error code regression
The commit 'ash,hush: set exit code 127 in "sh /does/not/exist" case'
only partly implemented the dash commit '[ERROR] Allow the originator
of EXERROR to set the exit status'. This resulted in incorrect error
codes for a syntax error:
$ )
$ echo $?
0
or a redirection error for a special builtin:
$ rm -f xxx
$ eval cat <xxx
$ echo $?
0
Signed-off-by: Ron Yorston <rmy@pobox.com>
Reported-by: Martijn Dekker <martijn@inlv.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r-- | shell/hush_test/hush-misc/exitcode2.right | 4 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/exitcode2.tests | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/shell/hush_test/hush-misc/exitcode2.right b/shell/hush_test/hush-misc/exitcode2.right new file mode 100644 index 000000000..0a57b9b1b --- /dev/null +++ b/shell/hush_test/hush-misc/exitcode2.right @@ -0,0 +1,4 @@ +hush: syntax error: unexpected ) +Done:2 +hush: can't open 'does_not_exist': No such file or directory +Done:1 diff --git a/shell/hush_test/hush-misc/exitcode2.tests b/shell/hush_test/hush-misc/exitcode2.tests new file mode 100755 index 000000000..79a6ebd50 --- /dev/null +++ b/shell/hush_test/hush-misc/exitcode2.tests @@ -0,0 +1,12 @@ +# syntax error should return status 2 +cat >test.sh <<EOF +) +EOF +chmod +x test.sh +$THIS_SH ./test.sh +echo Done:$? +rm -f test.sh + +# redirection error with special builtin should return status 1 +(eval cat <does_not_exist) +echo Done:$? |