changeset 14661:b98c01416471

sys_socket: Ensure 'struct iovec' definition. * lib/sys_socket.in.h: Include <sys/uio.h> also on platforms that have <sys/socket.h>. * doc/posix-headers/sys_socket.texi: Mention the OpenBSD problem.
author Bruno Haible <bruno@clisp.org>
date Sat, 30 Apr 2011 13:38:43 +0200
parents fc75a382e7cd
children 69ca6b2ea292
files ChangeLog doc/posix-headers/sys_socket.texi lib/sys_socket.in.h
diffstat 3 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-04-30  Bruno Haible  <bruno@clisp.org>
+
+	sys_socket: Ensure 'struct iovec' definition.
+	* lib/sys_socket.in.h: Include <sys/uio.h> also on platforms that have
+	<sys/socket.h>.
+	* doc/posix-headers/sys_socket.texi: Mention the OpenBSD problem.
+
 2011-04-30  Bruno Haible  <bruno@clisp.org>
 
 	sys_uio: Protect definition of 'struct iovec'.
--- a/doc/posix-headers/sys_socket.texi
+++ b/doc/posix-headers/sys_socket.texi
@@ -17,6 +17,9 @@
 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:
--- a/lib/sys_socket.in.h
+++ b/lib/sys_socket.in.h
@@ -108,6 +108,12 @@
 
 #endif
 
+/* Get struct iovec.  */
+/* But avoid namespace pollution on glibc systems.  */
+#if ! defined __GLIBC__
+# include <sys/uio.h>
+#endif
+
 #if @HAVE_SYS_SOCKET_H@
 
 /* A platform that has <sys/socket.h>.  */
@@ -176,9 +182,6 @@
 
 # endif
 
-/* For struct iovec */
-# include <sys/uio.h>
-
 /* Rudimentary 'struct msghdr'; this works as long as you don't try to
    access msg_control or msg_controllen.  */
 struct msghdr {