From 95bbafdb715dcfdbe7f629e2411b300ccaa84db4 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 30 Apr 2011 13:38:43 +0200 Subject: [PATCH] sys_socket: Ensure 'struct iovec' definition. * lib/sys_socket.in.h: Include also on platforms that have . * doc/posix-headers/sys_socket.texi: Mention the OpenBSD problem. --- ChangeLog | 7 +++++++ doc/posix-headers/sys_socket.texi | 3 +++ lib/sys_socket.in.h | 9 ++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b567940fb..987b46e68 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2011-04-30 Bruno Haible + sys_socket: Ensure 'struct iovec' definition. + * lib/sys_socket.in.h: Include also on platforms that have + . + * doc/posix-headers/sys_socket.texi: Mention the OpenBSD problem. + +2011-04-30 Bruno Haible + sys_uio: Protect definition of 'struct iovec'. * lib/sys_uio.in.h (struct iovec): Avoid redefinition. In C++, define it as a C struct. diff --git a/doc/posix-headers/sys_socket.texi b/doc/posix-headers/sys_socket.texi index f80e54254..72fd68870 100644 --- a/doc/posix-headers/sys_socket.texi +++ b/doc/posix-headers/sys_socket.texi @@ -17,6 +17,9 @@ This header file is not self-contained on some platforms: it requires This header file does not define the type @code{socklen_t} on some platforms: HP-UX 10.20, IRIX 6.5, OSF/1 4.0, Interix 3.5, BeOS. @item +This header file does not define the type @code{struct iovec} on some platforms: +OpenBSD 4.4. +@item This header file is lacking the @code{SHUT_RD}, @code{SHUT_WR}, @code{SHUT_RDWR} macros on some platforms, despite having the @code{shutdown} functions: diff --git a/lib/sys_socket.in.h b/lib/sys_socket.in.h index f9e368b6c..78026697b 100644 --- a/lib/sys_socket.in.h +++ b/lib/sys_socket.in.h @@ -108,6 +108,12 @@ struct sockaddr_storage #endif +/* Get struct iovec. */ +/* But avoid namespace pollution on glibc systems. */ +#if ! defined __GLIBC__ +# include +#endif + #if @HAVE_SYS_SOCKET_H@ /* A platform that has . */ @@ -176,9 +182,6 @@ typedef int socklen_t; # endif -/* For struct iovec */ -# include - /* Rudimentary 'struct msghdr'; this works as long as you don't try to access msg_control or msg_controllen. */ struct msghdr { -- 2.11.0