diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-04 15:24:49 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-04 15:24:49 +0200 |
| commit | f8cdc7a2bcd0a9d067f5ca7da8ce7bc9c98cf34e (patch) | |
| tree | 27c49c304513d625e38abcd0df2c55792dcfbc7f /shell | |
| parent | 7344755823df5510b089cc5db30f8c1cdebdc5a2 (diff) | |
| download | busybox-w32-f8cdc7a2bcd0a9d067f5ca7da8ce7bc9c98cf34e.tar.gz busybox-w32-f8cdc7a2bcd0a9d067f5ca7da8ce7bc9c98cf34e.tar.bz2 busybox-w32-f8cdc7a2bcd0a9d067f5ca7da8ce7bc9c98cf34e.zip | |
ash: BASH_XTRACEFD bashism
Based on patch by Johannes Schindelin <johannes.schindelin@gmx.de>
function old new delta
evalcommand 1447 1500 +53
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/ash.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/shell/ash.c b/shell/ash.c index 2ad86c187..e80425f5e 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -188,6 +188,7 @@ | |||
| 188 | #define BASH_PIPEFAIL ENABLE_ASH_BASH_COMPAT | 188 | #define BASH_PIPEFAIL ENABLE_ASH_BASH_COMPAT |
| 189 | #define BASH_HOSTNAME_VAR ENABLE_ASH_BASH_COMPAT | 189 | #define BASH_HOSTNAME_VAR ENABLE_ASH_BASH_COMPAT |
| 190 | #define BASH_SHLVL_VAR ENABLE_ASH_BASH_COMPAT | 190 | #define BASH_SHLVL_VAR ENABLE_ASH_BASH_COMPAT |
| 191 | #define BASH_XTRACEFD ENABLE_ASH_BASH_COMPAT | ||
| 191 | 192 | ||
| 192 | #if defined(__ANDROID_API__) && __ANDROID_API__ <= 24 | 193 | #if defined(__ANDROID_API__) && __ANDROID_API__ <= 24 |
| 193 | /* Bionic at least up to version 24 has no glob() */ | 194 | /* Bionic at least up to version 24 has no glob() */ |
| @@ -9792,6 +9793,15 @@ evalcommand(union node *cmd, int flags) | |||
| 9792 | expredir(cmd->ncmd.redirect); | 9793 | expredir(cmd->ncmd.redirect); |
| 9793 | redir_stop = pushredir(cmd->ncmd.redirect); | 9794 | redir_stop = pushredir(cmd->ncmd.redirect); |
| 9794 | preverrout_fd = 2; | 9795 | preverrout_fd = 2; |
| 9796 | if (BASH_XTRACEFD && xflag) { | ||
| 9797 | /* NB: bash closes fd == $BASH_XTRACEFD when it is changed. | ||
| 9798 | * we do not emulate this. We only use its value. | ||
| 9799 | */ | ||
| 9800 | const char *xtracefd = lookupvar("BASH_XTRACEFD"); | ||
| 9801 | if (xtracefd && is_number(xtracefd)) | ||
| 9802 | preverrout_fd = atoi(xtracefd); | ||
| 9803 | |||
| 9804 | } | ||
| 9795 | status = redirectsafe(cmd->ncmd.redirect, REDIR_PUSH | REDIR_SAVEFD2); | 9805 | status = redirectsafe(cmd->ncmd.redirect, REDIR_PUSH | REDIR_SAVEFD2); |
| 9796 | 9806 | ||
| 9797 | path = vpath.var_text; | 9807 | path = vpath.var_text; |
