Lines Matching refs:f2
540 static void io_preserve(Shell_t* shp, register Sfio_t *sp, register int f2)
546 fd = sh_fcntl(f2,F_DUPFD,10);
547 if(f2==shp->infd)
555 if(shp->fdptrs[fd]=shp->fdptrs[f2])
557 if(f2==job.fd)
560 shp->fdptrs[f2] = 0;
563 shp->fdstatus[fd] = shp->fdstatus[f2];
564 if(fcntl(f2,F_GETFD,0)&1)
569 shp->sftable[f2] = 0;
573 * Given a file descriptor <f1>, move it to a file descriptor number <f2>
574 * If <f2> is needed move it, otherwise it is closed first.
576 * The new file descriptor <f2> is returned;
578 int sh_iorenumber(Shell_t *shp, register int f1,register int f2)
580 register Sfio_t *sp = shp->sftable[f2];
581 if(f1!=f2)
584 if(sh_inuse(f2) || (f2>2 && sp))
586 if(!(shp->inuse_bits&(1<<f2)))
587 io_preserve(shp,sp,f2);
590 else if(f2==0)
592 sh_close(f2);
593 if(f2<=2 && sp)
596 shp->fdstatus[f2] = (shp->fdstatus[f1]&~IOCLEX);
597 sfsetfd(spnew,f2);
603 shp->fdstatus[f2] = (shp->fdstatus[f1]&~IOCLEX);
604 if((f2 = sh_fcntl(f1,F_DUPFD, f2)) < 0)
606 else if(f2 <= 2)
607 sh_iostream(shp,f2);
613 return(f2);