diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2016-11-07 23:07:21 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-11-07 23:07:21 +0100 |
commit | 26ad94bedcc6a4aa3feb07ea032709bcd517ee46 (patch) | |
tree | b37f58cf17146d1b6945fa3991585e81223ba286 | |
parent | 62b717b75ebff3ab00aae2fee0087a8106208a39 (diff) | |
download | busybox-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.c | 9 |
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); |