summaryrefslogtreecommitdiff
path: root/missing
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-05-01 22:07:46 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-05-10 15:59:23 +0900
commit2d670274481647bf3bc9c82a9472bc8500a97a45 (patch)
treea902dbeba46e56f28631abb80249ecf0beba9d12 /missing
parent1d0e670e91a379bb276815014e9879a9aa9b6551 (diff)
Removed missing/dup2.c
This function should be always available, as POSIX-compliant or Windows platform are required since 1.9. Also the code in this file is MT-unsafe.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4483
Diffstat (limited to 'missing')
-rw-r--r--missing/dup2.c60
1 files changed, 0 insertions, 60 deletions
diff --git a/missing/dup2.c b/missing/dup2.c
deleted file mode 100644
index 7f2b78c10f..0000000000
--- a/missing/dup2.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Public domain dup2() lookalike
- * by Curtis Jackson @ AT&T Technologies, Burlington, NC
- * electronic address: burl!rcj
- *
- * dup2 performs the following functions:
- *
- * Check to make sure that fd1 is a valid open file descriptor.
- * Check to see if fd2 is already open; if so, close it.
- * Duplicate fd1 onto fd2; checking to make sure fd2 is a valid fd.
- * Return fd2 if all went well; return BADEXIT otherwise.
- */
-
-#include "ruby/internal/config.h"
-
-#if defined(HAVE_FCNTL)
-# include <fcntl.h>
-#endif
-
-#if !defined(HAVE_FCNTL) || !defined(F_DUPFD)
-# include <errno.h>
-#endif
-
-#define BADEXIT -1
-
-int
-dup2(int fd1, int fd2)
-{
-#if defined(HAVE_FCNTL) && defined(F_DUPFD)
- if (fd1 != fd2) {
-#ifdef F_GETFL
- if (fcntl(fd1, F_GETFL) < 0)
- return BADEXIT;
- if (fcntl(fd2, F_GETFL) >= 0)
- close(fd2);
-#else
- close(fd2);
-#endif
- if (fcntl(fd1, F_DUPFD, fd2) < 0)
- return BADEXIT;
- }
- return fd2;
-#else
- extern int errno;
- int i, fd, fds[256];
-
- if (fd1 == fd2) return 0;
- close(fd2);
- for (i=0; i<256; i++) {
- fd = fds[i] = dup(fd1);
- if (fd == fd2) break;
- }
- while (i) {
- close(fds[i--]);
- }
- if (fd == fd2) return 0;
- errno = EMFILE;
- return BADEXIT;
-#endif
-}