home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyth_os2.zip / python-1.0.2 / Python / dup2.c < prev    next >
C/C++ Source or Header  |  1993-12-24  |  691b  |  32 lines

  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(fd1, fd2)
  20. int fd1, fd2;
  21. {
  22.     if (fd1 != fd2) {
  23.         if (fcntl(fd1, F_GETFL) < 0)
  24.             return BADEXIT;
  25.         if (fcntl(fd2, F_GETFL) >= 0)
  26.             close(fd2);
  27.         if (fcntl(fd1, F_DUPFD, fd2) < 0)
  28.             return BADEXIT;
  29.     }
  30.     return fd2;
  31. }
  32.