ndup
if (redir->ndup.vname) {
expandarg(redir->ndup.vname, &fn, EXP_TILDE);
if (n->ndup.dupfd >= 0)
s[0] = n->ndup.dupfd + '0';
n->ndup.vname = NULL;
n->ndup.dupfd = digit_val(text[0]);
n->ndup.dupfd = -1;
n->ndup.vname = makename();
calcsize(n->ndup.vname, result);
calcsize(n->ndup.next, result);
new->ndup.vname = copynode(n->ndup.vname, state);
new->ndup.dupfd = n->ndup.dupfd;
new->ndup.next = copynode(n->ndup.next, state);
new->ndup.fd = n->ndup.fd;
ALIGN(sizeof (struct ndup)),
ALIGN(sizeof (struct ndup)),
struct ndup ndup;
n->ndup.dupfd == fd)
if (redir->ndup.dupfd >= 0) { /* if not ">&-" */
if (memory[redir->ndup.dupfd])
if (dup2(redir->ndup.dupfd, fd) < 0)
error("%d: %s", redir->ndup.dupfd,
if (np->ndup.dupfd >= 0)
fprintf(fp, "%d", np->ndup.dupfd);