diff options
author | Nobuyoshi Nakada <[email protected]> | 2021-05-01 22:07:46 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2021-05-10 15:59:23 +0900 |
commit | 2d670274481647bf3bc9c82a9472bc8500a97a45 (patch) | |
tree | a902dbeba46e56f28631abb80249ecf0beba9d12 /missing | |
parent | 1d0e670e91a379bb276815014e9879a9aa9b6551 (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.c | 60 |
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 -} |