[Top][All Lists]
[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>