Lines Matching defs:f2
587 static void io_preserve(Shell_t* shp, register Sfio_t *sp, register int f2)
593 fd = sh_fcntl(f2,F_DUPFD,10);
594 if(f2==shp->infd)
604 VALIDATE_FD(shp, f2);
606 if(shp->fdptrs[fd]=shp->fdptrs[f2])
608 if(f2==job.fd)
611 shp->fdptrs[f2] = 0;
614 shp->fdstatus[fd] = shp->fdstatus[f2];
615 if(fcntl(f2,F_GETFD,0)&1)
620 shp->sftable[f2] = 0;
624 * Given a file descriptor <f1>, move it to a file descriptor number <f2>
625 * If <f2> is needed move it, otherwise it is closed first.
627 * The new file descriptor <f2> is returned;
629 int sh_iorenumber(Shell_t *shp, register int f1,register int f2)
634 VALIDATE_FD(shp, f2);
636 sp = shp->sftable[f2];
637 if(f1!=f2)
640 if(sh_inuse(shp,f2) || (f2>2 && sp))
642 if(!(shp->inuse_bits&(1<<f2)))
643 io_preserve(shp,sp,f2);
646 else if(f2==0)
648 sh_close(f2);
649 if(f2<=2 && sp)
652 shp->fdstatus[f2] = (shp->fdstatus[f1]&~IOCLEX);
653 sfsetfd(spnew,f2);
659 shp->fdstatus[f2] = (shp->fdstatus[f1]&~IOCLEX);
660 if((f2 = sh_fcntl(f1,F_DUPFD, f2)) < 0)
662 else if(f2 <= 2)
663 sh_iostream(shp,f2);
672 sfsetfd(sp,f2);
673 if(f2<=2)
676 VALIDATE_FD(shp, f2);
677 return(f2);