aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2016-11-07 23:07:21 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2016-11-07 23:07:21 +0100
commit26ad94bedcc6a4aa3feb07ea032709bcd517ee46 (patch)
treeb37f58cf17146d1b6945fa3991585e81223ba286
parent62b717b75ebff3ab00aae2fee0087a8106208a39 (diff)
downloadbusybox-w32-26ad94bedcc6a4aa3feb07ea032709bcd517ee46.tar.gz
busybox-w32-26ad94bedcc6a4aa3feb07ea032709bcd517ee46.tar.bz2
busybox-w32-26ad94bedcc6a4aa3feb07ea032709bcd517ee46.zip
hush: "wait $!; echo $?" should return 127 if $! already exited
It would be nice to provide bash-like "remember las exitcode" thingy, but it's a bit complex. For now, match ash and dash. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/hush.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/shell/hush.c b/shell/hush.c
index b842d6eec..7683a3749 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -9636,12 +9636,13 @@ static int FAST_FUNC builtin_wait(char **argv)
9636 /* "wait $!" but last bg task has already exited. Try: 9636 /* "wait $!" but last bg task has already exited. Try:
9637 * (sleep 1; exit 3) & sleep 2; echo $?; wait $!; echo $? 9637 * (sleep 1; exit 3) & sleep 2; echo $?; wait $!; echo $?
9638 * In bash it prints exitcode 0, then 3. 9638 * In bash it prints exitcode 0, then 3.
9639 * In dash, it is 127.
9639 */ 9640 */
9640 ret = 0; /* FIXME */ 9641 /* ret = G.last_bg_pid_exitstatus - FIXME */
9641 continue; 9642 } else {
9643 /* Example: "wait 1". mimic bash message */
9644 bb_error_msg("wait: pid %d is not a child of this shell", (int)pid);
9642 } 9645 }
9643 /* Example: "wait 1". mimic bash message */
9644 bb_error_msg("wait: pid %d is not a child of this shell", (int)pid);
9645 } else { 9646 } else {
9646 /* ??? */ 9647 /* ??? */
9647 bb_perror_msg("wait %s", *argv); 9648 bb_perror_msg("wait %s", *argv);