aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-08-04 15:24:49 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-08-04 15:24:49 +0200
commitf8cdc7a2bcd0a9d067f5ca7da8ce7bc9c98cf34e (patch)
tree27c49c304513d625e38abcd0df2c55792dcfbc7f
parent7344755823df5510b089cc5db30f8c1cdebdc5a2 (diff)
downloadbusybox-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>
-rw-r--r--shell/ash.c10
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;