mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
3db12e8b23
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
36 lines
702 B
C
36 lines
702 B
C
/*
|
|
* Copyright (c) 1991, Larry Wall
|
|
*
|
|
* You may distribute under the terms of either the GNU General Public
|
|
* License or the Artistic License, as specified in the README file.
|
|
*/
|
|
|
|
#include "defines.h"
|
|
|
|
#if defined(HAVE_FCNTL) && defined(F_DUPFD)
|
|
# include <fcntl.h>
|
|
#endif
|
|
|
|
int
|
|
dup2(oldfd,newfd)
|
|
int oldfd;
|
|
int newfd;
|
|
{
|
|
#if defined(HAVE_FCNTL) && defined(F_DUPFD)
|
|
close(newfd);
|
|
return fcntl(oldfd, F_DUPFD, newfd);
|
|
#else
|
|
int fdtmp[256];
|
|
int fdx = 0;
|
|
int fd;
|
|
|
|
if (oldfd == newfd)
|
|
return 0;
|
|
close(newfd);
|
|
while ((fd = dup(oldfd)) != newfd) /* good enough for low fd's */
|
|
fdtmp[fdx++] = fd;
|
|
while (fdx > 0)
|
|
close(fdtmp[--fdx]);
|
|
return 0;
|
|
#endif
|
|
}
|