diff options
author | Guido van Rossum <guido@python.org> | 1993-12-24 10:32:00 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1993-12-24 10:32:00 (GMT) |
commit | be0e9420a1673b7b3991d7eec843d75219a84f34 (patch) | |
tree | 8044f57b7dbcea72fb2f695c3f0cb0a005faa461 /Python/dup2.c | |
parent | 2e1d433e4357a5a980a96f15b3802138a064fb64 (diff) | |
download | cpython-be0e9420a1673b7b3991d7eec843d75219a84f34.zip cpython-be0e9420a1673b7b3991d7eec843d75219a84f34.tar.gz cpython-be0e9420a1673b7b3991d7eec843d75219a84f34.tar.bz2 |
New files.
Diffstat (limited to 'Python/dup2.c')
-rw-r--r-- | Python/dup2.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Python/dup2.c b/Python/dup2.c new file mode 100644 index 0000000..85ec5d5 --- /dev/null +++ b/Python/dup2.c @@ -0,0 +1,31 @@ +/* + * 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 <fcntl.h> + +#define BADEXIT -1 + +int +dup2(fd1, fd2) +int fd1, fd2; +{ + if (fd1 != fd2) { + 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; + } + return fd2; +} |