The patch http://svn.apache.org/viewvc/apr/apr/trunk/include/apr_want.h?r1=151412&r2=421075 which adds a hard coded definition of struct iovec causes redefinition problems at least on the NetWare platform and I would imagine others as well. The problem is that both the definitions of struct iovec found in sys/uio.h as well as the hard coded definition found in apr_want.h will be included under certain circumstances.
There are several places throughout both apr and apr-util where sys/uio.h is being included explicitly rather than included through apr_want.h (ie. apr_file_info.h, apr_arch_file_io.h, apr_arch_networkio.h, apr_brigade.c, apr_buckets.h). If one of these explicit inclusions of sys/uio.h is hit during compilation as well as the inclusion of apr_want.h without APR_WANT_IOVEC being defined (which is the case in apr_xml.c), both definitions of struct iovec will be included which causes a redefinition error. Currently this is happening on the NetWare platform when compiling apr_xml.c. If this redefinition of struct iovec in apr_want.h is only necessary for mingw, shouldn't it be #ifdef'ed appropriately? Alternatively or in addition, shouldn't all explicit inclusions of sys/uio.h be replaced with: #define APR_WANT_IOVEC #include "apr_want.h" Brad