From 1fa3a5cce937168eaa3be11f7949ed046390afa7 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 24 Sep 2006 10:41:00 +0000 Subject: Cory Nelson made libcurl use the WSAPoll() function if built for Windows Vista (_WIN32_WINNT >= 0x0600) --- lib/select.c | 10 ++++++++-- lib/select.h | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/select.c b/lib/select.c index 42a9a5c35..4a7fee492 100644 --- a/lib/select.c +++ b/lib/select.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2005, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -74,7 +74,7 @@ */ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms) { -#ifdef HAVE_POLL_FINE +#if defined(HAVE_POLL_FINE) || defined(CURL_HAVE_WSAPOLL) struct pollfd pfd[2]; int num; int r; @@ -92,9 +92,13 @@ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms) num++; } +#ifdef HAVE_POLL_FINE do { r = poll(pfd, num, timeout_ms); } while((r == -1) && (errno == EINTR)); +#else + r = WSAPoll(pfd, num, timeout_ms); +#endif if (r < 0) return -1; @@ -194,6 +198,8 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) do { r = poll(ufds, nfds, timeout_ms); } while((r == -1) && (errno == EINTR)); +#elif defined(CURL_HAVE_WSAPOLL) + r = WSAPoll(ufds, nfds, timeout_ms); #else struct timeval timeout; struct timeval *ptimeout; diff --git a/lib/select.h b/lib/select.h index f448b8460..e0844b1d6 100644 --- a/lib/select.h +++ b/lib/select.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2004, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -25,6 +25,10 @@ #ifdef HAVE_SYS_POLL_H #include +#elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) +/* for Vista, use WSAPoll(). */ +#include +#define CURL_HAVE_WSAPOLL #else #define POLLIN 0x01 -- cgit v1.2.3