--- IO-AIO/schmorp.h 2013/04/14 09:43:18 1.13 +++ IO-AIO/schmorp.h 2018/02/20 06:05:19 1.18 @@ -234,7 +234,7 @@ /*****************************************************************************/ /* portable pipe/socketpair */ -#ifdef USE_SOCKETS_AS_HANDLES +#if defined(USE_SOCKETS_AS_HANDLES) || PERL_VERSION_ATLEAST(5,18,0) # define S_TO_HANDLE(x) ((HANDLE)win32_get_osfhandle (x)) #else # define S_TO_HANDLE(x) ((HANDLE)x) @@ -255,7 +255,7 @@ SOCKET listener; SOCKET sock [2] = { -1, -1 }; - if ((listener = socket (AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) + if ((listener = socket (AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) return -1; addr.sin_family = AF_INET; @@ -271,7 +271,7 @@ if (listen (listener, 1)) goto fail; - if ((sock [0] = socket (AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) + if ((sock [0] = socket (AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) goto fail; if (connect (sock [0], (struct sockaddr *)&addr, addr_size)) @@ -306,7 +306,7 @@ closesocket (listener); -#ifdef USE_SOCKETS_AS_HANDLES +#if defined(USE_SOCKETS_AS_HANDLES) || PERL_VERSION_ATLEAST(5,18,0) /* when select isn't winsocket, we also expect socket, connect, accept etc. * to work on fds */ filedes [0] = sock [0]; @@ -359,19 +359,23 @@ #endif -#if __linux && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7)) -# define SCHMORP_H_HAVE_EVENTFD 1 +#if HAVE_EVENTFD +# include +#else +# if __linux && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7)) +# define SCHMORP_H_HAVE_EVENTFD 1 /* our minimum requirement is glibc 2.7 which has the stub, but not the header */ -# include -# ifdef __cplusplus +# include +# ifdef __cplusplus extern "C" { -# endif +# endif int eventfd (unsigned int initval, int flags); -# ifdef __cplusplus +# ifdef __cplusplus } +# endif +# else +# define eventfd(initval,flags) -1 # endif -#else -# define eventfd(initval,flags) -1 #endif typedef struct {