On 06/30/11 04:45, Simon Josefsson wrote: > Is it native Windows or MinGW?
Sorry, I don't know Windows well enough to answer that question. For Emacs, Windows support is done completely differently: it doesn't use gnulib, and it is done by other people, and I try to avoid thinking about it as much as I can. On 06/30/11 06:02, Eric Blake wrote: > But I would be okay with making the use of sys_uio.h > conditional on whether or not we are overriding sendmsg and recvmsg, > since they are the only clients of struct msghdr (but that in itself > entails some work, since we don't yet have sendmsg and recvmsg modules). That sounds good too, but isn't that for sys_socket? I'm trying not to use sys_socket in the first place. Here's what I just now pushed. It works for non-Windows, and it'll work for Emacs (since Emacs avoids gnulib on Windows), but I'm not sure it'll work for arbitrary applications that use sys_select but not sys_socket and that want to run on Windows. (If there are no such applications then we don't have to worry about it. :-) If you're in the mood to improve things further, that comment "Also, gnulib's <sys/socket.h> redefines select so as to hide the declaration from <winsock2.h>." is a bit confusing, as gnulib's <sys/select.h> also redefines select in the same way, and the comment gives the incorrect impression (at least to me) that the #include is needed to hide 'select'. I left that comment alone, though, since I don't really understand the Windows side of this. sys_select: don't depend on sys_socket This is so that Emacs doesn't have to drag in m4/sockpfaf.m4 etc; see <http://lists.gnu.org/archive/html/bug-gnulib/2011-06/msg00358.html>. This fix works on GNU and GNU-like platforms, but has not been tested on native Windows. * lib/sys_select.in.h: Include <sys/socket.h> only if native Windows. * m4/sys_select_h.m4 (gl_HEADER_SYS_SELECT): Do not require gl_HEADER_SYS_SOCKET. * modules/sys_select (Files): Add m4/sys_socket_h.m4, for gl_PREREQ_SYS_H_WINSOCK2. diff --git a/lib/sys_select.in.h b/lib/sys_select.in.h index d6d8c7b..ef4c6f3 100644 --- a/lib/sys_select.in.h +++ b/lib/sys_select.in.h @@ -80,7 +80,9 @@ /* On native Windows platforms: Get the 'fd_set' type. Also, gnulib's <sys/socket.h> redefines select so as to hide the declaration from <winsock2.h>. */ -# include <sys/socket.h> +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +# include <sys/socket.h> +# endif #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ diff --git a/m4/sys_select_h.m4 b/m4/sys_select_h.m4 index f167118..5b51af4 100644 --- a/m4/sys_select_h.m4 +++ b/m4/sys_select_h.m4 @@ -1,4 +1,4 @@ -# sys_select_h.m4 serial 16 +# sys_select_h.m4 serial 17 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,7 +6,6 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_HEADER_SYS_SELECT], [ - AC_REQUIRE([gl_HEADER_SYS_SOCKET]) AC_REQUIRE([gl_SYS_SELECT_H_DEFAULTS]) AC_CACHE_CHECK([whether <sys/select.h> is self-contained], [gl_cv_header_sys_select_h_selfcontained], diff --git a/modules/sys_select b/modules/sys_select index ef5462a..d0c0209 100644 --- a/modules/sys_select +++ b/modules/sys_select @@ -4,11 +4,11 @@ A <sys/select.h> for systems lacking it. Files: lib/sys_select.in.h m4/sys_select_h.m4 +m4/sys_socket_h.m4 Depends-on: include_next c++defs -sys_socket sys_time warn-on-use