#include <sys/time.h>
#include <sys/types.h>
#include <sys/select.h>
#include <errno.h>
#include <sys/syscall.h>

#if !defined(__NR_select) && !defined(__NR__newselect)

struct __pselect6;
__extern int __pselect6(int, fd_set *, fd_set *, fd_set *,
                        const struct timespec *, const struct __pselect6 *);

int select(int nfds, fd_set *readfds, fd_set *writefds,
			fd_set *exceptfds, struct timeval *timeout)
{
	int result;
	struct timespec ts;

	if (timeout) {
		ts.tv_sec = timeout->tv_sec;
		ts.tv_nsec = timeout->tv_usec * 1000;
	}

	result = __pselect6(nfds, readfds, writefds, exceptfds, &ts, NULL);

	if (timeout) {
		timeout->tv_sec = ts.tv_sec;
		timeout->tv_usec = ts.tv_nsec / 1000;
	}

	return result;
}

#endif
