bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/3] sys_uio: new module


From: Bruno Haible
Subject: Re: [PATCH 1/3] sys_uio: new module
Date: Sat, 30 Apr 2011 13:22:51 +0200
User-agent: KMail/1.9.9

Eric Blake wrote:

> +/* All known platforms that lack <sys/uio.h> also lack any declaration
> +   of struct iovec in any other header.  */
> +struct iovec {
> +  void *iov_base;
> +  size_t iov_len;
> +};

When we define a 'struct' type in a gnulib header, we need to take care of
two things:
  - In the situation where the user has two gnulib-tool invocations within
    the same project, avoid a collision between the two gnulib-generated
    <sys/uio.h> files.
  - In C++, define the type as a C type, not as a C++ class.


2011-04-30  Bruno Haible  <address@hidden>

        sys_uio: Protect definition of 'struct iovec'.
        * lib/sys_uio.in.h (struct iovec): Avoid redefinition. In C++, define
        it as a C struct.

--- lib/sys_uio.in.h.orig       Sat Apr 30 13:17:55 2011
+++ lib/sys_uio.in.h    Sat Apr 30 13:16:39 2011
@@ -37,12 +37,24 @@
 /* Get 'ssize_t'.  */
 # include <sys/types.h>
 
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# if !GNULIB_defined_struct_iovec
 /* All known platforms that lack <sys/uio.h> also lack any declaration
    of struct iovec in any other header.  */
 struct iovec {
   void *iov_base;
   size_t iov_len;
 };
+#  define GNULIB_defined_struct_iovec 1
+# endif
+
+# ifdef __cplusplus
+}
+# endif
+
 #endif
 
 #endif /* _GL_SYS_UIO_H */

-- 
In memoriam Casey Jones <http://en.wikipedia.org/wiki/Casey_Jones>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]