diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-01-12 21:02:26 +1100 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2006-01-12 21:02:26 +1100 |
commit | e5f903b9451c6e6a79eee939fcf6558a0b93cf8e (patch) | |
tree | 31614d5cb303ea275d21ad1f9e1e2dada8467c7d /src/funcs/cmv | |
parent | Release 0.5.3. (diff) | |
download | dash-e5f903b9451c6e6a79eee939fcf6558a0b93cf8e.tar.gz dash-e5f903b9451c6e6a79eee939fcf6558a0b93cf8e.zip |
[EVAL] Make eval with empty arguments return 0
On Tue, Jan 10, 2006 at 10:56:23AM +0000, Gerrit Pape wrote: > tags 347232 + patch > quit > > On Mon, Jan 09, 2006 at 04:29:19PM +0100, Marco Nenciarini wrote: > > The problem is here: > > > > # Set the kernel 2.6 option only for fresh install > > test -z "$(GetMenuOpt "kopt" "")" && kopt_2_6="root=$root_device_2_6 ro" > > > > # Extract options for specific kernels > > eval $(ExtractMenuOpts "\(kopt_[a-zA-Z0-9_]\+\)") > > > > If the first test fails and the eval argument is empty then dash > > terminate with exitcode 1. > > > This is a simple testcase: > > tm:~# bash -c "set -e ;/bin/false && : ; eval ''; echo 'END'"; echo $? > > END > > 0 > > tm:~# dash -c "set -e ;/bin/false && : ; eval ''; echo 'END'"; echo $? > > 1 > > > > if you insert any command with successfull exit status before the > > empty eval, all work ok: > > tm:~# bash -c "set -e ;/bin/false && : ; : ; eval ''; echo 'END'"; echo $? > > END > > 0 > > tm:~# dash -c "set -e ;/bin/false && : ; : ; eval ''; echo 'END'"; echo $? > > END > > 0 > > Yes, I can confirm this is a bug in dash. The standard says > > EXIT STATUS > > If there are no arguments, or only null arguments, eval shall > return a zero exit status; otherwise, it shall return the exit > status of the command defined by the string of concatenated > arguments separated by <space>s. > > Hi Herbert, please see http://bugs.debian.org/347232 Changed evalstring to return the exit status instead of evalskip. This allows us to return zero if the string is empty.
Diffstat (limited to 'src/funcs/cmv')
0 files changed, 0 insertions, 0 deletions