mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-21 13:00:57 +01:00
25145: make sure XTRACE output is redirected with stderr
This commit is contained in:
parent
4814830da2
commit
c17b4c8d77
3 changed files with 19 additions and 15 deletions
15
Src/exec.c
15
Src/exec.c
|
|
@ -2165,7 +2165,7 @@ execcmd(Estate state, int input, int output, int how, int last1)
|
|||
LinkList redir;
|
||||
wordcode code;
|
||||
Wordcode beg = state->pc, varspc;
|
||||
FILE *oxtrerr = xtrerr;
|
||||
FILE *oxtrerr = xtrerr, *newxtrerr = NULL;
|
||||
|
||||
doneps4 = 0;
|
||||
redir = (wc_code(*state->pc) == WC_REDIR ? ecgetredirs(state) : NULL);
|
||||
|
|
@ -2675,10 +2675,10 @@ execcmd(Estate state, int input, int output, int how, int last1)
|
|||
fflush(xtrerr);
|
||||
if (isset(XTRACE) && xtrerr == stderr &&
|
||||
(type < WC_SUBSH || type == WC_TIMED)) {
|
||||
if (!(xtrerr = fdopen(movefd(dup(fileno(stderr))), "w")))
|
||||
xtrerr = stderr;
|
||||
else
|
||||
if ((newxtrerr = fdopen(movefd(dup(fileno(stderr))), "w"))) {
|
||||
xtrerr = newxtrerr;
|
||||
fdtable[fileno(xtrerr)] = FDT_XTRACE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add pipeline input/output to mnodes */
|
||||
|
|
@ -2885,6 +2885,7 @@ execcmd(Estate state, int input, int output, int how, int last1)
|
|||
if (mfds[i] && mfds[i]->ct >= 2)
|
||||
closemn(mfds, i);
|
||||
|
||||
xtrerr = stderr;
|
||||
if (nullexec) {
|
||||
if (nullexec == 1) {
|
||||
/*
|
||||
|
|
@ -3099,9 +3100,9 @@ execcmd(Estate state, int input, int output, int how, int last1)
|
|||
fixfds(save);
|
||||
|
||||
done:
|
||||
if (xtrerr != oxtrerr) {
|
||||
fil = fileno(xtrerr);
|
||||
fclose(xtrerr);
|
||||
if (newxtrerr) {
|
||||
fil = fileno(newxtrerr);
|
||||
fclose(newxtrerr);
|
||||
xtrerr = oxtrerr;
|
||||
zclose(fil);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue