psss / rpms / ksh

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