summaryrefslogtreecommitdiff
path: root/Python/dup2.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/dup2.c')
-rw-r--r--Python/dup2.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/Python/dup2.c b/Python/dup2.c
index 7c6bbfce11..a1df049209 100644
--- a/Python/dup2.c
+++ b/Python/dup2.c
@@ -11,6 +11,7 @@
* Return fd2 if all went well; return BADEXIT otherwise.
*/
+#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
@@ -20,12 +21,17 @@ int
dup2(int fd1, int fd2)
{
if (fd1 != fd2) {
+#ifdef F_DUPFD
if (fcntl(fd1, F_GETFL) < 0)
return BADEXIT;
if (fcntl(fd2, F_GETFL) >= 0)
close(fd2);
if (fcntl(fd1, F_DUPFD, fd2) < 0)
return BADEXIT;
+#else
+ errno = ENOTSUP;
+ return BADEXIT;
+#endif
}
return fd2;
}