Staging
v0.5.1
https://github.com/python/cpython
Revision ddf343855d787520d1ac72c7dcfdeb91e72731da authored by Kristján Valur Jónsson on 08 May 2014, 10:36:27 UTC, committed by Kristján Valur Jónsson on 08 May 2014, 10:36:27 UTC
in order to have the same resolution as pthreads condition variables.
At the same time, it must be large enough to accept 31 bits of
milliseconds, which is the maximum timeout value in the windows API.
A PY_LONG_LONG of microseconds fullfills both requirements.
This closes issue #20737
1 parent 8577e5a
Raw File
Tip revision: ddf343855d787520d1ac72c7dcfdeb91e72731da authored by Kristján Valur Jónsson on 08 May 2014, 10:36:27 UTC
The PyCOND_TIMEDWAIT must use microseconds for the timeout argument
Tip revision: ddf3438
dup2.c
/*
 * 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>
#include <unistd.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;
}
back to top