mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-02 10:01:11 +02:00
zsh-workers/8187
This commit is contained in:
parent
bb71f141bf
commit
621bcdd767
2 changed files with 13 additions and 4 deletions
15
Src/exec.c
15
Src/exec.c
|
@ -1908,14 +1908,23 @@ execcmd(Cmd cmd, int input, int output, int how, int last1)
|
|||
case MERGEOUT:
|
||||
if(fn->fd2 < 10)
|
||||
closemn(mfds, fn->fd2);
|
||||
fil = dup(fn->fd2);
|
||||
if(fn->fd2 > 9) {
|
||||
fil = -1;
|
||||
errno = EBADF;
|
||||
} else {
|
||||
int fd = fn->fd2;
|
||||
if(fd == -2)
|
||||
fd = (fn->type == MERGEOUT) ? coprocout : coprocin;
|
||||
fil = dup(fd);
|
||||
}
|
||||
if (fil == -1) {
|
||||
char fdstr[4];
|
||||
|
||||
closemnodes(mfds);
|
||||
fixfds(save);
|
||||
sprintf(fdstr, "%d", fn->fd2);
|
||||
zerr("%s: %e", fdstr, errno);
|
||||
if(fn->fd2 != -2)
|
||||
sprintf(fdstr, "%d", fn->fd2);
|
||||
zerr("%s: %e", fn->fd2 == -2 ? "coprocess" : fdstr, errno);
|
||||
execerr();
|
||||
}
|
||||
addfd(forked, save, mfds, fn->fd1, fil, fn->type == MERGEOUT);
|
||||
|
|
|
@ -1580,7 +1580,7 @@ xpandredir(struct redir *fn, LinkList tab)
|
|||
if (s[0] == '-' && !s[1])
|
||||
fn->type = CLOSE;
|
||||
else if (s[0] == 'p' && !s[1])
|
||||
fn->fd2 = (fn->type == MERGEOUT) ? coprocout : coprocin;
|
||||
fn->fd2 = -2;
|
||||
else {
|
||||
while (idigit(*s))
|
||||
s++;
|
||||
|
|
Loading…
Reference in a new issue