redirect
(!cmd->ncmd.backgnd || cmd->ncmd.redirect == NULL)) {
redirect(cmd->ncmd.redirect, REDIR_KEEP | (saved =
redirect(cmd->ncmd.redirect, mode);
redirect(cmd->ncmd.redirect,
expredir(n->nredir.redirect);
if (xflag && n->nredir.redirect) {
for (rn = n->nredir.redirect; rn; rn = rn->nfile.next)
redirect(n->nredir.redirect, REDIR_KEEP);
if (!backgnd && xflag && n->nredir.redirect) {
expredir(n->nredir.redirect);
if (xflag && n->nredir.redirect) {
for (rn = n->nredir.redirect; rn != NULL; rn = rn->nfile.next)
redirect(n->nredir.redirect, REDIR_PUSH | REDIR_KEEP);
expredir(cmd->ncmd.redirect);
for (rn = cmd->ncmd.redirect; rn; rn = rn->nfile.next)
cmdlist(n->ncmd.redirect, 0);
n3->nredir.redirect = NULL;
n1->nredir.redirect = NULL;
n1->nredir.redirect = redir;
n->ncmd.redirect = redir;
void redirect(union node *, int);
shredir(n->nredir.redirect, fp, n->nredir.n == NULL);
shredir(cmd->ncmd.redirect, fp, first);
shredir(cmd->ncmd.redirect, fp, 1);
if (te->ctx && te->client && te->client->redirect) {
update_tcb = te->client->redirect(te->ctx, old, new,
int (*redirect)(void *ctx, struct rtentry *old,
goto redirect;
redirect:
redirect:
goto redirect;
goto redirect;
goto redirect;