port poll tests to Windows
authorPaolo Bonzini <bonzini@gnu.org>
Fri, 12 Sep 2008 14:12:44 +0000 (16:12 +0200)
committerPaolo Bonzini <bonzini@gnu.org>
Fri, 12 Sep 2008 14:57:24 +0000 (16:57 +0200)
2008-09-12  Paolo Bonzini  <bonzini@gnu.org>

* 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.

ChangeLog
lib/sys_socket.in.h
modules/poll-tests
tests/test-poll.c

index 4575ca9..ac15d94 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2008-09-12  Paolo Bonzini  <bonzini@gnu.org>
 
+       * 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.
+
+2008-09-12  Paolo Bonzini  <bonzini@gnu.org>
+
        * modules/poll-tests: New.
        * tests/test-poll.c: New.
 
index d237e9c..7c8ad30 100644 (file)
@@ -95,6 +95,7 @@
 # endif
 
 # if defined _WIN32 || defined __WIN32__
+#  define EINPROGRESS            WSAEINPROGRESS
 #  define ENOTSOCK                WSAENOTSOCK
 #  define EADDRINUSE              WSAEADDRINUSE
 #  define ENETRESET               WSAENETRESET
index 1484aaa..7c44a48 100644 (file)
@@ -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])
index cacb3a2..0dbcb54 100644 (file)
 #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");