18 lines
459 B
Diff
18 lines
459 B
Diff
--- src/cmd/ksh93/sh/main.c
|
|
+++ src/cmd/ksh93/sh/main.c 2006-11-20 13:47:33.000000000 +0000
|
|
@@ -389,7 +389,13 @@ static void exfile(register Shell_t *shp
|
|
{
|
|
if(fno > 0)
|
|
{
|
|
- fno = sh_iomovefd(fno);
|
|
+ int r;
|
|
+ if(fno < 10 && ((r=sh_fcntl(fno,F_DUPFD,10))>=10))
|
|
+ {
|
|
+ shp->fdstatus[r] = shp->fdstatus[fno];
|
|
+ sh_close(fno);
|
|
+ fno = r;
|
|
+ }
|
|
fcntl(fno,F_SETFD,FD_CLOEXEC);
|
|
shp->fdstatus[fno] |= IOCLEX;
|
|
iop = sh_iostream(fno);
|