X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-poll.c;h=77b06d9928cc57f36db75af51dcc9aa2f859e19e;hb=f29c8b2585098d92e0bd02af745774673ec25ec7;hp=0dbcb54fbeb7d8485719d698d0a3f116e6874875;hpb=b03b6bfb8daa20dceff4593229f0df2c68c37e6e;p=gnulib.git diff --git a/tests/test-poll.c b/tests/test-poll.c index 0dbcb54fb..77b06d992 100644 --- a/tests/test-poll.c +++ b/tests/test-poll.c @@ -28,10 +28,15 @@ #include #include #include +#include #include #include "sockets.h" -#ifdef HAVE_IO_H +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +# define WIN32_NATIVE +#endif + +#ifdef WIN32_NATIVE #include #define pipe(x) _pipe(x, 256, O_BINARY) #endif @@ -123,28 +128,24 @@ connect_to_socket (int blocking) if (!blocking) { -#ifdef __MSVCRT__ +#ifdef WIN32_NATIVE unsigned long iMode = 1; - ioctlsocket (s, FIONBIO, (void *) &iMode); - + ioctl (s, FIONBIO, (char *) &iMode); + #elif defined F_GETFL int oldflags = fcntl (s, F_GETFL, NULL); - + if (!(oldflags & O_NONBLOCK)) fcntl (s, F_SETFL, oldflags | O_NONBLOCK); #endif } - if (connect (s, (struct sockaddr *) &ia, sizeof (ia)) < 0) + if (connect (s, (struct sockaddr *) &ia, sizeof (ia)) < 0 + && (blocking || errno != EINPROGRESS)) { - if (errno != EINPROGRESS) - { - perror ("connect"); - exit (77); - } + perror ("connect"); + exit (77); } - else if (!blocking) - failed ("huh, connect succeeded?"); return s; } @@ -161,7 +162,7 @@ poll1 (int fd, int ev, int time) pfd.fd = fd; pfd.events = ev; pfd.revents = 0; - r = poll (&pfd, 1, time); + r = poll (&pfd, 1, time); if (r < 0) return r; @@ -241,7 +242,7 @@ test_connect_first (void) static void test_accept_first (void) { -#ifndef __MSVCRT__ +#ifndef WIN32_NATIVE int s = open_server_socket (); struct sockaddr_in ia; socklen_t addrlen; @@ -359,7 +360,7 @@ main () { int result; - gl_sockets_startup (SOCKETS_2_0); + gl_sockets_startup (SOCKETS_1_1); #ifdef INTERACTIVE printf ("Please press Enter\n");