symbian-qemu-0.9.1-12/python-2.6.1/Python/dup2.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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 }