Here is the final patch I pushed for Windows compatibility of tests. It does not test much because the socket syscalls are not compatible enough, but it compiles at least (using the Debian mingw32 and wine packages).
Paolo
commit b03b6bfb8daa20dceff4593229f0df2c68c37e6e Author: Paolo Bonzini <[EMAIL PROTECTED]> Date: Fri Sep 12 16:12:44 2008 +0200 port poll tests to Windows 2008-09-12 Paolo Bonzini <[EMAIL PROTECTED]> * lib/sys_socket.in.h (EINPROGRESS): Define for Winsock case. * modules/poll-tests: Add inet_pton, stdbool, sockets. * tests/test-poll.c: Use them. Use _pipe on Windows. diff --git a/lib/sys_socket.in.h b/lib/sys_socket.in.h index d237e9c..7c8ad30 100644 --- a/lib/sys_socket.in.h +++ b/lib/sys_socket.in.h @@ -95,6 +95,7 @@ # endif # if defined _WIN32 || defined __WIN32__ +# define EINPROGRESS WSAEINPROGRESS # define ENOTSOCK WSAENOTSOCK # define EADDRINUSE WSAEADDRINUSE # define ENETRESET WSAENETRESET diff --git a/modules/poll-tests b/modules/poll-tests index 1484aaa..7c44a48 100644 --- a/modules/poll-tests +++ b/modules/poll-tests @@ -2,10 +2,13 @@ Files: tests/test-poll.c Depends-on: +stdbool sys_socket netinet_in arpa_inet extensions +inet_pton +sockets configure.ac: AC_CHECK_HEADERS_ONCE([io.h unistd.h sys/wait.h]) diff --git a/tests/test-poll.c b/tests/test-poll.c index cacb3a2..0dbcb54 100644 --- a/tests/test-poll.c +++ b/tests/test-poll.c @@ -27,10 +27,13 @@ #include <poll.h> #include <fcntl.h> #include <stdlib.h> +#include <stdbool.h> #include <errno.h> +#include "sockets.h" #ifdef HAVE_IO_H #include <io.h> +#define pipe(x) _pipe(x, 256, O_BINARY) #endif #ifdef HAVE_UNISTD_H #include <unistd.h> @@ -39,8 +42,6 @@ #include <sys/wait.h> #endif -enum { FALSE, TRUE }; - #ifndef SO_REUSEPORT #define SO_REUSEPORT SO_REUSEADDR #endif @@ -87,7 +88,7 @@ open_server_socket () memset (&ia, 0, sizeof (ia)); ia.sin_family = AF_INET; - inet_aton ("127.0.0.1", &ia.sin_addr); + inet_pton (AF_INET, "127.0.0.1", &ia.sin_addr); ia.sin_port = htons (TEST_PORT); if (bind (s, (struct sockaddr *) &ia, sizeof (ia)) < 0) { @@ -117,14 +118,14 @@ connect_to_socket (int blocking) memset (&ia, 0, sizeof (ia)); ia.sin_family = AF_INET; - inet_aton ("127.0.0.1", &ia.sin_addr); + inet_pton (AF_INET, "127.0.0.1", &ia.sin_addr); ia.sin_port = htons (TEST_PORT); if (!blocking) { #ifdef __MSVCRT__ unsigned long iMode = 1; - ioctl (s, FIONBIO, &iMode); + ioctlsocket (s, FIONBIO, (void *) &iMode); #elif defined F_GETFL int oldflags = fcntl (s, F_GETFL, NULL); @@ -218,7 +219,7 @@ test_connect_first (void) if (poll1_nowait (s, POLLIN | POLLRDNORM | POLLRDBAND) != 0) failed ("can read, socket not connected"); - c1 = connect_to_socket (FALSE); + c1 = connect_to_socket (false); if (poll1_wait (s, POLLIN | POLLRDNORM | POLLRDBAND) != (POLLIN | POLLRDNORM)) failed ("expecting POLLIN | POLLRDNORM on passive socket"); @@ -265,7 +266,7 @@ test_accept_first (void) else { close (s); - c = connect_to_socket (TRUE); + c = connect_to_socket (true); if (poll1_nowait (c, POLLOUT | POLLWRNORM | POLLRDBAND) != (POLLOUT | POLLWRNORM)) failed ("cannot write after blocking connect"); @@ -319,7 +320,7 @@ test_socket_pair (void) socklen_t addrlen = sizeof (ia); int s = open_server_socket (); - int c1 = connect_to_socket (FALSE); + int c1 = connect_to_socket (false); int c2 = accept (s, (struct sockaddr *) &ia, &addrlen); close (s); @@ -358,6 +359,8 @@ main () { int result; + gl_sockets_startup (SOCKETS_2_0); + #ifdef INTERACTIVE printf ("Please press Enter\n"); test (test_tty, "TTY");