apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Mark Vandenberg <jay...@gmail.com>
Subject [patch 09/17] struct iovec
Date Sat, 15 Apr 2006 01:41:27 GMT
struct iovec is needed to emulate Unix writev.  This patch moves
the workaround from apr.hw to apr_want.h to it can be shared by
any platform without it.

AC_CHECK_TYPE has problems determining whether this type exists.

The change to build/apr_common.m4 allows APR_CHECK_SIZEOF_EXTENDED
to be called with a space in the argument.

Index: configure.in
===================================================================
--- configure.in.orig
+++ configure.in
@@ -1438,6 +1438,14 @@ case $host in
         ;;
 esac
 
+APR_CHECK_SIZEOF_EXTENDED([#include <sys/uio.h>],struct iovec,0)
+if test "$ac_cv_sizeof_struct_iovec" = "0"; then
+    have_iovec=0
+else
+    have_iovec=1
+fi
+
+
 AC_SUBST(voidp_size)
 AC_SUBST(short_value)
 AC_SUBST(int_value)
@@ -1459,6 +1467,7 @@ AC_SUBST(uint64_literal) 
 AC_SUBST(stdint) 
 AC_SUBST(bigendian)
 AC_SUBST(aprlfs)
+AC_SUBST(have_iovec)
 
 dnl ----------------------------- Checking for string functions
 AC_CHECK_FUNCS(strnicmp, have_strnicmp="1", have_strnicmp="0")
Index: include/apr.h.in
===================================================================
--- include/apr.h.in.orig
+++ include/apr.h.in
@@ -220,6 +220,7 @@ extern "C" {
 #define APR_HAVE_STRUCT_RLIMIT  @struct_rlimit@
 #define APR_HAVE_UNION_SEMUN    @have_union_semun@
 #define APR_HAVE_SCTP           @have_sctp@
+#define APR_HAVE_IOVEC          @have_iovec@
 
 /*  APR Feature Macros */
 #define APR_HAS_SHARED_MEMORY     @sharedmem@
Index: include/apr_want.h
===================================================================
--- include/apr_want.h.orig
+++ include/apr_want.h
@@ -81,10 +81,28 @@
 
 #ifdef APR_WANT_IOVEC
 
+#if APR_HAVE_IOVEC
+
 #if APR_HAVE_SYS_UIO_H
 #include <sys/uio.h>
 #endif
 
+#else
+
+struct iovec
+{
+    char *iov_base;
+    int  iov_len;
+};
+
+#endif
+
+/* apr_want is included at several layers; redefining APR_HAVE_IOVEC
+ * to ensure struct is not introduced several times
+ */
+#undef APR_HAVE_IOVEC
+#define APR_HAVE_IOVEC 1
+
 #undef APR_WANT_IOVEC
 #endif
 
Index: build/apr_common.m4
===================================================================
--- build/apr_common.m4.orig
+++ build/apr_common.m4
@@ -446,9 +446,9 @@ dnl
 AC_DEFUN([APR_CHECK_SIZEOF_EXTENDED],
 [changequote(<<,>>)dnl
 dnl The name to #define
-define(<<AC_TYPE_NAME>>, translit(sizeof_$2, [a-z *], [A-Z_P]))dnl
+define(<<AC_TYPE_NAME>>, translit(sizeof_$2, [a-z ], [A-Z_]))dnl
 dnl The cache variable
-define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$2, [ *],[<p>]))dnl
+define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$2, [A-Z ],[a-z_]))dnl
 changequote([, ])dnl
 AC_MSG_CHECKING(size of $2)
 AC_CACHE_VAL(AC_CV_NAME,
Index: include/apr.hw
===================================================================
--- include/apr.hw.orig
+++ include/apr.hw
@@ -487,10 +487,7 @@ typedef  int         gid_t;
 typedef int apr_wait_t;
 
 /* struct iovec is needed to emulate Unix writev */
-struct iovec {
-    char*      iov_base;
-    apr_size_t iov_len;
-};
+#define APR_HAVE_IOVEC 0
 
 /* Nasty Win32 .h ommissions we really need */
 #define STDIN_FILENO  0

--

Mime
View raw message