# HG changeset patch # User Bruno Haible # Date 1223605022 -7200 # Node ID c5d07fcd0933164ddd79b5a57d8e0bb12e081743 # Parent 65655eaefcefe6cdbc3428c1a8e76b29868e9559 Make the ioctl() signature POSIX compliant. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-09 Bruno Haible + + * lib/sys_socket.in.h (ioctl): Make signature POSIX compliant. + * lib/winsock.c: Include . + (rpl_ioctl): Change to second argument 'int' and then varargs. + 2008-10-09 Bruno Haible * m4/close.m4 (gl_FUNC_CLOSE): Arrange to replace the close() function when diff --git a/lib/sys_socket.in.h b/lib/sys_socket.in.h --- a/lib/sys_socket.in.h +++ b/lib/sys_socket.in.h @@ -282,7 +282,7 @@ # if @HAVE_WINSOCK2_H@ # undef ioctl # define ioctl rpl_ioctl -extern int rpl_ioctl (int, unsigned long, char *); +extern int rpl_ioctl (int, int, ...); # endif # if @GNULIB_RECV@ diff --git a/lib/winsock.c b/lib/winsock.c --- a/lib/winsock.c +++ b/lib/winsock.c @@ -18,6 +18,7 @@ /* Written by Paolo Bonzini */ #include +#include #include #include #include @@ -224,10 +225,19 @@ #endif int -rpl_ioctl (int fd, unsigned long req, char *buf) +rpl_ioctl (int fd, int req, ...) { - SOCKET sock = FD_TO_SOCKET (fd); - int r = ioctlsocket (sock, req, (void *) buf); + void *buf; + va_list args; + SOCKET sock; + int r; + + va_start (args, req); + buf = va_arg (args, void *); + va_end (args); + + sock = FD_TO_SOCKET (fd); + r = ioctlsocket (sock, req, buf); if (r < 0) set_winsock_errno ();