Hi Ralf, > I needed this on some system but forgot which.
AFAICT, the systems which lack socklen_t are: HP-UX 10.20, IRIX 6.5, Interix 3.5, BeOS. > accept4: depend on socklen This patch is incomplete, because according to POSIX, <sys/socket.h> ought to provide socklen_t, even if the user does not use any functions from this header file. Likewise for <netdb.h>. > * modules/accept4: Reorder dependencies. Add socklen. > Depends-on: > -sys_socket > accept > fcntl-h > binary-io > extensions > +socklen > +sys_socket sys_socket is at the beginning because it's the most important dependency for this module, namely the module which provides the header file. Keep most important things first, please. I'm applying this patch instead. Can you report success or failure when you had a chance to test it on one of the platforms listed above, please? 2010-08-28 Bruno Haible <[email protected]> sys_socket, netdb: Ensure socklen_t gets defined. * modules/sys_socket (Depends-on): Add socklen. * modules/netdb (Depends-on): Likewise. * modules/getaddrinfo (Depends-on): Remove socklen. * modules/getsockopt (Depends-on): Likewise. * modules/setsockopt (Depends-on): Likewise. * tests/test-sys_socket.c: Check that socklen_t is defined. * tests/test-netdb.c: Likewise. * m4/socklen.m4: Update comments. Reported by Ralf Wildenhues <[email protected]>. --- modules/sys_socket.orig Sat Aug 28 10:12:36 2010 +++ modules/sys_socket Sat Aug 28 09:22:10 2010 @@ -12,6 +12,7 @@ c++defs errno include_next +socklen warn-on-use configure.ac: --- modules/netdb.orig Sat Aug 28 10:12:36 2010 +++ modules/netdb Sat Aug 28 09:21:56 2010 @@ -10,6 +10,7 @@ arg-nonnull warn-on-use sys_socket +socklen configure.ac: gl_HEADER_NETDB --- modules/getaddrinfo.orig Sat Aug 28 10:12:35 2010 +++ modules/getaddrinfo Sat Aug 28 09:21:08 2010 @@ -11,7 +11,6 @@ gettext-h inet_ntop snprintf -socklen stdbool sys_socket netdb --- modules/getsockopt.orig Sat Aug 28 10:12:35 2010 +++ modules/getsockopt Sat Aug 28 09:21:08 2010 @@ -8,7 +8,6 @@ Depends-on: sys_socket sys_time -socklen errno configure.ac: --- modules/setsockopt.orig Sat Aug 28 10:12:36 2010 +++ modules/setsockopt Sat Aug 28 09:21:07 2010 @@ -8,7 +8,6 @@ Depends-on: sys_socket sys_time -socklen errno configure.ac: --- tests/test-sys_socket.c.orig Sat Aug 28 10:12:36 2010 +++ tests/test-sys_socket.c Sat Aug 28 09:25:54 2010 @@ -1,5 +1,5 @@ /* Test of <sys/socket.h> substitute. - Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,6 +27,9 @@ int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR }; #endif +/* Check that the 'socklen_t' type is defined. */ +socklen_t t1; + int main (void) { --- tests/test-netdb.c.orig Sat Aug 28 10:12:36 2010 +++ tests/test-netdb.c Sat Aug 28 09:25:26 2010 @@ -1,5 +1,5 @@ /* Test of <netdb.h> substitute. - Copyright (C) 2007-2010 Free Software Foundation, Inc. + Copyright (C) 2007-2008, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,6 +22,9 @@ /* Check that the 'struct hostent' type is defined. */ struct hostent t1; +/* Check that the 'socklen_t' type is defined. */ +socklen_t t2; + int main (void) { --- m4/socklen.m4.orig Sat Aug 28 10:12:35 2010 +++ m4/socklen.m4 Sat Aug 28 10:11:59 2010 @@ -1,4 +1,4 @@ -# socklen.m4 serial 7 +# socklen.m4 serial 8 dnl Copyright (C) 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,8 +8,9 @@ dnl Check for socklen_t: historically on BSD it is an int, and in dnl POSIX 1g it is a type of its own, but some platforms use different -dnl types for the argument to getsockopt, getpeername, etc. So we -dnl have to test to find something that will work. +dnl types for the argument to getsockopt, getpeername, etc.: +dnl HP-UX 10.20, IRIX 6.5, Interix 3.5, BeOS. +dnl So we have to test to find something that will work. dnl On mingw32, socklen_t is in ws2tcpip.h ('int'), so we try to find dnl it there first. That file is included by gnulib's sys_socket.in.h, which
