You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
685 B
30 lines
685 B
/* |
|
* 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(int fd1, int 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; |
|
}
|
|
|