Blame SPECS/ksh-20120801-F_dupfd_cloexec.patch
|
Packit |
992a25 |
diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.orig ksh-20120801/src/cmd/ksh93/sh/io.c
|
|
Packit |
992a25 |
--- ksh-20120801/src/cmd/ksh93/sh/io.c.orig 2015-08-12 11:35:36.882268954 -0300
|
|
Packit |
992a25 |
+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2015-08-12 11:44:06.324587019 -0300
|
|
Packit |
992a25 |
@@ -2580,10 +2580,18 @@ int sh_fcntl(register int fd, int op, ..
|
|
Packit |
992a25 |
if(newfd>=0) switch(op)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
case F_DUPFD:
|
|
Packit |
992a25 |
+#if F_dupfd_cloexec != F_DUPFD
|
|
Packit |
992a25 |
+ case F_dupfd_cloexec:
|
|
Packit |
992a25 |
+#endif
|
|
Packit |
992a25 |
if(shp->fdstatus[fd] == IOCLOSE)
|
|
Packit |
992a25 |
shp->fdstatus[fd] = 0;
|
|
Packit |
992a25 |
if(newfd>=shp->gd->lim.open_max)
|
|
Packit |
992a25 |
sh_iovalidfd(shp,newfd);
|
|
Packit |
992a25 |
+#if F_dupfd_cloexec != F_DUPFD
|
|
Packit |
992a25 |
+ if(op==F_dupfd_cloexec)
|
|
Packit |
992a25 |
+ shp->fdstatus[newfd] = (shp->fdstatus[fd]|IOCLEX);
|
|
Packit |
992a25 |
+ else
|
|
Packit |
992a25 |
+#endif
|
|
Packit |
992a25 |
shp->fdstatus[newfd] = (shp->fdstatus[fd]&~IOCLEX);
|
|
Packit |
992a25 |
if(fdnotify)
|
|
Packit |
992a25 |
(*fdnotify)(fd,newfd);
|