]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/python/Python/dup2.c
/sys/lib/dist/mkfile: test for .git directory
[plan9front.git] / sys / src / cmd / python / Python / dup2.c
1 /*
2  * Public domain dup2() lookalike
3  * by Curtis Jackson @ AT&T Technologies, Burlington, NC
4  * electronic address:  burl!rcj
5  *
6  * dup2 performs the following functions:
7  *
8  * Check to make sure that fd1 is a valid open file descriptor.
9  * Check to see if fd2 is already open; if so, close it.
10  * Duplicate fd1 onto fd2; checking to make sure fd2 is a valid fd.
11  * Return fd2 if all went well; return BADEXIT otherwise.
12  */
13
14 #include <fcntl.h>
15
16 #define BADEXIT -1
17
18 int
19 dup2(int fd1, int fd2)
20 {
21         if (fd1 != fd2) {
22                 if (fcntl(fd1, F_GETFL) < 0)
23                         return BADEXIT;
24                 if (fcntl(fd2, F_GETFL) >= 0)
25                         close(fd2);
26                 if (fcntl(fd1, F_DUPFD, fd2) < 0)
27                         return BADEXIT;
28         }
29         return fd2;
30 }