ash: fix error code regression
authorRon Yorston <rmy@pobox.com>
Tue, 3 Jan 2017 10:18:23 +0000 (11:18 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 3 Jan 2017 10:18:23 +0000 (11:18 +0100)
commitea7d2f6ec0596789fc5b2e3fca3b7a602bfa2c26
tree80bf9f7fae0b7dc5c8cd0047129ce792ceb37ec9
parentbddbeb82bfeac8d4795ab995eae09109c048e9df
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>
shell/ash.c
shell/ash_test/ash-misc/exitcode2.right [new file with mode: 0644]
shell/ash_test/ash-misc/exitcode2.tests [new file with mode: 0755]
shell/hush_test/hush-misc/exitcode2.right [new file with mode: 0644]
shell/hush_test/hush-misc/exitcode2.tests [new file with mode: 0755]