[Midnightbsd-cvs] src [9274] vendor/apache/apr/1.5.2: apr 1.5.2

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Feb 19 22:07:57 EST 2017


Revision: 9274
          http://svnweb.midnightbsd.org/src/?rev=9274
Author:   laffer1
Date:     2017-02-19 22:07:52 -0500 (Sun, 19 Feb 2017)
Log Message:
-----------
apr 1.5.2

Added Paths:
-----------
    vendor/apache/apr/1.5.2/
    vendor/apache/apr/1.5.2/CHANGES
    vendor/apache/apr/1.5.2/LICENSE
    vendor/apache/apr/1.5.2/Makefile.in
    vendor/apache/apr/1.5.2/Makefile.win
    vendor/apache/apr/1.5.2/NOTICE
    vendor/apache/apr/1.5.2/NWGNUmakefile
    vendor/apache/apr/1.5.2/apr.dep
    vendor/apache/apr/1.5.2/apr.dsp
    vendor/apache/apr/1.5.2/apr.mak
    vendor/apache/apr/1.5.2/apr.spec
    vendor/apache/apr/1.5.2/atomic/win32/apr_atomic.c
    vendor/apache/apr/1.5.2/build/MakeEtags
    vendor/apache/apr/1.5.2/build/NWGNUenvironment.inc
    vendor/apache/apr/1.5.2/build/NWGNUmakefile
    vendor/apache/apr/1.5.2/build/NWGNUtail.inc
    vendor/apache/apr/1.5.2/build/PrintPath
    vendor/apache/apr/1.5.2/build/apr_common.m4
    vendor/apache/apr/1.5.2/build/apr_hints.m4
    vendor/apache/apr/1.5.2/build/apr_network.m4
    vendor/apache/apr/1.5.2/build/apr_rules.mk.in
    vendor/apache/apr/1.5.2/build/aprapp.dep
    vendor/apache/apr/1.5.2/build/aprapp.mak
    vendor/apache/apr/1.5.2/build/buildcheck.sh
    vendor/apache/apr/1.5.2/build/config.guess
    vendor/apache/apr/1.5.2/build/config.sub
    vendor/apache/apr/1.5.2/build/gen-build.py
    vendor/apache/apr/1.5.2/build/get-version.sh
    vendor/apache/apr/1.5.2/build/install.sh
    vendor/apache/apr/1.5.2/build/jlibtool.c
    vendor/apache/apr/1.5.2/build/libaprapp.dep
    vendor/apache/apr/1.5.2/build/libaprapp.mak
    vendor/apache/apr/1.5.2/build/lineends.pl
    vendor/apache/apr/1.5.2/build/mkdir.sh
    vendor/apache/apr/1.5.2/build/nw_export.inc
    vendor/apache/apr/1.5.2/build/nw_make_header.awk
    vendor/apache/apr/1.5.2/build/pkg/buildpkg.sh
    vendor/apache/apr/1.5.2/build/rpm/apr.spec.in
    vendor/apache/apr/1.5.2/build/run-gcov.sh
    vendor/apache/apr/1.5.2/build-outputs.mk
    vendor/apache/apr/1.5.2/build.conf
    vendor/apache/apr/1.5.2/buildconf
    vendor/apache/apr/1.5.2/configure
    vendor/apache/apr/1.5.2/configure.in
    vendor/apache/apr/1.5.2/docs/canonical_filenames.html
    vendor/apache/apr/1.5.2/docs/pool-design.html
    vendor/apache/apr/1.5.2/encoding/
    vendor/apache/apr/1.5.2/file_io/os2/filedup.c
    vendor/apache/apr/1.5.2/file_io/os2/open.c
    vendor/apache/apr/1.5.2/file_io/unix/filedup.c
    vendor/apache/apr/1.5.2/file_io/unix/filestat.c
    vendor/apache/apr/1.5.2/file_io/unix/mktemp.c
    vendor/apache/apr/1.5.2/file_io/unix/open.c
    vendor/apache/apr/1.5.2/file_io/unix/pipe.c
    vendor/apache/apr/1.5.2/file_io/unix/readwrite.c
    vendor/apache/apr/1.5.2/file_io/win32/dir.c
    vendor/apache/apr/1.5.2/file_io/win32/filedup.c
    vendor/apache/apr/1.5.2/file_io/win32/open.c
    vendor/apache/apr/1.5.2/file_io/win32/pipe.c
    vendor/apache/apr/1.5.2/file_io/win32/readwrite.c
    vendor/apache/apr/1.5.2/helpers/apr_rename.pl
    vendor/apache/apr/1.5.2/include/apr.h.in
    vendor/apache/apr/1.5.2/include/apr.hwc
    vendor/apache/apr/1.5.2/include/apr_allocator.h
    vendor/apache/apr/1.5.2/include/apr_errno.h
    vendor/apache/apr/1.5.2/include/apr_escape.h
    vendor/apache/apr/1.5.2/include/apr_file_info.h
    vendor/apache/apr/1.5.2/include/apr_file_io.h
    vendor/apache/apr/1.5.2/include/apr_fnmatch.h
    vendor/apache/apr/1.5.2/include/apr_hash.h
    vendor/apache/apr/1.5.2/include/apr_inherit.h
    vendor/apache/apr/1.5.2/include/apr_lib.h
    vendor/apache/apr/1.5.2/include/apr_mmap.h
    vendor/apache/apr/1.5.2/include/apr_network_io.h
    vendor/apache/apr/1.5.2/include/apr_poll.h
    vendor/apache/apr/1.5.2/include/apr_pools.h
    vendor/apache/apr/1.5.2/include/apr_shm.h
    vendor/apache/apr/1.5.2/include/apr_skiplist.h
    vendor/apache/apr/1.5.2/include/apr_strings.h
    vendor/apache/apr/1.5.2/include/apr_tables.h
    vendor/apache/apr/1.5.2/include/apr_thread_mutex.h
    vendor/apache/apr/1.5.2/include/apr_thread_proc.h
    vendor/apache/apr/1.5.2/include/apr_time.h
    vendor/apache/apr/1.5.2/include/apr_user.h
    vendor/apache/apr/1.5.2/include/apr_version.h
    vendor/apache/apr/1.5.2/include/arch/netware/apr_private.h
    vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_poll_private.h
    vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_threadproc.h
    vendor/apache/apr/1.5.2/include/arch/unix/apr_private.h.in
    vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_file_io.h
    vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_misc.h
    vendor/apache/apr/1.5.2/include/private/
    vendor/apache/apr/1.5.2/libapr.dep
    vendor/apache/apr/1.5.2/libapr.dsp
    vendor/apache/apr/1.5.2/libapr.mak
    vendor/apache/apr/1.5.2/locks/beos/thread_cond.c
    vendor/apache/apr/1.5.2/locks/unix/proc_mutex.c
    vendor/apache/apr/1.5.2/memory/unix/apr_pools.c
    vendor/apache/apr/1.5.2/misc/unix/errorcodes.c
    vendor/apache/apr/1.5.2/misc/win32/misc.c
    vendor/apache/apr/1.5.2/network_io/os2/sockopt.c
    vendor/apache/apr/1.5.2/network_io/unix/sendrecv.c
    vendor/apache/apr/1.5.2/network_io/unix/sockaddr.c
    vendor/apache/apr/1.5.2/network_io/unix/socket_util.c
    vendor/apache/apr/1.5.2/network_io/unix/sockets.c
    vendor/apache/apr/1.5.2/network_io/unix/sockopt.c
    vendor/apache/apr/1.5.2/network_io/win32/sockets.c
    vendor/apache/apr/1.5.2/network_io/win32/sockopt.c
    vendor/apache/apr/1.5.2/passwd/apr_getpass.c
    vendor/apache/apr/1.5.2/poll/unix/epoll.c
    vendor/apache/apr/1.5.2/poll/unix/kqueue.c
    vendor/apache/apr/1.5.2/poll/unix/poll.c
    vendor/apache/apr/1.5.2/poll/unix/pollcb.c
    vendor/apache/apr/1.5.2/poll/unix/pollset.c
    vendor/apache/apr/1.5.2/poll/unix/port.c
    vendor/apache/apr/1.5.2/poll/unix/z_asio.c
    vendor/apache/apr/1.5.2/shmem/beos/shm.c
    vendor/apache/apr/1.5.2/shmem/os2/shm.c
    vendor/apache/apr/1.5.2/shmem/unix/shm.c
    vendor/apache/apr/1.5.2/shmem/win32/shm.c
    vendor/apache/apr/1.5.2/strings/apr_cpystrn.c
    vendor/apache/apr/1.5.2/strings/apr_strings.c
    vendor/apache/apr/1.5.2/support/unix/waitio.c
    vendor/apache/apr/1.5.2/tables/apr_hash.c
    vendor/apache/apr/1.5.2/tables/apr_skiplist.c
    vendor/apache/apr/1.5.2/tables/apr_tables.c
    vendor/apache/apr/1.5.2/test/Makefile.in
    vendor/apache/apr/1.5.2/test/Makefile.win
    vendor/apache/apr/1.5.2/test/NWGNUaprtest
    vendor/apache/apr/1.5.2/test/abts.c
    vendor/apache/apr/1.5.2/test/abts_tests.h
    vendor/apache/apr/1.5.2/test/echod.c
    vendor/apache/apr/1.5.2/test/internal/testucs.c
    vendor/apache/apr/1.5.2/test/sendfile.c
    vendor/apache/apr/1.5.2/test/sockchild.c
    vendor/apache/apr/1.5.2/test/testatomic.c
    vendor/apache/apr/1.5.2/test/testdir.c
    vendor/apache/apr/1.5.2/test/testdll.dsp
    vendor/apache/apr/1.5.2/test/testescape.c
    vendor/apache/apr/1.5.2/test/testfmt.c
    vendor/apache/apr/1.5.2/test/testhash.c
    vendor/apache/apr/1.5.2/test/testlib.dsp
    vendor/apache/apr/1.5.2/test/testlockperf.c
    vendor/apache/apr/1.5.2/test/testmmap.c
    vendor/apache/apr/1.5.2/test/testmutexscope.c
    vendor/apache/apr/1.5.2/test/testpoll.c
    vendor/apache/apr/1.5.2/test/testproc.c
    vendor/apache/apr/1.5.2/test/testskiplist.c
    vendor/apache/apr/1.5.2/test/testsock.c
    vendor/apache/apr/1.5.2/test/teststr.c
    vendor/apache/apr/1.5.2/test/testtable.c
    vendor/apache/apr/1.5.2/test/testutil.h
    vendor/apache/apr/1.5.2/threadproc/netware/thread.c
    vendor/apache/apr/1.5.2/threadproc/win32/proc.c
    vendor/apache/apr/1.5.2/threadproc/win32/signals.c

Removed Paths:
-------------
    vendor/apache/apr/1.5.2/CHANGES
    vendor/apache/apr/1.5.2/LICENSE
    vendor/apache/apr/1.5.2/Makefile.in
    vendor/apache/apr/1.5.2/Makefile.win
    vendor/apache/apr/1.5.2/NOTICE
    vendor/apache/apr/1.5.2/NWGNUmakefile
    vendor/apache/apr/1.5.2/apr.dep
    vendor/apache/apr/1.5.2/apr.dsp
    vendor/apache/apr/1.5.2/apr.mak
    vendor/apache/apr/1.5.2/apr.spec
    vendor/apache/apr/1.5.2/atomic/win32/apr_atomic.c
    vendor/apache/apr/1.5.2/build/MakeEtags
    vendor/apache/apr/1.5.2/build/NWGNUenvironment.inc
    vendor/apache/apr/1.5.2/build/NWGNUmakefile
    vendor/apache/apr/1.5.2/build/NWGNUtail.inc
    vendor/apache/apr/1.5.2/build/PrintPath
    vendor/apache/apr/1.5.2/build/apr_common.m4
    vendor/apache/apr/1.5.2/build/apr_hints.m4
    vendor/apache/apr/1.5.2/build/apr_network.m4
    vendor/apache/apr/1.5.2/build/apr_rules.mk.in
    vendor/apache/apr/1.5.2/build/aprapp.dep
    vendor/apache/apr/1.5.2/build/aprapp.mak
    vendor/apache/apr/1.5.2/build/buildcheck.sh
    vendor/apache/apr/1.5.2/build/config.guess
    vendor/apache/apr/1.5.2/build/config.sub
    vendor/apache/apr/1.5.2/build/gen-build.py
    vendor/apache/apr/1.5.2/build/get-version.sh
    vendor/apache/apr/1.5.2/build/install.sh
    vendor/apache/apr/1.5.2/build/jlibtool.c
    vendor/apache/apr/1.5.2/build/libaprapp.dep
    vendor/apache/apr/1.5.2/build/libaprapp.mak
    vendor/apache/apr/1.5.2/build/lineends.pl
    vendor/apache/apr/1.5.2/build/mkdir.sh
    vendor/apache/apr/1.5.2/build/nw_export.inc
    vendor/apache/apr/1.5.2/build/pkg/buildpkg.sh
    vendor/apache/apr/1.5.2/build/rpm/apr.spec.in
    vendor/apache/apr/1.5.2/build/run-gcov.sh
    vendor/apache/apr/1.5.2/build-outputs.mk
    vendor/apache/apr/1.5.2/build.conf
    vendor/apache/apr/1.5.2/buildconf
    vendor/apache/apr/1.5.2/configure
    vendor/apache/apr/1.5.2/configure.in
    vendor/apache/apr/1.5.2/docs/canonical_filenames.html
    vendor/apache/apr/1.5.2/docs/pool-design.html
    vendor/apache/apr/1.5.2/file_io/os2/filedup.c
    vendor/apache/apr/1.5.2/file_io/os2/open.c
    vendor/apache/apr/1.5.2/file_io/unix/filedup.c
    vendor/apache/apr/1.5.2/file_io/unix/filestat.c
    vendor/apache/apr/1.5.2/file_io/unix/mktemp.c
    vendor/apache/apr/1.5.2/file_io/unix/open.c
    vendor/apache/apr/1.5.2/file_io/unix/pipe.c
    vendor/apache/apr/1.5.2/file_io/unix/readwrite.c
    vendor/apache/apr/1.5.2/file_io/win32/dir.c
    vendor/apache/apr/1.5.2/file_io/win32/filedup.c
    vendor/apache/apr/1.5.2/file_io/win32/open.c
    vendor/apache/apr/1.5.2/file_io/win32/pipe.c
    vendor/apache/apr/1.5.2/file_io/win32/readwrite.c
    vendor/apache/apr/1.5.2/helpers/apr_rename.pl
    vendor/apache/apr/1.5.2/include/apr.h.in
    vendor/apache/apr/1.5.2/include/apr_allocator.h
    vendor/apache/apr/1.5.2/include/apr_errno.h
    vendor/apache/apr/1.5.2/include/apr_file_info.h
    vendor/apache/apr/1.5.2/include/apr_file_io.h
    vendor/apache/apr/1.5.2/include/apr_fnmatch.h
    vendor/apache/apr/1.5.2/include/apr_hash.h
    vendor/apache/apr/1.5.2/include/apr_inherit.h
    vendor/apache/apr/1.5.2/include/apr_lib.h
    vendor/apache/apr/1.5.2/include/apr_mmap.h
    vendor/apache/apr/1.5.2/include/apr_network_io.h
    vendor/apache/apr/1.5.2/include/apr_poll.h
    vendor/apache/apr/1.5.2/include/apr_pools.h
    vendor/apache/apr/1.5.2/include/apr_shm.h
    vendor/apache/apr/1.5.2/include/apr_strings.h
    vendor/apache/apr/1.5.2/include/apr_tables.h
    vendor/apache/apr/1.5.2/include/apr_thread_mutex.h
    vendor/apache/apr/1.5.2/include/apr_thread_proc.h
    vendor/apache/apr/1.5.2/include/apr_time.h
    vendor/apache/apr/1.5.2/include/apr_user.h
    vendor/apache/apr/1.5.2/include/apr_version.h
    vendor/apache/apr/1.5.2/include/arch/netware/apr_private.h
    vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_poll_private.h
    vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_threadproc.h
    vendor/apache/apr/1.5.2/include/arch/unix/apr_private.h.in
    vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_file_io.h
    vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_misc.h
    vendor/apache/apr/1.5.2/libapr.dep
    vendor/apache/apr/1.5.2/libapr.dsp
    vendor/apache/apr/1.5.2/libapr.mak
    vendor/apache/apr/1.5.2/locks/beos/thread_cond.c
    vendor/apache/apr/1.5.2/locks/unix/proc_mutex.c
    vendor/apache/apr/1.5.2/memory/unix/apr_pools.c
    vendor/apache/apr/1.5.2/misc/unix/errorcodes.c
    vendor/apache/apr/1.5.2/misc/win32/misc.c
    vendor/apache/apr/1.5.2/network_io/os2/sockopt.c
    vendor/apache/apr/1.5.2/network_io/unix/sendrecv.c
    vendor/apache/apr/1.5.2/network_io/unix/sockaddr.c
    vendor/apache/apr/1.5.2/network_io/unix/socket_util.c
    vendor/apache/apr/1.5.2/network_io/unix/sockets.c
    vendor/apache/apr/1.5.2/network_io/unix/sockopt.c
    vendor/apache/apr/1.5.2/network_io/win32/sockets.c
    vendor/apache/apr/1.5.2/network_io/win32/sockopt.c
    vendor/apache/apr/1.5.2/passwd/apr_getpass.c
    vendor/apache/apr/1.5.2/poll/unix/epoll.c
    vendor/apache/apr/1.5.2/poll/unix/kqueue.c
    vendor/apache/apr/1.5.2/poll/unix/poll.c
    vendor/apache/apr/1.5.2/poll/unix/pollcb.c
    vendor/apache/apr/1.5.2/poll/unix/pollset.c
    vendor/apache/apr/1.5.2/poll/unix/port.c
    vendor/apache/apr/1.5.2/shmem/beos/shm.c
    vendor/apache/apr/1.5.2/shmem/os2/shm.c
    vendor/apache/apr/1.5.2/shmem/unix/shm.c
    vendor/apache/apr/1.5.2/shmem/win32/shm.c
    vendor/apache/apr/1.5.2/strings/apr_cpystrn.c
    vendor/apache/apr/1.5.2/strings/apr_strings.c
    vendor/apache/apr/1.5.2/support/unix/waitio.c
    vendor/apache/apr/1.5.2/tables/apr_hash.c
    vendor/apache/apr/1.5.2/tables/apr_tables.c
    vendor/apache/apr/1.5.2/test/Makefile.in
    vendor/apache/apr/1.5.2/test/Makefile.win
    vendor/apache/apr/1.5.2/test/NWGNUaprtest
    vendor/apache/apr/1.5.2/test/abts.c
    vendor/apache/apr/1.5.2/test/abts_tests.h
    vendor/apache/apr/1.5.2/test/echod.c
    vendor/apache/apr/1.5.2/test/internal/testucs.c
    vendor/apache/apr/1.5.2/test/sendfile.c
    vendor/apache/apr/1.5.2/test/sockchild.c
    vendor/apache/apr/1.5.2/test/testatomic.c
    vendor/apache/apr/1.5.2/test/testdir.c
    vendor/apache/apr/1.5.2/test/testdll.dsp
    vendor/apache/apr/1.5.2/test/testfmt.c
    vendor/apache/apr/1.5.2/test/testhash.c
    vendor/apache/apr/1.5.2/test/testlib.dsp
    vendor/apache/apr/1.5.2/test/testlockperf.c
    vendor/apache/apr/1.5.2/test/testmmap.c
    vendor/apache/apr/1.5.2/test/testmutexscope.c
    vendor/apache/apr/1.5.2/test/testpoll.c
    vendor/apache/apr/1.5.2/test/testproc.c
    vendor/apache/apr/1.5.2/test/testsock.c
    vendor/apache/apr/1.5.2/test/teststr.c
    vendor/apache/apr/1.5.2/test/testtable.c
    vendor/apache/apr/1.5.2/test/testutil.h
    vendor/apache/apr/1.5.2/threadproc/netware/thread.c
    vendor/apache/apr/1.5.2/threadproc/win32/proc.c
    vendor/apache/apr/1.5.2/threadproc/win32/signals.c

Deleted: vendor/apache/apr/1.5.2/CHANGES
===================================================================
--- vendor/apache/apr/dist/CHANGES	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/CHANGES	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,252 +0,0 @@
-                                                     -*- coding: utf-8 -*-
-Changes for APR 1.4.8
-
-  *) Fix compiltation with FreeBSD on ARM.  [Olli Hauer <ohauer gmx.de>]
-
-  *) Fix 1.4.7 regression in apr_mcast_hops() and apr_mcast_loopback()
-     for AF_INET (IPv4) sockets on most Unix platforms.  [Joe Orton]
-
-  *) Fix the return value of apr_threadattr_detach_get() on some
-     platforms like OS X and Solaris. [Rainer Jung, <dusanv gmail com>]
-
-Changes for APR 1.4.7
-
-  *) Fix apr_sockaddr_info_get() not returning an error in some cases.
-     PR 54779. [Jan Kaluža <jkaluza redhat com>]
-
-  *) Fix amd64 assembler version of apr_atomic_xchgptr(). PR 51851. [Mattias
-     Engdegård <mattiase acm org>]
-
-  *) Fix PPC atomics to work with gcc 4.0. PR 54840. [Mattias Engdegård
-     <mattiase acm org>]
-
-  *) configure: Fix detection of O_NONBLOCK inheritance on busy
-     systems.  [Rainer Jung]
-
-  *) Remove unused code, fix strict C compliance bug in SHA-256
-     implementation.  [Jan Kaluza <jkaluza redhat.com>]
-
-  *) Fix apr_ipsubnet_test() false positives when comparing IPv4
-     subnet representation against an IPv6 address.  PR 54047.  [Joe Orton]
-
-  *) apr_socket_accept_filter: Return success when trying to again set
-     the filter to the same value as before, avoiding an unhelpful
-     APR_EINVAL.  PR 37863.  [Jeff Trawick]
-
-  *) configure: Fix Linux 3.x detection. PR 54001. [Gilles Espinasse
-     <g esp free fr>]
-
-  *) apr_time_exp_*() on Windows: Fix error in the tm_yday field of
-     apr_time_exp_t for times within leap years.  PR 53175.
-     [Jeff Trawick]
-
-  *) Improve platform detection by updating config.guess and config.sub.
-     [Rainer Jung]
-
-  *) Add support for OSX Mountain Lion (10.8) [Jim Jagielski]
-
-  *) Add various gcc function attributes. [Stefan Fritsch]
-
-  *) Fix some problems in apr_sockaddr_info_get() when trying to resolve
-     the loopback addresses of a protocol family that is not otherwise
-     configured on the system. PR 52709. [Nirgal Vourgère
-     <jmv_deb nirgal com>, Stefan Fritsch]
-
-  *) Fix file not being unlocked if truncate call on a file fails.
-     [Mladen Turk]
-
-  *) apr_mcast_hops: Fix EINVAL for IPv6 sockets caused by using byte
-     instead integer for setsockopt. [Mladen Turk]
-
-  *) Windows: Fix compile-time checks for 64-bit builds, resolving a
-     crash in httpd's mod_rewrite.  PR 49155.  [<anindyabaruah gmail.com>]
-
-Changes for APR 1.4.6
-
-  *) Flush write buffer before truncate call on a file.
-     [Mladen Turk]
-
-  *) Randomise hashes by providing a seed. 
-     Assigned CVE-2012-0840, oCERT-2011-003, but not known to be exploitable.
-     [Bojan Smojver, Branko Čibej, Ruediger Pluem et al.]
-
-  *) apr_random: Prevent segfault if pool used to initialize apr_random is
-     destroyed before forking. [Stefan Fritsch]
-
-  *) testrand: Improve child randomness test case. [Rainer Jung]
-
-  *) apr_proc_fork, apr_random_after_fork: disambiguate what happens to the 
-     proc structure passed in, and ensure that the pid is set correctly in 
-     a newly created child; note that merely mixing a PID into the random 
-     seed of a new child doesn't markedly increase entropy. [Sander Temme]
-
-  *) apr_file_open: Avoid fcntl() calls if support for O_CLOEXEC works.
-     PR 48557. [Mike Frysinger <vapier gentoo org>]
-
-  *) apr_dir_make_recursive: Fix race condition that could lead to EEXIST
-     being returned. PR 51254. [William Lee <william lee rainstor com>,
-     Wim Lewis <wiml omnigroup com>]
-
-  *) configure: Fix APR_RESTORE_THE_ENVIRONMENT if the original variable was
-     a single space. PR 50334. [Nathan Phillip Brink <binki gentoo org>]
-
-  *) apr_proc_create: Don't close any of the new stdin/stdout/stderr in the
-     child if it already has the correct FD. PR 51995.
-     [Dan Ports <drkp csail mit edu>]
-
-  *) Fix flag character '#' in combination with format character 'x' in
-     apr snprintf implementations.  [Rainer Jung]
-
-  *) Improve platform detection by updating config.guess and config.sub.
-     [Rainer Jung]
-
-  *) Add libtool2 files to extraclean make target.  [Rainer Jung]
-
-  *) Don't overwrite our config.guess and config.sub
-     when running buildconf.  [Rainer Jung]
-
-  *) Silence autoconf 2.68 warnings.  [Rainer Jung]
-
-Changes for APR 1.4.5
-
-  *) Security: CVE-2011-1928
-     apr_fnmatch(): Fix high CPU loop.  [William Rowe]
-
-  *) Fix top_builddir in installed apr_rules.mk.  [Bojan Smojver]
-
-Changes for APR 1.4.4
-
-  *) Windows: Fix command-line builds.  [William Rowe]
-
-Changes for APR 1.4.3
-
-  *) Security: CVE-2011-0419
-     Reimplement apr_fnmatch() from scratch using a non-recursive
-     algorithm; now has improved compliance with the fnmatch() spec.
-     [William Rowe]
-
-  *) Fix environment-related crash using some non-standard builds on
-     Windows 7/Server 2008.  [Steve Hay <SteveHay planit.com>]
-
-  *) poll, pollset, pollcb on Windows: Handle calls with no file/socket
-     descriptors.  PR 49882.  [Stefan Ruppert <sr myarm.com>, Jeff Trawick]
-
-  *) Fix APR_IPV6_V6ONLY issues on Windows related to run-time behavior 
-     on Windows older than Vista and SDK/MinGW levels without IPV6_V6ONLY.
-     PR 45321.  [Sob <sob hisoftware.cz>]
-
-  *) Fix address handling when accepting an AF_INET socket from a socket
-     bound as AF_INET6.   PR 49678.  [Joe Orton]
-
-  *) Fix error return values from apr_sockaddr_info_get() on Windows for
-     IPv6 builds.  [Ivan Zhakov <ivan visualsvn.com>]
-
-  *) Add new experimental configure option --enable-allocator-uses-mmap to
-     use mmap instead of malloc in apr_allocator_alloc(). This greatly reduces
-     memory fragmentation with malloc implementations (e.g. glibc) that
-     don't handle allocationss of a page-size-multiples in an efficient way.
-     It also makes apr_allocator_max_free_set() actually have some effect
-     on such platforms. [Stefan Fritsch]
-
-  *) configure: Support 64 and 32 bit universal builds for Darwin/
-     OS X 10.6+. [Jim Jagielski]
-
-  *) apr_sockaddr_info_get() on AIX: Fix a problem which could set
-     the port field in the native socket address to 1 when 0 was
-     specified.  PR 46964.  [Jeff Trawick]
-
-  *) configure: Make definition of apr_ino_t independent of
-     _FILE_OFFSET_BITS even on platforms where ino_t is 'unsigned int'.
-     [Stefan Fritsch]
-
-  *) apr_ring: Workaround for aliasing problem that causes gcc 4.5 to
-     miscompile some brigade related code. PR 50190. [Stefan Fritsch]
-
-  *) apr_file_flush_locked(): Handle short writes. [Stefan Fritsch]
-
-  *) apr_pollset_create_ex(): Trap errors from pollset providers.
-     PR 49094.  [Sami Tolvanen <sami.tolvanen mywot.com>]
-
-  *) apr_pollset_create*(): Fix memory lifetime problem with the wakeup
-     pipe when the pollset was created with APR_POLLSET_NOCOPY.
-     [Neil Conway <nrc cs.berkeley.edu>]
-
-  *) Fix detection of some Linux variants when configure is built with
-     recent GNU tools.  [Eric Covener]
-
-  *) Avoid a redundant fcntl() call in apr_file_open() where O_CLOEXEC
-     is supported.  PR 46297.  [Joe Orton]
-
-  *) Improve platform detection by updating config.guess and config.sub.
-     [Rainer Jung]
-
-Changes for APR 1.4.2
-
-  *) Undo a crash-bug introduced in 1.4.1 affecting some applications of 
-     the apr hash and table structures, reported to affect Subversion
-     by Bert Huijben <bert qqmail.nl>.  [Graham Leggett]
-
-Changes for APR 1.4.1
-
-  *) Win32: Properly handle the ERROR_DIRECTORY system error code.
-     [Brane Čibej]
-
-Changes for APR 1.4.0
-
-  *) Windows: Default build configurations assume NT or higher at run-time. 
-
-  *) Add apr_global_mutex_lockfile() for retrieving the file, if any,
-     associated with the mutex.  Add apr_global_mutex_name() for retrieving
-     the name of the lock mechanism used by the underlying proc mutex.
-     [Jeff Trawick]
-
-  *) Add apr_socket_atreadeof to determine whether the receive part of the
-     socket has been closed by the peer.
-     [Ruediger Pluem, Mladen Turk, Joe Orton]
-
-  *) Make apr_pollset and apr_pollcb implementations using providers.
-     Added apr_pollset_create_ex and apr_pollcb_create_ex that allows
-     choosing non-default providers.
-     [Mladen Turk]
-
-  *) Win32: Use WSAPoll as default pollset method if supported and found
-     inside winsock dll.  [Mladen Turk]
-
-  *) apr_temp_dir_get() now checks the TMPDIR environment variable first,
-     instead of third.  [Jim Jagielski]
-
-  *) Add apr_file_sync() and apr_file_datasync() calls.  [Bojan Smojver]
-
-  *) apr_pollset_wakeup() on Windows: Fix core caused by closing the
-     file_socket_pipe with standard file_close. 
-     [Arsen Chaloyan, Mladen Turk]
-
-  *) Introduce apr_hash_do() for iterating over a hash table.  [Mladen Turk]
-
-  *) Make sure WIN32 behaves the same as posix for file-backed shared memory 
-     by removing the file on cleanup/remove.  [Mladen Turk]
-
-  *) Introduce apr_pollset_wakeup() for interrupting the blocking
-     apr_pollset_poll() call.  [Mladen Turk]
-
-  *) Add apr_file_link() function.  PR 44841.  [Mark Heily <mark heily.com>]
-
-Changes for APR 1.3.x and later:
-
-  *) http://svn.apache.org/viewvc/apr/apr/branches/1.3.x/CHANGES?view=markup
-
-Changes for APR 1.2.x and later:
-
-  *) http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/CHANGES?view=markup
-
-Changes for APR 1.1.x and later:
-
-  *) http://svn.apache.org/viewvc/apr/apr/branches/1.1.x/CHANGES?view=markup
-
-Changes for APR 1.0.x and later:
-
-  *) http://svn.apache.org/viewvc/apr/apr/branches/1.0.x/CHANGES?view=markup
-
-Changes for APR 0.9.x and later/earlier:
-
-  *) http://svn.apache.org/viewvc/apr/apr/branches/0.9.x/CHANGES?view=markup

Copied: vendor/apache/apr/1.5.2/CHANGES (from rev 9273, vendor/apache/apr/dist/CHANGES)
===================================================================
--- vendor/apache/apr/1.5.2/CHANGES	                        (rev 0)
+++ vendor/apache/apr/1.5.2/CHANGES	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,200 @@
+                                                     -*- coding: utf-8 -*-
+Changes for APR 1.5.2
+
+  *) SECURITY: CVE-2015-1829 (cve.mitre.org)
+     APR applications using APR named pipe support on Windows can be 
+     vulnerable to a pipe squatting attack from a local process; the extent
+     of the vulnerability, when present, depends on the application.
+     Initial analysis and report was provided by John Hernandez of Casaba 
+     Security via HP SSRT Security Alert.  [Yann Ylavic]
+
+  *) apr_atomic: Fix errors when building on Visual Studio 2013 while
+     maintaining the ability to build on Visual Studio 6 with Windows
+     Server 2003 R2 SDK. PR 57191. [Gregg Smith]
+
+  *) Switch to generic atomics for early/unpatched Solaris 10 not exporting
+     some atomic functions.  PR 55418.  [Yann Ylavic]
+
+  *) apr_file_mktemp() on HP-UX: Remove limitation of 26 temporary files
+     per process.  PR 57677.  [Jeff Trawick]
+
+  *) apr_escape: Correctly calculate the size of the returned string in
+     apr_escape_path and set the correct return value in case we actually
+     escape the string. [<aduryagin gmail.com>] PR 57230.
+
+  *) pollcb on Windows: Handle calls with no file/socket descriptors.
+     Follow up to PR 49882. [Jeff Trawick, Yann Ylavic]
+
+  *) apr_poll(cb): fix error paths returned values and leaks.  [Yann Ylavic]
+
+  *) apr_thread_cond_*wait() on BeOS: Fix broken logic.  PR 45800.
+     [Jochen Voss (no e-mail)]
+
+  *) apr_skiplist: Optimize the number of allocations by reusing pooled or
+     malloc()ed nodes for the lifetime of the skiplist.  [Yann Ylavic]
+
+  *) apr_skiplist: Fix possible multiple-free() on the same value in
+     apr_skiplist_remove_all().  [Yann Ylavic]
+
+  *) apr_pollset: On z/OS, threadsafe apr_pollset_poll() may return
+     "EDC8102I Operation would block" under load.
+     [Pat Odonnell <patod us.ibm.com>]
+
+  *) On z/OS, apr_sockaddr_info_get() with family == APR_UNSPEC was not 
+     returning IPv4 addresses if any IPv6 addresses were returned. 
+     [Eric Covener]
+
+  *) Windows cmake build: Fix an incompatibility with cmake 2.8.12 and
+     later.  [Jeff Trawick]
+
+  *) apr_global_mutex/apr_proc_mutex: Resolve failures with the 
+     POSIX sem implementation in environments which receive signals.
+     [Jeff Trawick]
+
+  *) apr_skiplist: Fix potential corruption of skiplists leading to 
+     results or crashes. [Takashi Sato <takashi tks st>, Eric Covener]
+     PR 56654.
+
+  *) Improve platform detection by updating config.guess and config.sub.
+     [Rainer Jung]
+
+Changes for APR 1.5.1
+
+  *) apr_os_proc_mutex_get() on Unix:  Avoid segfault for cross-
+     process pthread mutexes.  [Yann Ylavic <ylavic.dev gmail.com>]
+
+  *) When using shmget-based shared memory, the ID used for ftok is
+     now an APR hash of the filename instead of the constant '1'.
+     We do this to help avoid collisions. PR 53996 [Jim Jagielski]
+
+  *) apr_socket_atreadeof(): Fix breakage on OS X. [Jim Jagielski]
+
+  *) Fix POSIX shared memory (shm_open) use for named shared memory.
+     Includes adding '--enable-posix-shm' to force POSIX shm if
+     available, and OS X compatibility. PR 55928.
+     [Jozef Hatala <jh-asf skrt org>, Jim Jagielski]
+
+  *) Fix race condition when calling apr_dir_make_recursive from
+     multiple threads on Windows.
+     [Bert Huijben]
+
+  *) Fix apr_escape.c compilation errors on EBCDIC platforms.
+     [Eric Covener]
+
+  *) FreeBSD 10: Correct a regression in 1.5.0 which affected non-
+     blocking sockets in some applications, including httpd.  [Jeff
+     Trawick]
+
+  *) Windows cmake build: Fix incorrect installation of some .pdb
+     files.  Fix incorrect use of some logic intended for Windows 9x,
+     including legacy filesystem interfaces and dynamic loading of
+     some Windows APIs.  [Jeff Trawick]
+
+  *) apr_skiplist: Add compatibility with C++ applications.
+     [Jeff Trawick]
+
+  *) Correct a regression in 1.5.0 which affected out-of-tree
+     builds on Unix.  [Rainer Jung]
+
+  *) Improve platform detection by updating config.guess and config.sub.
+     [Rainer Jung]
+
+Changes for APR 1.5.0
+
+  *) Fix Linux kernel version check to recognize more versions,
+     including versions 3.10 and later.  PR 55690.  [Joe Orton,
+     Arfrever Frehtes Taifersar Arahesis <arfrever.fta gmail.com>]
+
+  *) Add apr_sockaddr_is_wildcard() to check if a socket address
+     refers to the wildcard address for the protocol family (e.g.,
+     0.0.0.0/INADDR_ANY for IPv4).  [Jeff Trawick]
+
+  *) apr_file_dup2() on Windows: Fix debug RTL assertion when 
+     attempting to _commit(stdout) or _commit(stderr).  [Mike Rumph
+     <mike.rumph oracle.com>]
+
+  *) apr_socket_connect() on Windows: Handle WSAEISCONN.  PR 48736.
+     [<inoue ariel-networks.com>, Jeff Trawick]
+
+  *) z/OS: threadsafe apr_pollset_poll support for sockets [Greg Ames]
+
+  *) Windows:  Don't obtain a mutex for buffered file I/O unless the
+     file was opened with the APR_FOPEN_XTHREAD flag.  [Ivan Zhakov
+     <ivan visualsvn.com>]
+
+  *) Windows:  Create named shared memory segments under the "Local"
+     namespace if the caller is unprivileged, fixing an inability of
+     unprivileged callers to use apr_shm_create() with named shared
+     memory segments under recent Windows.  As before, shared memory
+     segments are created under the "Global" namespace for privileged
+     callers.  Add apr_shm_create_ex() and apr_shm_attach_ex(), which
+     provide the ability to override the normal namespace selection.
+     [Jeff Trawick]
+
+  *) Update compile settings for MINT OS.  PR 47181. [Alan Hourihane
+     <alanh fairlite.co.uk>]
+
+  *) Files and pipes on Windows:  Don't create an unused pollset when
+     files and pipes are opened.  [Mladen Turk]
+
+  *) apr_socket_timeout_set() on Windows: If the socket was in a non-
+     blocking state before, disable that setting so that timeouts work.
+     [Jeff Trawick]
+
+  *) File info APIs: Fix calculation of atime and mtime on AIX. PR 51146.
+     [Ruediger Pluem]
+
+  *) Add the apr_escape interface. [Graham Leggett]
+
+  *) Cygwin build fixes.  PRs 51016 and 55586.  [Carlo Bramini
+     <carlo.bramix libero.it>] 
+
+  *) Add apr_skiplist family. [Jim Jagielski]
+
+  *) Add experimental cmake-based build system for Windows.  Refer to 
+     README.cmake for more information.  [Jeff Trawick, Tom Donovan]
+
+  *) Add the apr_table_getm() call, which transparently handles the
+     merging of keys with multiple values. [Graham Leggett]
+
+  *) Add apr_hash_this_key(), apr_hash_this_key_len(), and 
+     apr_hash_this_val() for easier access to those attributes from
+     a hash iterator.  [Hyrum K. Wright <hyrum_wright mail.utexas.edu>]
+
+  *) MinGW/MSYS:  Support shared builds of APR, other general improvements
+     to support of this toolchain.  PR 46175.  [Carlo Bramini 
+     <carlo.bramix libero.it>]  
+
+  *) Improve platform detection by updating config.guess and config.sub.
+     [Rainer Jung]
+
+  *) apr_socket_opt_set: Add support for APR_SO_BROADCAST. PR 46389.
+     [Armin Müller <mueller itestra com>]
+
+  *) Enable platform specific support for the opening of a file or
+     pipe in non-blocking mode through the APR_FOPEN_NONBLOCK flag.
+     [Graham Leggett]
+
+Changes for APR 1.4.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.4.x/CHANGES?view=markup
+
+Changes for APR 1.3.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.3.x/CHANGES?view=markup
+
+Changes for APR 1.2.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/CHANGES?view=markup
+
+Changes for APR 1.1.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.1.x/CHANGES?view=markup
+
+Changes for APR 1.0.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.0.x/CHANGES?view=markup
+
+Changes for APR 0.9.x and later/earlier:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/0.9.x/CHANGES?view=markup

Deleted: vendor/apache/apr/1.5.2/LICENSE
===================================================================
--- vendor/apache/apr/dist/LICENSE	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/LICENSE	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,341 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-
-APACHE PORTABLE RUNTIME SUBCOMPONENTS: 
-
-The Apache Portable Runtime includes a number of subcomponents with
-separate copyright notices and license terms. Your use of the source
-code for the these subcomponents is subject to the terms and
-conditions of the following licenses. 
-
-From strings/apr_fnmatch.c, include/apr_fnmatch.h, misc/unix/getopt.c,
-file_io/unix/mktemp.c, strings/apr_strings.c:
-
-/* 
- * Copyright (c) 1987, 1993, 1994
- *      The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *      This product includes software developed by the University of
- *      California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
-
-From network_io/unix/inet_ntop.c, network_io/unix/inet_pton.c:
-
-/* Copyright (c) 1996 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
-
-From dso/aix/dso.c:
-
- *  Based on libdl (dlfcn.c/dlfcn.h) which is
- *  Copyright (c) 1992,1993,1995,1996,1997,1988
- *  Jens-Uwe Mager, Helios Software GmbH, Hannover, Germany.
- *
- *  Not derived from licensed software.
- *
- *  Permission is granted to freely use, copy, modify, and redistribute
- *  this software, provided that the author is not construed to be liable
- *  for any results of using the software, alterations are clearly marked
- *  as such, and this notice is not modified.
-
-From strings/apr_strnatcmp.c, include/apr_strings.h:
-
-  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.
-  Copyright (C) 2000 by Martin Pool <mbp at humbug.org.au>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-From strings/apr_snprintf.c:
-
-  *
-  * cvt - IEEE floating point formatting routines.
-  *       Derived from UNIX V7, Copyright(C) Caldera International Inc.
-  *
-
-  Copyright(C) Caldera International Inc.  2001-2002.  All rights reserved.
-  
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-  Redistributions of source code and documentation must retain the above
-  copyright notice, this list of conditions and the following disclaimer.
-
-  Redistributions in binary form must reproduce the above copyright
-  notice, this list of conditions and the following disclaimer in the
-  documentation and/or other materials provided with the distribution.
-
-  All advertising materials mentioning features or use of this software
-  must display the following acknowledgement:
-
-     This product includes software developed or owned by  Caldera
-     International, Inc.
-
-  Neither the name of Caldera International, Inc. nor the names of other
-  contributors may be used to endorse or promote products derived from
-  this software without specific prior written permission.
-
-  USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
-  INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
-  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
-  NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE FOR ANY DIRECT,
-  INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-

Copied: vendor/apache/apr/1.5.2/LICENSE (from rev 9273, vendor/apache/apr/dist/LICENSE)
===================================================================
--- vendor/apache/apr/1.5.2/LICENSE	                        (rev 0)
+++ vendor/apache/apr/1.5.2/LICENSE	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,341 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+
+APACHE PORTABLE RUNTIME SUBCOMPONENTS: 
+
+The Apache Portable Runtime includes a number of subcomponents with
+separate copyright notices and license terms. Your use of the source
+code for these subcomponents is subject to the terms and conditions
+of the following licenses. 
+
+From strings/apr_fnmatch.c, include/apr_fnmatch.h, misc/unix/getopt.c,
+file_io/unix/mktemp.c, strings/apr_strings.c:
+
+/* 
+ * Copyright (c) 1987, 1993, 1994
+ *      The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+
+From network_io/unix/inet_ntop.c, network_io/unix/inet_pton.c:
+
+/* Copyright (c) 1996 by Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+
+From dso/aix/dso.c:
+
+ *  Based on libdl (dlfcn.c/dlfcn.h) which is
+ *  Copyright (c) 1992,1993,1995,1996,1997,1988
+ *  Jens-Uwe Mager, Helios Software GmbH, Hannover, Germany.
+ *
+ *  Not derived from licensed software.
+ *
+ *  Permission is granted to freely use, copy, modify, and redistribute
+ *  this software, provided that the author is not construed to be liable
+ *  for any results of using the software, alterations are clearly marked
+ *  as such, and this notice is not modified.
+
+From strings/apr_strnatcmp.c, include/apr_strings.h:
+
+  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.
+  Copyright (C) 2000 by Martin Pool <mbp at humbug.org.au>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+From strings/apr_snprintf.c:
+
+  *
+  * cvt - IEEE floating point formatting routines.
+  *       Derived from UNIX V7, Copyright(C) Caldera International Inc.
+  *
+
+  Copyright(C) Caldera International Inc.  2001-2002.  All rights reserved.
+  
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+  Redistributions of source code and documentation must retain the above
+  copyright notice, this list of conditions and the following disclaimer.
+
+  Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+  All advertising materials mentioning features or use of this software
+  must display the following acknowledgement:
+
+     This product includes software developed or owned by  Caldera
+     International, Inc.
+
+  Neither the name of Caldera International, Inc. nor the names of other
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+  USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+  INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+  NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE FOR ANY DIRECT,
+  INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+

Deleted: vendor/apache/apr/1.5.2/Makefile.in
===================================================================
--- vendor/apache/apr/dist/Makefile.in	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/Makefile.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,129 +0,0 @@
-
-srcdir=@srcdir@
-VPATH=@srcdir@
-top_srcdir=@apr_srcdir@
-top_blddir=@apr_builddir@
-
-#
-# APR (Apache Portable Runtime) library Makefile.
-#
-CPP = @CPP@
-
-# get substituted into some targets
-APR_MAJOR_VERSION=@APR_MAJOR_VERSION@
-
-#
-# Macros for supporting directories
-#
-INCDIR=./include
-OSDIR=$(top_srcdir)/include/arch/@OSDIR@
-DEFOSDIR=$(INCDIR)/arch/@DEFAULT_OSDIR@
-INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR) -I$(top_srcdir)/include/arch/@DEFAULT_OSDIR@ -I$(top_srcdir)/include
-
-#
-# Macros for target determination
-#
-CLEAN_SUBDIRS= test
-INSTALL_SUBDIRS=@INSTALL_SUBDIRS@
-
-TARGET_LIB = lib at APR_LIBNAME@.la
-APR_PCFILE = apr-$(APR_MAJOR_VERSION).pc
-APR_CONFIG = apr-$(APR_MAJOR_VERSION)-config
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-#
-# Rules for building specific targets, starting with 'all' for
-# building the entire package.
-#
-TARGETS = $(TARGET_LIB) apr.exp apr-config.out build/apr_rules.out
-
-LT_VERSION = @LT_VERSION@
-
-# bring in rules.mk for standard functionality
- at INCLUDE_RULES@
- at INCLUDE_OUTPUTS@
-
-CLEAN_TARGETS = apr-config.out apr.exp exports.c export_vars.c .make.dirs \
-	build/apr_rules.out
-DISTCLEAN_TARGETS = config.cache config.log config.status \
-	include/apr.h include/arch/unix/apr_private.h \
-	libtool $(APR_CONFIG) build/apr_rules.mk apr.pc \
-	build/pkg/pkginfo
-EXTRACLEAN_TARGETS = configure aclocal.m4 include/arch/unix/apr_private.h.in \
-	build-outputs.mk build/ltcf-c.sh build/aclocal.m4 \
-	build/ltconfig build/ltmain.sh \
-	build/argz.m4 build/libtool.m4 build/ltoptions.m4 \
-	build/ltsugar.m4 build/ltversion.m4 build/lt~obsolete.m4
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-libdir=@libdir@
-includedir=@includedir@
-installbuilddir=@installbuilddir@
-
-# Create apr-config script suitable for the install tree
-apr-config.out: $(APR_CONFIG)
-	sed 's,^\(location=\).*$$,\1installed,' < $(APR_CONFIG) > $@
-
-# Create apr_rules.mk suitable for the install tree
-build/apr_rules.out: build/apr_rules.mk
-	sed -e 's,^\(apr_build.*=\).*$$,\1$(installbuilddir),' -e 's,^\(top_build.*=\).*$$,\1$(installbuilddir),' < build/apr_rules.mk > $@
-
-install: $(TARGETS)
-	$(APR_MKDIR) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(installbuilddir) \
-		     $(DESTDIR)$(libdir)/pkgconfig $(DESTDIR)$(includedir)
-	$(INSTALL_DATA) $(top_blddir)/include/apr.h $(DESTDIR)$(includedir)
-	for f in $(top_srcdir)/include/apr_*.h; do \
-	    $(INSTALL_DATA) $${f} $(DESTDIR)$(includedir); \
-	done
-	$(LIBTOOL) --mode=install $(INSTALL) -m 755 $(TARGET_LIB) $(DESTDIR)$(libdir)
-	$(INSTALL_DATA) apr.exp $(DESTDIR)$(libdir)/apr.exp
-	$(INSTALL_DATA) apr.pc $(DESTDIR)$(libdir)/pkgconfig/$(APR_PCFILE)
-	for f in libtool shlibtool; do \
-	    if test -f $${f}; then $(INSTALL) -m 755 $${f} $(DESTDIR)$(installbuilddir); fi; \
-	done
-	$(INSTALL) -m 755 $(top_srcdir)/build/mkdir.sh $(DESTDIR)$(installbuilddir)
-	for f in make_exports.awk make_var_export.awk; do \
-	    $(INSTALL_DATA) $(top_srcdir)/build/$${f} $(DESTDIR)$(installbuilddir); \
-	done
-	$(INSTALL_DATA) build/apr_rules.out $(DESTDIR)$(installbuilddir)/apr_rules.mk
-	$(INSTALL) -m 755 apr-config.out $(DESTDIR)$(bindir)/$(APR_CONFIG)
-	@if [ $(INSTALL_SUBDIRS) != "none" ]; then \
-            for i in $(INSTALL_SUBDIRS); do \
-	        ( cd $$i ; $(MAKE) DESTDIR=$(DESTDIR) install ); \
-	    done \
-	fi
-
-$(TARGET_LIB): $(OBJECTS)
-	$(LINK) @lib_target@ $(ALL_LIBS)
-
-exports.c: $(HEADERS)
-	$(APR_MKEXPORT) $(HEADERS) > $@
-
-export_vars.c: $(HEADERS)
-	$(APR_MKVAREXPORT) $(HEADERS) > $@
-
-apr.exp: exports.c export_vars.c
-	@echo "#! lib at APR_LIBNAME@.so" > $@
-	@echo "* This file was AUTOGENERATED at build time." >> $@
-	@echo "* Please do not edit by hand." >> $@
-	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
-	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.c | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@
-
-dox:
-	doxygen $(top_srcdir)/docs/doxygen.conf
-
-gcov: 
-	@build/run-gcov.sh
-
-test: check
-check: $(TARGET_LIB)
-	cd test && $(MAKE) all check
-
-etags:
-	etags `find . -name '*.[ch]'`
-
-# DO NOT REMOVE
-docs: $(INCDIR)/*.h

Copied: vendor/apache/apr/1.5.2/Makefile.in (from rev 9273, vendor/apache/apr/dist/Makefile.in)
===================================================================
--- vendor/apache/apr/1.5.2/Makefile.in	                        (rev 0)
+++ vendor/apache/apr/1.5.2/Makefile.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,148 @@
+
+srcdir=@srcdir@
+VPATH=@srcdir@
+top_srcdir=@apr_srcdir@
+top_blddir=@apr_builddir@
+
+#
+# APR (Apache Portable Runtime) library Makefile.
+#
+CPP = @CPP@
+
+# get substituted into some targets
+APR_MAJOR_VERSION=@APR_MAJOR_VERSION@
+
+#
+# Macros for supporting directories
+#
+INCDIR=./include
+OSDIR=$(top_srcdir)/include/arch/@OSDIR@
+DEFOSDIR=$(INCDIR)/arch/@DEFAULT_OSDIR@
+INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR) -I$(top_srcdir)/include/arch/@DEFAULT_OSDIR@ -I$(top_srcdir)/include -I$(top_srcdir)/include/private -I$(top_blddir)/include/private
+
+#
+# Macros for target determination
+#
+CLEAN_SUBDIRS= test
+INSTALL_SUBDIRS=@INSTALL_SUBDIRS@
+
+TARGET_LIB = lib at APR_LIBNAME@.la
+APR_PCFILE = apr-$(APR_MAJOR_VERSION).pc
+APR_CONFIG = apr-$(APR_MAJOR_VERSION)-config
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+#
+# Rules for building specific targets, starting with 'all' for
+# building the entire package.
+#
+TARGETS = $(TARGET_LIB) include/private/apr_escape_test_char.h apr.exp apr-config.out build/apr_rules.out
+
+LT_VERSION = @LT_VERSION@
+
+# bring in rules.mk for standard functionality
+ at INCLUDE_RULES@
+ at INCLUDE_OUTPUTS@
+
+CLEAN_TARGETS = apr-config.out apr.exp exports.c export_vars.c .make.dirs \
+	build/apr_rules.out tools/gen_test_char at EXEEXT@ \
+	tools/gen_test_char.o tools/gen_test_char.lo \
+	include/private/apr_escape_test_char.h
+DISTCLEAN_TARGETS = config.cache config.log config.status \
+	include/apr.h include/arch/unix/apr_private.h \
+	libtool $(APR_CONFIG) build/apr_rules.mk apr.pc \
+	build/pkg/pkginfo
+EXTRACLEAN_TARGETS = configure aclocal.m4 include/arch/unix/apr_private.h.in \
+	build-outputs.mk build/ltcf-c.sh build/aclocal.m4 \
+	build/ltconfig build/ltmain.sh \
+	build/argz.m4 build/libtool.m4 build/ltoptions.m4 \
+	build/ltsugar.m4 build/ltversion.m4 build/lt~obsolete.m4
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+libdir=@libdir@
+includedir=@includedir@
+installbuilddir=@installbuilddir@
+
+# Create apr-config script suitable for the install tree
+apr-config.out: $(APR_CONFIG)
+	sed 's,^\(location=\).*$$,\1installed,' < $(APR_CONFIG) > $@
+
+# Create apr_rules.mk suitable for the install tree
+build/apr_rules.out: build/apr_rules.mk
+	sed -e 's,^\(apr_build.*=\).*$$,\1$(installbuilddir),' -e 's,^\(top_build.*=\).*$$,\1$(installbuilddir),' < build/apr_rules.mk > $@
+
+install: $(TARGETS)
+	$(APR_MKDIR) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(installbuilddir) \
+		     $(DESTDIR)$(libdir)/pkgconfig $(DESTDIR)$(includedir)
+	$(INSTALL_DATA) $(top_blddir)/include/apr.h $(DESTDIR)$(includedir)
+	for f in $(top_srcdir)/include/apr_*.h; do \
+	    $(INSTALL_DATA) $${f} $(DESTDIR)$(includedir); \
+	done
+	$(LIBTOOL) --mode=install $(INSTALL) -m 755 $(TARGET_LIB) $(DESTDIR)$(libdir)
+	$(INSTALL_DATA) apr.exp $(DESTDIR)$(libdir)/apr.exp
+	$(INSTALL_DATA) apr.pc $(DESTDIR)$(libdir)/pkgconfig/$(APR_PCFILE)
+	for f in libtool shlibtool; do \
+	    if test -f $${f}; then $(INSTALL) -m 755 $${f} $(DESTDIR)$(installbuilddir); fi; \
+	done
+	$(INSTALL) -m 755 $(top_srcdir)/build/mkdir.sh $(DESTDIR)$(installbuilddir)
+	for f in make_exports.awk make_var_export.awk; do \
+	    $(INSTALL_DATA) $(top_srcdir)/build/$${f} $(DESTDIR)$(installbuilddir); \
+	done
+	$(INSTALL_DATA) build/apr_rules.out $(DESTDIR)$(installbuilddir)/apr_rules.mk
+	$(INSTALL) -m 755 apr-config.out $(DESTDIR)$(bindir)/$(APR_CONFIG)
+	@if [ $(INSTALL_SUBDIRS) != "none" ]; then \
+            for i in $(INSTALL_SUBDIRS); do \
+	        ( cd $$i ; $(MAKE) DESTDIR=$(DESTDIR) install ); \
+	    done \
+	fi
+
+$(TARGET_LIB): $(OBJECTS)
+	$(LINK) @lib_target@ $(ALL_LIBS)
+
+encoding/apr_escape.lo: include/private/apr_escape_test_char.h 
+
+exports.c: $(HEADERS)
+	$(APR_MKEXPORT) $(HEADERS) > $@
+
+export_vars.c: $(HEADERS)
+	$(APR_MKVAREXPORT) $(HEADERS) > $@
+
+apr.exp: exports.c export_vars.c
+	@echo "#! lib at APR_LIBNAME@.so" > $@
+	@echo "* This file was AUTOGENERATED at build time." >> $@
+	@echo "* Please do not edit by hand." >> $@
+	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
+	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.c | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@
+
+dox:
+	doxygen $(top_srcdir)/docs/doxygen.conf
+
+gcov: 
+	@build/run-gcov.sh
+
+test: check
+check: $(TARGET_LIB)
+	cd test && $(MAKE) all check
+
+etags:
+	etags `find . -name '*.[ch]'`
+
+OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)
+tools/gen_test_char.lo: tools/gen_test_char.c
+	$(APR_MKDIR) tools
+	$(LT_COMPILE)
+
+tools/gen_test_char at EXEEXT@: $(OBJECTS_gen_test_char)
+	$(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS)
+
+include/private/apr_escape_test_char.h: tools/gen_test_char at EXEEXT@
+	$(APR_MKDIR) include/private
+	tools/gen_test_char at EXEEXT@ > $@
+
+LINK_PROG = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) $(LT_LDFLAGS) \
+	    @LT_NO_INSTALL@ $(ALL_LDFLAGS) -o $@
+
+# DO NOT REMOVE
+docs: $(INCDIR)/*.h

Deleted: vendor/apache/apr/1.5.2/Makefile.win
===================================================================
--- vendor/apache/apr/dist/Makefile.win	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/Makefile.win	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,181 +0,0 @@
-# Makefile.win for Win32 APR alone
-#
-# Targets are:
-#
-#     buildall - compile everything
-#     checkall - run APR regression tests
-#     install  - compile everything
-#     clean    - mop up everything
-#
-# You can override the build mechansim, choose only one;
-#
-#     USEMAK=1 - compile from exported make files
-#     USEDSW=1 - compile from .dsw / .dsp VC6 projects
-#     USESLN=1 - compile from converted .sln / .vcproj VC7+ files
-#
-# Define ARCH to your desired preference (your PATH must point
-# to the correct compiler tools!)  Choose only one;
-#
-#     ARCH="Win32 Release"
-#     ARCH="Win32 Debug"
-#     ARCH="Win32 Release9x"
-#     ARCH="Win32 Debug9x"
-#     ARCH="x64 Release"
-#     ARCH="x64 Debug"
-#
-# For example;
-#
-#   nmake -f Makefile.win PREFIX=C:\APR buildall checkall install clean
-#
-
-!IF EXIST("apr.sln") && ([devenv /help > NUL 2>&1] == 0) \
-    && !defined(USEMAK) && !defined(USEDSW)
-USESLN=1
-USEMAK=0
-USEDSW=0
-!ELSEIF EXIST("apr.mak") && !defined(USEDSW)
-USESLN=0
-USEMAK=1
-USEDSW=0
-!ELSE
-USESLN=0
-USEMAK=0
-USEDSW=1
-!ENDIF
-
-PREFIX=..\apr-dist
-
-!IF [$(COMSPEC) /c cl /nologo /? \
-	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
-ARCH=x64 Release
-!ELSE
-ARCH=Win32 Release
-!ENDIF
-
-!MESSAGE ARCH        = $(ARCH)
-!MESSAGE PREFIX      = $(PREFIX)  (install path)
-
-
-# Utility and Translation things, nothing here for the user
-#
-!IF "$(ARCH)" == "Win32 Release"
-SLNARCH=Release|Win32
-ARCHOSPATH=Release
-LIBSOSPATH=LibR
-!ELSEIF "$(ARCH)" == "Win32 Debug"
-SLNARCH=Debug|Win32
-ARCHOSPATH=Debug
-LIBSOSPATH=LibD
-!ELSEIF "$(ARCH)" == "Win32 Release9x"
-SLNARCH=Release9x|Win32
-ARCHOSPATH=9x\Release
-LIBSOSPATH=9x\LibR
-!ELSEIF "$(ARCH)" == "Win32 Debug9x"
-SLNARCH=Debug9x|Win32
-ARCHOSPATH=9x\Debug
-LIBSOSPATH=9x\LibD
-!ELSEIF "$(ARCH)" == "x64 Release"
-SLNARCH=Release|x64
-ARCHOSPATH=x64\Release
-LIBSOSPATH=x64\LibR
-!ELSEIF "$(ARCH)" == "x64 Debug"
-SLNARCH=Debug|x64
-ARCHOSPATH=x64\Debug
-LIBSOSPATH=x64\LibD
-!ENDIF
-
-!IFNDEF MAKEOPT
-# Only default the behavior if MAKEOPT= is omitted
-!IFDEF _NMAKE_VER
-# Microsoft NMake options
-MAKEOPT=-nologo
-!ELSEIF "$(MAKE)" == "make"
-# Borland make options?  Not really supported (yet)
-MAKEOPT=-s -N
-!ENDIF
-!ENDIF
-
-
-all: buildall checkall
-
-!IF $(USEMAK) == 1
-
-clean:
-	$(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \
-		CTARGET=CLEAN buildall
-
-buildall:
-	$(MAKE) $(MAKEOPT) -f apr.mak         CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET)
-	$(MAKE) $(MAKEOPT) -f libapr.mak      CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET)
-	cd build
-	 $(MAKE) $(MAKEOPT) -f aprapp.mak     CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET)
-	 $(MAKE) $(MAKEOPT) -f libaprapp.mak  CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET)
-	cd ..
-
-!ELSEIF $(USESLN) == 1
-
-clean:
-	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libaprapp
-	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libapr
-	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project aprapp
-	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project apr
-
-buildall:
-	devenv apr.sln /useenv /build "$(SLNARCH)" /project apr
-	devenv apr.sln /useenv /build "$(SLNARCH)" /project aprapp
-	devenv apr.sln /useenv /build "$(SLNARCH)" /project libapr
-	devenv apr.sln /useenv /build "$(SLNARCH)" /project libaprapp
-
-!ELSE
-#	$(USEDSP) == 1
-
-clean:
-	-msdev apr.dsw /USEENV /MAKE "libaprapp - $(ARCH)" /CLEAN
-	-msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)" /CLEAN
-	-msdev apr.dsw /USEENV /MAKE "aprapp - $(ARCH)" /CLEAN
-	-msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)" /CLEAN
-
-buildall:
-	@msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)"
-	@msdev apr.dsw /USEENV /MAKE "aprapp - $(ARCH)"
-	@msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)"
-	@msdev apr.dsw /USEENV /MAKE "libaprapp - $(ARCH)"
-
-!ENDIF
-
-
-checkapr:
-	cd test
-	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
-		OUTDIR=$(LIBSOSPATH) check
-	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
-		OUTDIR=$(ARCHOSPATH) check
-	 cd ..
-
-checkall: checkapr
-
-
-install:
-	echo Y >.y
-	echo A >.A
-	@if NOT EXIST "$(PREFIX)\."		mkdir "$(PREFIX)"
-	@if NOT EXIST "$(PREFIX)\bin\."		mkdir "$(PREFIX)\bin"
-	@if NOT EXIST "$(PREFIX)\include\."	mkdir "$(PREFIX)\include"
-	@if NOT EXIST "$(PREFIX)\lib\."		mkdir "$(PREFIX)\lib"
-	copy CHANGES "$(PREFIX)\APR-CHANGES.txt" <.y
-	copy LICENSE "$(PREFIX)\APR-LICENSE.txt" <.y
-	copy NOTICE  "$(PREFIX)\APR-NOTICE.txt"  <.y
-	xcopy include\*.h		"$(PREFIX)\include\" /d < .a
-	copy $(LIBSOSPATH)\apr-1.lib		"$(PREFIX)\lib\" <.y
-	copy $(LIBSOSPATH)\apr-1.pdb		"$(PREFIX)\lib\" <.y
-	copy $(LIBSOSPATH)\aprapp-1.lib		"$(PREFIX)\lib\" <.y
-	copy $(LIBSOSPATH)\aprapp-1.pdb		"$(PREFIX)\lib\" <.y
-	copy $(ARCHOSPATH)\libaprapp-1.lib	"$(PREFIX)\lib\" <.y
-	copy $(ARCHOSPATH)\libaprapp-1.pdb	"$(PREFIX)\lib\" <.y
-	copy $(ARCHOSPATH)\libapr-1.lib		"$(PREFIX)\lib\" <.y
-	copy $(ARCHOSPATH)\libapr-1.exp		"$(PREFIX)\lib\" <.y
-	copy $(ARCHOSPATH)\libapr-1.dll		"$(PREFIX)\bin\" <.y
-	copy $(ARCHOSPATH)\libapr-1.pdb		"$(PREFIX)\bin\" <.y
-	del .y
-	del .a
-

Copied: vendor/apache/apr/1.5.2/Makefile.win (from rev 9273, vendor/apache/apr/dist/Makefile.win)
===================================================================
--- vendor/apache/apr/1.5.2/Makefile.win	                        (rev 0)
+++ vendor/apache/apr/1.5.2/Makefile.win	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,181 @@
+# Makefile.win for Win32 APR alone
+#
+# Targets are:
+#
+#     buildall - compile everything
+#     checkall - run APR regression tests
+#     install  - compile everything
+#     clean    - mop up everything
+#
+# You can override the build mechanism, choose only one;
+#
+#     USEMAK=1 - compile from exported make files
+#     USEDSW=1 - compile from .dsw / .dsp VC6 projects
+#     USESLN=1 - compile from converted .sln / .vcproj VC7+ files
+#
+# Define ARCH to your desired preference (your PATH must point
+# to the correct compiler tools!)  Choose only one;
+#
+#     ARCH="Win32 Release"
+#     ARCH="Win32 Debug"
+#     ARCH="Win32 Release9x"
+#     ARCH="Win32 Debug9x"
+#     ARCH="x64 Release"
+#     ARCH="x64 Debug"
+#
+# For example;
+#
+#   nmake -f Makefile.win PREFIX=C:\APR buildall checkall install clean
+#
+
+!IF EXIST("apr.sln") && ([devenv /help > NUL 2>&1] == 0) \
+    && !defined(USEMAK) && !defined(USEDSW)
+USESLN=1
+USEMAK=0
+USEDSW=0
+!ELSEIF EXIST("apr.mak") && !defined(USEDSW)
+USESLN=0
+USEMAK=1
+USEDSW=0
+!ELSE
+USESLN=0
+USEMAK=0
+USEDSW=1
+!ENDIF
+
+PREFIX=..\apr-dist
+
+!IF [$(COMSPEC) /c cl /nologo /? \
+	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
+ARCH=x64 Release
+!ELSE
+ARCH=Win32 Release
+!ENDIF
+
+!MESSAGE ARCH        = $(ARCH)
+!MESSAGE PREFIX      = $(PREFIX)  (install path)
+
+
+# Utility and Translation things, nothing here for the user
+#
+!IF "$(ARCH)" == "Win32 Release"
+SLNARCH=Release|Win32
+ARCHOSPATH=Release
+LIBSOSPATH=LibR
+!ELSEIF "$(ARCH)" == "Win32 Debug"
+SLNARCH=Debug|Win32
+ARCHOSPATH=Debug
+LIBSOSPATH=LibD
+!ELSEIF "$(ARCH)" == "Win32 Release9x"
+SLNARCH=Release9x|Win32
+ARCHOSPATH=9x\Release
+LIBSOSPATH=9x\LibR
+!ELSEIF "$(ARCH)" == "Win32 Debug9x"
+SLNARCH=Debug9x|Win32
+ARCHOSPATH=9x\Debug
+LIBSOSPATH=9x\LibD
+!ELSEIF "$(ARCH)" == "x64 Release"
+SLNARCH=Release|x64
+ARCHOSPATH=x64\Release
+LIBSOSPATH=x64\LibR
+!ELSEIF "$(ARCH)" == "x64 Debug"
+SLNARCH=Debug|x64
+ARCHOSPATH=x64\Debug
+LIBSOSPATH=x64\LibD
+!ENDIF
+
+!IFNDEF MAKEOPT
+# Only default the behavior if MAKEOPT= is omitted
+!IFDEF _NMAKE_VER
+# Microsoft NMake options
+MAKEOPT=-nologo
+!ELSEIF "$(MAKE)" == "make"
+# Borland make options?  Not really supported (yet)
+MAKEOPT=-s -N
+!ENDIF
+!ENDIF
+
+
+all: buildall checkall
+
+!IF $(USEMAK) == 1
+
+clean:
+	$(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \
+		CTARGET=CLEAN buildall
+
+buildall:
+	$(MAKE) $(MAKEOPT) -f apr.mak         CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET)
+	$(MAKE) $(MAKEOPT) -f libapr.mak      CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET)
+	cd build
+	 $(MAKE) $(MAKEOPT) -f aprapp.mak     CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET)
+	 $(MAKE) $(MAKEOPT) -f libaprapp.mak  CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET)
+	cd ..
+
+!ELSEIF $(USESLN) == 1
+
+clean:
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libaprapp
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libapr
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project aprapp
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project apr
+
+buildall:
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project apr
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project aprapp
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project libapr
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project libaprapp
+
+!ELSE
+#	$(USEDSP) == 1
+
+clean:
+	-msdev apr.dsw /USEENV /MAKE "libaprapp - $(ARCH)" /CLEAN
+	-msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)" /CLEAN
+	-msdev apr.dsw /USEENV /MAKE "aprapp - $(ARCH)" /CLEAN
+	-msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)" /CLEAN
+
+buildall:
+	@msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)"
+	@msdev apr.dsw /USEENV /MAKE "aprapp - $(ARCH)"
+	@msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)"
+	@msdev apr.dsw /USEENV /MAKE "libaprapp - $(ARCH)"
+
+!ENDIF
+
+
+checkapr:
+	cd test
+	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
+		OUTDIR=$(LIBSOSPATH) check
+	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
+		OUTDIR=$(ARCHOSPATH) check
+	 cd ..
+
+checkall: checkapr
+
+
+install:
+	echo Y >.y
+	echo A >.A
+	@if NOT EXIST "$(PREFIX)\."		mkdir "$(PREFIX)"
+	@if NOT EXIST "$(PREFIX)\bin\."		mkdir "$(PREFIX)\bin"
+	@if NOT EXIST "$(PREFIX)\include\."	mkdir "$(PREFIX)\include"
+	@if NOT EXIST "$(PREFIX)\lib\."		mkdir "$(PREFIX)\lib"
+	copy CHANGES "$(PREFIX)\APR-CHANGES.txt" <.y
+	copy LICENSE "$(PREFIX)\APR-LICENSE.txt" <.y
+	copy NOTICE  "$(PREFIX)\APR-NOTICE.txt"  <.y
+	xcopy include\*.h		"$(PREFIX)\include\" /d < .a
+	copy $(LIBSOSPATH)\apr-1.lib		"$(PREFIX)\lib\" <.y
+	copy $(LIBSOSPATH)\apr-1.pdb		"$(PREFIX)\lib\" <.y
+	copy $(LIBSOSPATH)\aprapp-1.lib		"$(PREFIX)\lib\" <.y
+	copy $(LIBSOSPATH)\aprapp-1.pdb		"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libaprapp-1.lib	"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libaprapp-1.pdb	"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libapr-1.lib		"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libapr-1.exp		"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libapr-1.dll		"$(PREFIX)\bin\" <.y
+	copy $(ARCHOSPATH)\libapr-1.pdb		"$(PREFIX)\bin\" <.y
+	del .y
+	del .a
+

Deleted: vendor/apache/apr/1.5.2/NOTICE
===================================================================
--- vendor/apache/apr/dist/NOTICE	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/NOTICE	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,15 +0,0 @@
-Apache Portable Runtime
-Copyright (c) 2011 The Apache Software Foundation.
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-Portions of this software were developed at the National Center
-for Supercomputing Applications (NCSA) at the University of
-Illinois at Urbana-Champaign.
-
-This software contains code derived from the RSA Data Security
-Inc. MD5 Message-Digest Algorithm.
-
-This software contains code derived from UNIX V7, Copyright(C)
-Caldera International Inc.

Copied: vendor/apache/apr/1.5.2/NOTICE (from rev 9273, vendor/apache/apr/dist/NOTICE)
===================================================================
--- vendor/apache/apr/1.5.2/NOTICE	                        (rev 0)
+++ vendor/apache/apr/1.5.2/NOTICE	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,15 @@
+Apache Portable Runtime
+Copyright (c) 2000-2015 The Apache Software Foundation.
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions of this software were developed at the National Center
+for Supercomputing Applications (NCSA) at the University of
+Illinois at Urbana-Champaign.
+
+This software contains code derived from the RSA Data Security
+Inc. MD5 Message-Digest Algorithm.
+
+This software contains code derived from UNIX V7, Copyright(C)
+Caldera International Inc.

Deleted: vendor/apache/apr/1.5.2/NWGNUmakefile
===================================================================
--- vendor/apache/apr/dist/NWGNUmakefile	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/NWGNUmakefile	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,430 +0,0 @@
-#
-# Define our macros with defaults if we dont got them already.
-#
-ifndef APR_WORK
-export APR_WORK = $(CURDIR)
-endif
-ifneq "$(wildcard $(APR_WORK)/include/apr_version.h)" "$(APR_WORK)/include/apr_version.h"
-$(error APR_WORK does not point to a valid APR source tree) 
-endif
-ifndef APU_WORK
-export APU_WORK = $(CURDIR)/../apr-util
-endif
-ifneq "$(wildcard $(APU_WORK)/include/apu_version.h)" "$(APU_WORK)/include/apu_version.h"
-$(error APU_WORK does not point to a valid APU source tree) 
-endif
-
-#
-# Declare the sub-directories to be built here
-#
-
-SUBDIRS = \
-		build \
-		$(APU_WORK) \
-		$(EOLIST)
-
-ifeq "$(TEST)" "1"
-SUBDIRS += \
-		test \
-		$(APU_WORK)/test \
-		$(EOLIST)
-endif
-
-#
-# Get the 'head' of the build environment.  This includes default targets and
-# paths to tools
-#
-
-include $(APR_WORK)/build/NWGNUhead.inc
-
-#
-# build this level's files
-
-#
-# Make sure all needed macro's are defined
-#
-
-#
-# These directories will be at the beginning of the include list, followed by
-# INCDIRS
-#
-XINCDIRS	+= \
-			$(APR)/include \
-			$(APR)/include/arch/NetWare \
-			$(APR)/include/arch/unix \
-			$(APR)/memory/unix \
-			$(APR)/random/unix \
-			$(APU)/include \
-			$(APU)/xml \
-			$(LDAPSDK)/inc \
-			$(EOLIST)
-
-#
-# These flags will come after CFLAGS
-#
-XCFLAGS		+= \
-			$(EOLIST)
-
-#
-# These defines will come after DEFINES
-#
-XDEFINES	+= \
-			$(EOLIST)
-
-#
-# These flags will be added to the link.opt file
-#
-XLFLAGS		+= \
-			$(EOLIST)
-
-#
-# These values will be appended to the correct variables based on the value of
-# RELEASE
-#
-ifeq "$(RELEASE)" "debug"
-XINCDIRS	+= \
-			$(EOLIST)
-
-XCFLAGS		+= \
-			$(EOLIST)
-
-XDEFINES	+= \
-			$(EOLIST)
-
-XLFLAGS		+= \
-			$(EOLIST)
-endif
-
-ifeq "$(RELEASE)" "noopt"
-XINCDIRS	+= \
-			$(EOLIST)
-
-XCFLAGS		+= \
-			$(EOLIST)
-
-XDEFINES	+= \
-			$(EOLIST)
-
-XLFLAGS		+= \
-			$(EOLIST)
-endif
-
-ifeq "$(RELEASE)" "release"
-XINCDIRS	+= \
-			$(EOLIST)
-
-XCFLAGS		+= \
-			$(EOLIST)
-
-XDEFINES	+= \
-			$(EOLIST)
-
-XLFLAGS		+= \
-			$(EOLIST)
-endif
-
-#
-# These are used by the link target if an NLM is being generated
-# This is used by the link 'name' directive to name the nlm.  If left blank
-# TARGET_nlm (see below) will be used.
-#
-NLM_NAME	= aprlib
-
-#
-# This is used by the link '-desc ' directive.
-# If left blank, NLM_NAME will be used.
-#
-NLM_DESCRIPTION	= Apache Portability Runtime Library $(VERSION_STR) $(VERSION_SKT)
-
-#
-# This is used by the '-threadname' directive.  If left blank,
-# NLM_NAME Thread will be used.
-#
-NLM_THREAD_NAME	=
-#
-# If this is specified, it will override VERSION value in
-# $(APR_WORK)/build/NWGNUenvironment.inc
-#
-NLM_VERSION	=
-
-#
-# If this is specified, it will override the default of 64K
-#
-NLM_STACK_SIZE	=
-
-#
-# If this is specified it will be used by the link '-entry' directive
-#
-NLM_ENTRY_SYM	=
-
-#
-# If this is specified it will be used by the link '-exit' directive
-#
-NLM_EXIT_SYM	=
-
-#
-# If this is specified it will be used by the link '-check' directive
-#
-NLM_CHECK_SYM	=
-
-#
-# If this is specified it will be used by the link '-flags' directive
-#
-NLM_FLAGS	=
-
-#
-# If this is specified it will be linked in with the XDCData option in the def
-# file instead of the default of $(APR)/misc/netware/apache.xdc.  XDCData can
-# be disabled by setting APACHE_UNIPROC in the environment
-#
-XDCDATA		=
-
-#
-# Declare all target files (you must add your files here)
-#
-
-#
-# If there is an NLM target, put it here
-#
-TARGET_nlm = \
-	$(OBJDIR)/aprlib.nlm \
-	$(EOLIST)
-
-#
-# If there is an LIB target, put it here
-#
-TARGET_lib = \
-	$(OBJDIR)/aprlib.lib \
-	$(EOLIST)
-
-#
-# These are the OBJ files needed to create the NLM target above.
-# Paths must all use the '/' character
-#
-FILES_nlm_objs = \
-	$(OBJDIR)/libprews.o \
-	$(EOLIST)
-
-#
-# These are the LIB files needed to create the NLM target above.
-# These will be added as a library command in the link.opt file.
-#
-FILES_nlm_libs = \
-	$(PRELUDE) \
-	$(APRLIB) \
-	$(APULIB) \
-	$(APULDAPLIB) \
-	$(APUXMLLIB) \
-	$(EOLIST)
-
-#
-# These are the modules that the above NLM target depends on to load.
-# These will be added as a module command in the link.opt file.
-#
-FILES_nlm_modules = \
-	Libc \
-	$(EOLIST)
-
-# Include the Winsock libraries if Winsock is being used
-ifndef USE_STDSOCKETS
-FILES_nlm_modules += ws2_32 \
-	$(EOLIST)
-endif
-
-#If the LDAP support is defined then add the auto-load modules
-ifneq "$(LDAPSDK)" ""
-FILES_nlm_modules += \
-	lldapsdk \
-	lldapssl \
-	$(EOLIST)
-endif
-
-#
-# If the nlm has a msg file, put it's path here
-#
-FILE_nlm_msg =
-
-#
-# If the nlm has a hlp file put it's path here
-#
-FILE_nlm_hlp =
-
-#
-# If this is specified, it will override $(NWOS)\copyright.txt.
-#
-FILE_nlm_copyright =
-
-#
-# Any additional imports go here
-#
-FILES_nlm_Ximports = \
-	@libc.imp \
-	@netware.imp \
-	$(EOLIST)
-
-# Include the Winsock imports if Winsock is being used
-ifndef USE_STDSOCKETS
-FILES_nlm_Ximports +=  \
-	@ws2nlm.imp \
-	WSAStartupRTags \
-	WSACleanupRTag \
-	$(EOLIST)
-endif
-
-#If the LDAP support is defined then add the imports
-ifneq "$(LDAPSDK)" ""
-FILES_nlm_Ximports += \
-	@lldapsdk.imp \
-	@lldapssl.imp \
-	$(EOLIST)
-endif
-
-#
-# Any symbols exported to here
-#
-FILES_nlm_exports = \
-	@aprlib.imp \
-	$(EOLIST)
-
-#
-# These are the OBJ files needed to create the LIB target above.
-# Paths must all use the '/' character
-#
-FILES_lib_objs = \
-	$(OBJDIR)/apr_atomic.o \
-	$(OBJDIR)/apr_cpystrn.o \
-	$(OBJDIR)/apr_fnmatch.o \
-	$(OBJDIR)/apr_getpass.o \
-	$(OBJDIR)/apr_hash.o \
-	$(OBJDIR)/apr_pools.o \
-	$(OBJDIR)/apr_random.o \
-	$(OBJDIR)/apr_snprintf.o \
-	$(OBJDIR)/apr_strings.o \
-	$(OBJDIR)/apr_strnatcmp.o \
-	$(OBJDIR)/apr_strtok.o \
-	$(OBJDIR)/apr_tables.o \
-	$(OBJDIR)/buffer.o \
-	$(OBJDIR)/charset.o \
-	$(OBJDIR)/copy.o \
-	$(OBJDIR)/common.o \
-	$(OBJDIR)/dir.o \
-	$(OBJDIR)/dso.o \
-	$(OBJDIR)/errorcodes.o \
-	$(OBJDIR)/env.o \
-	$(OBJDIR)/fileacc.o \
-	$(OBJDIR)/filedup.o \
-	$(OBJDIR)/filepath.o \
-	$(OBJDIR)/filepath_util.o \
-	$(OBJDIR)/filestat.o \
-	$(OBJDIR)/filesys.o \
-	$(OBJDIR)/flock.o \
-	$(OBJDIR)/fullrw.o \
-	$(OBJDIR)/getopt.o \
-	$(OBJDIR)/groupinfo.o \
-	$(OBJDIR)/inet_pton.o \
-	$(OBJDIR)/inet_ntop.o \
-	$(OBJDIR)/mktemp.o \
-	$(OBJDIR)/mmap.o \
-	$(OBJDIR)/multicast.o \
-	$(OBJDIR)/open.o \
-	$(OBJDIR)/pipe.o \
-	$(OBJDIR)/otherchild.o \
-	$(OBJDIR)/proc.o \
-	$(OBJDIR)/procsup.o \
-	$(OBJDIR)/proc_mutex.o \
-	$(OBJDIR)/rand.o \
-	$(OBJDIR)/readwrite.o \
-	$(OBJDIR)/seek.o \
-	$(OBJDIR)/pollcb.o \
-	$(OBJDIR)/pollset.o \
-	$(OBJDIR)/select.o \
-	$(OBJDIR)/sendrecv.o \
-	$(OBJDIR)/sha2.o \
-	$(OBJDIR)/sha2_glue.o \
-	$(OBJDIR)/shm.o \
-	$(OBJDIR)/signals.o \
-	$(OBJDIR)/sockaddr.o \
-	$(OBJDIR)/socket_util.o \
-	$(OBJDIR)/sockets.o \
-	$(OBJDIR)/sockopt.o \
-	$(OBJDIR)/start.o \
-	$(OBJDIR)/tempdir.o \
-	$(OBJDIR)/thread.o \
-	$(OBJDIR)/thread_cond.o \
-	$(OBJDIR)/thread_mutex.o \
-	$(OBJDIR)/thread_rwlock.o \
-	$(OBJDIR)/threadpriv.o \
-	$(OBJDIR)/time.o \
-	$(OBJDIR)/timestr.o \
-	$(OBJDIR)/userinfo.o \
-	$(OBJDIR)/version.o \
-	$(OBJDIR)/waitio.o \
-	$(EOLIST)
-
-
-#
-# implement targets and dependancies (leave this section alone)
-#
-
-libs :: $(OBJDIR) $(TARGET_lib)
-
-nlms :: libs $(TARGET_nlm)
-
-#
-# Updated this target to create necessary directories and copy files to the
-# correct place.  (See $(APR_WORK)/build/NWGNUhead.inc for examples)
-#
-install :: nlms $(INSTDIRS) FORCE
-	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/)
-ifndef DEST
-	-$(call COPY,$(APR)/LICENSE,$(INSTALLBASE)/)
-	-$(call COPY,$(APR)/STATUS,$(INSTALLBASE)/STATUS.apr)
-	-$(call COPY,$(APR)/CHANGES,$(INSTALLBASE)/CHANGES.apr)
-	-$(call COPY,$(APU)/STATUS,$(INSTALLBASE)/STATUS.apu)
-	-$(call COPY,$(APU)/CHANGES,$(INSTALLBASE)/CHANGES.apu)
-	-$(call COPYR,$(APR)/docs,$(INSTALLBASE)/docs/)
-endif
-
-ifndef DEST
-installdev :: $(INSTDEVDIRS) FORCE
-	$(call COPY,$(APR)/include/*.h,$(INSTALLBASE)/include/)
-	$(call COPY,$(APR)/*.imp,$(INSTALLBASE)/lib/)
-	$(call COPY,$(APR)/misc/netware/*.xdc,$(INSTALLBASE)/lib/)
-	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/bin/)
-	$(call COPY,$(APRLIB),$(INSTALLBASE)/lib/)
-	$(call COPY,$(APULIB),$(INSTALLBASE)/lib/)
-	$(call COPY,$(APULDAPLIB),$(INSTALLBASE)/lib/)
-	$(call COPY,$(APUXMLLIB),$(INSTALLBASE)/lib/)
-
-$(INSTDEVDIRS) ::
-	$(call MKDIR,$@)
-endif
-
-#
-# Any specialized rules here
-#
-
-vpath %.c atomic/netware:strings:tables:passwd:lib:time/unix
-vpath %.c file_io/unix:locks/netware:misc/netware:misc/unix:threadproc/netware
-vpath %.c poll/unix:shmem/unix:support/unix:random/unix
-vpath %.c dso/netware:memory/unix:mmap/unix:user/netware
-
-# Use the win32 network_io if Winsock is being used
-ifndef USE_STDSOCKETS
-vpath %.c network_io/win32
-endif
-vpath %.c network_io/unix
-
-$(OBJDIR)/%.o: file_io/netware/%.c $(OBJDIR)/$(NLM_NAME)_cc.opt
-#	@echo Compiling $<
-	@echo $(DL)CC   $<$(DL)
-	$(CC) $< -cwd source -o=$@ @$(OBJDIR)/$(NLM_NAME)_cc.opt
-
-#
-# Include the 'tail' makefile that has targets that depend on variables defined
-# in this makefile
-#
-
-include $(APRBUILD)/NWGNUtail.inc
-
-

Copied: vendor/apache/apr/1.5.2/NWGNUmakefile (from rev 9273, vendor/apache/apr/dist/NWGNUmakefile)
===================================================================
--- vendor/apache/apr/1.5.2/NWGNUmakefile	                        (rev 0)
+++ vendor/apache/apr/1.5.2/NWGNUmakefile	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,433 @@
+#
+# Define our macros with defaults if we dont got them already.
+#
+ifndef APR_WORK
+export APR_WORK = $(CURDIR)
+endif
+ifneq "$(wildcard $(APR_WORK)/include/apr_version.h)" "$(APR_WORK)/include/apr_version.h"
+$(error APR_WORK does not point to a valid APR source tree) 
+endif
+ifndef APU_WORK
+export APU_WORK = $(CURDIR)/../apr-util
+endif
+ifneq "$(wildcard $(APU_WORK)/include/apu_version.h)" "$(APU_WORK)/include/apu_version.h"
+$(error APU_WORK does not point to a valid APU source tree) 
+endif
+
+#
+# Declare the sub-directories to be built here
+#
+
+SUBDIRS = \
+		build \
+		$(APU_WORK) \
+		$(EOLIST)
+
+ifeq "$(TEST)" "1"
+SUBDIRS += \
+		test \
+		$(APU_WORK)/test \
+		$(EOLIST)
+endif
+
+#
+# Get the 'head' of the build environment.  This includes default targets and
+# paths to tools
+#
+
+include $(APR_WORK)/build/NWGNUhead.inc
+
+#
+# build this level's files
+
+#
+# Make sure all needed macro's are defined
+#
+
+#
+# These directories will be at the beginning of the include list, followed by
+# INCDIRS
+#
+XINCDIRS	+= \
+			$(APR)/include \
+			$(APR)/include/private \
+			$(APR)/include/arch/NetWare \
+			$(APR)/include/arch/unix \
+			$(APR)/memory/unix \
+			$(APR)/random/unix \
+			$(APU)/include \
+			$(APU)/xml \
+			$(LDAPSDK)/inc \
+			$(EOLIST)
+
+#
+# These flags will come after CFLAGS
+#
+XCFLAGS		+= \
+			$(EOLIST)
+
+#
+# These defines will come after DEFINES
+#
+XDEFINES	+= \
+			$(EOLIST)
+
+#
+# These flags will be added to the link.opt file
+#
+XLFLAGS		+= \
+			$(EOLIST)
+
+#
+# These values will be appended to the correct variables based on the value of
+# RELEASE
+#
+ifeq "$(RELEASE)" "debug"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+ifeq "$(RELEASE)" "noopt"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+ifeq "$(RELEASE)" "release"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+#
+# These are used by the link target if an NLM is being generated
+# This is used by the link 'name' directive to name the nlm.  If left blank
+# TARGET_nlm (see below) will be used.
+#
+NLM_NAME	= aprlib
+
+#
+# This is used by the link '-desc ' directive.
+# If left blank, NLM_NAME will be used.
+#
+NLM_DESCRIPTION	= Apache Portability Runtime Library $(VERSION_STR) $(VERSION_SKT)
+
+#
+# This is used by the '-threadname' directive.  If left blank,
+# NLM_NAME Thread will be used.
+#
+NLM_THREAD_NAME	=
+#
+# If this is specified, it will override VERSION value in
+# $(APR_WORK)/build/NWGNUenvironment.inc
+#
+NLM_VERSION	=
+
+#
+# If this is specified, it will override the default of 64K
+#
+NLM_STACK_SIZE	=
+
+#
+# If this is specified it will be used by the link '-entry' directive
+#
+NLM_ENTRY_SYM	=
+
+#
+# If this is specified it will be used by the link '-exit' directive
+#
+NLM_EXIT_SYM	=
+
+#
+# If this is specified it will be used by the link '-check' directive
+#
+NLM_CHECK_SYM	=
+
+#
+# If this is specified it will be used by the link '-flags' directive
+#
+NLM_FLAGS	=
+
+#
+# If this is specified it will be linked in with the XDCData option in the def
+# file instead of the default of $(APR)/misc/netware/apache.xdc.  XDCData can
+# be disabled by setting APACHE_UNIPROC in the environment
+#
+XDCDATA		=
+
+#
+# Declare all target files (you must add your files here)
+#
+
+#
+# If there is an NLM target, put it here
+#
+TARGET_nlm = \
+	$(OBJDIR)/aprlib.nlm \
+	$(EOLIST)
+
+#
+# If there is an LIB target, put it here
+#
+TARGET_lib = \
+	$(OBJDIR)/aprlib.lib \
+	$(EOLIST)
+
+#
+# These are the OBJ files needed to create the NLM target above.
+# Paths must all use the '/' character
+#
+FILES_nlm_objs = \
+	$(OBJDIR)/libprews.o \
+	$(EOLIST)
+
+#
+# These are the LIB files needed to create the NLM target above.
+# These will be added as a library command in the link.opt file.
+#
+FILES_nlm_libs = \
+	$(PRELUDE) \
+	$(APRLIB) \
+	$(APULIB) \
+	$(APULDAPLIB) \
+	$(APUXMLLIB) \
+	$(EOLIST)
+
+#
+# These are the modules that the above NLM target depends on to load.
+# These will be added as a module command in the link.opt file.
+#
+FILES_nlm_modules = \
+	Libc \
+	$(EOLIST)
+
+# Include the Winsock libraries if Winsock is being used
+ifndef USE_STDSOCKETS
+FILES_nlm_modules += ws2_32 \
+	$(EOLIST)
+endif
+
+#If the LDAP support is defined then add the auto-load modules
+ifneq "$(LDAPSDK)" ""
+FILES_nlm_modules += \
+	lldapsdk \
+	lldapssl \
+	$(EOLIST)
+endif
+
+#
+# If the nlm has a msg file, put it's path here
+#
+FILE_nlm_msg =
+
+#
+# If the nlm has a hlp file put it's path here
+#
+FILE_nlm_hlp =
+
+#
+# If this is specified, it will override $(NWOS)\copyright.txt.
+#
+FILE_nlm_copyright =
+
+#
+# Any additional imports go here
+#
+FILES_nlm_Ximports = \
+	@libc.imp \
+	@netware.imp \
+	$(EOLIST)
+
+# Include the Winsock imports if Winsock is being used
+ifndef USE_STDSOCKETS
+FILES_nlm_Ximports +=  \
+	@ws2nlm.imp \
+	WSAStartupRTags \
+	WSACleanupRTag \
+	$(EOLIST)
+endif
+
+#If the LDAP support is defined then add the imports
+ifneq "$(LDAPSDK)" ""
+FILES_nlm_Ximports += \
+	@lldapsdk.imp \
+	@lldapssl.imp \
+	$(EOLIST)
+endif
+
+#
+# Any symbols exported to here
+#
+FILES_nlm_exports = \
+	@aprlib.imp \
+	$(EOLIST)
+
+#
+# These are the OBJ files needed to create the LIB target above.
+# Paths must all use the '/' character
+#
+FILES_lib_objs = \
+	$(OBJDIR)/apr_atomic.o \
+	$(OBJDIR)/apr_cpystrn.o \
+	$(OBJDIR)/apr_escape.o \
+	$(OBJDIR)/apr_fnmatch.o \
+	$(OBJDIR)/apr_getpass.o \
+	$(OBJDIR)/apr_hash.o \
+	$(OBJDIR)/apr_pools.o \
+	$(OBJDIR)/apr_random.o \
+	$(OBJDIR)/apr_skiplist.o \
+	$(OBJDIR)/apr_snprintf.o \
+	$(OBJDIR)/apr_strings.o \
+	$(OBJDIR)/apr_strnatcmp.o \
+	$(OBJDIR)/apr_strtok.o \
+	$(OBJDIR)/apr_tables.o \
+	$(OBJDIR)/buffer.o \
+	$(OBJDIR)/charset.o \
+	$(OBJDIR)/copy.o \
+	$(OBJDIR)/common.o \
+	$(OBJDIR)/dir.o \
+	$(OBJDIR)/dso.o \
+	$(OBJDIR)/errorcodes.o \
+	$(OBJDIR)/env.o \
+	$(OBJDIR)/fileacc.o \
+	$(OBJDIR)/filedup.o \
+	$(OBJDIR)/filepath.o \
+	$(OBJDIR)/filepath_util.o \
+	$(OBJDIR)/filestat.o \
+	$(OBJDIR)/filesys.o \
+	$(OBJDIR)/flock.o \
+	$(OBJDIR)/fullrw.o \
+	$(OBJDIR)/getopt.o \
+	$(OBJDIR)/groupinfo.o \
+	$(OBJDIR)/inet_pton.o \
+	$(OBJDIR)/inet_ntop.o \
+	$(OBJDIR)/mktemp.o \
+	$(OBJDIR)/mmap.o \
+	$(OBJDIR)/multicast.o \
+	$(OBJDIR)/open.o \
+	$(OBJDIR)/pipe.o \
+	$(OBJDIR)/otherchild.o \
+	$(OBJDIR)/proc.o \
+	$(OBJDIR)/procsup.o \
+	$(OBJDIR)/proc_mutex.o \
+	$(OBJDIR)/rand.o \
+	$(OBJDIR)/readwrite.o \
+	$(OBJDIR)/seek.o \
+	$(OBJDIR)/pollcb.o \
+	$(OBJDIR)/pollset.o \
+	$(OBJDIR)/select.o \
+	$(OBJDIR)/sendrecv.o \
+	$(OBJDIR)/sha2.o \
+	$(OBJDIR)/sha2_glue.o \
+	$(OBJDIR)/shm.o \
+	$(OBJDIR)/signals.o \
+	$(OBJDIR)/sockaddr.o \
+	$(OBJDIR)/socket_util.o \
+	$(OBJDIR)/sockets.o \
+	$(OBJDIR)/sockopt.o \
+	$(OBJDIR)/start.o \
+	$(OBJDIR)/tempdir.o \
+	$(OBJDIR)/thread.o \
+	$(OBJDIR)/thread_cond.o \
+	$(OBJDIR)/thread_mutex.o \
+	$(OBJDIR)/thread_rwlock.o \
+	$(OBJDIR)/threadpriv.o \
+	$(OBJDIR)/time.o \
+	$(OBJDIR)/timestr.o \
+	$(OBJDIR)/userinfo.o \
+	$(OBJDIR)/version.o \
+	$(OBJDIR)/waitio.o \
+	$(EOLIST)
+
+
+#
+# implement targets and dependancies (leave this section alone)
+#
+
+libs :: $(OBJDIR) $(TARGET_lib)
+
+nlms :: libs $(TARGET_nlm)
+
+#
+# Updated this target to create necessary directories and copy files to the
+# correct place.  (See $(APR_WORK)/build/NWGNUhead.inc for examples)
+#
+install :: nlms $(INSTDIRS) FORCE
+	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/)
+ifndef DEST
+	-$(call COPY,$(APR)/LICENSE,$(INSTALLBASE)/)
+	-$(call COPY,$(APR)/STATUS,$(INSTALLBASE)/STATUS.apr)
+	-$(call COPY,$(APR)/CHANGES,$(INSTALLBASE)/CHANGES.apr)
+	-$(call COPY,$(APU)/STATUS,$(INSTALLBASE)/STATUS.apu)
+	-$(call COPY,$(APU)/CHANGES,$(INSTALLBASE)/CHANGES.apu)
+	-$(call COPYR,$(APR)/docs,$(INSTALLBASE)/docs/)
+endif
+
+ifndef DEST
+installdev :: $(INSTDEVDIRS) FORCE
+	$(call COPY,$(APR)/include/*.h,$(INSTALLBASE)/include/)
+	$(call COPY,$(APR)/*.imp,$(INSTALLBASE)/lib/)
+	$(call COPY,$(APR)/misc/netware/*.xdc,$(INSTALLBASE)/lib/)
+	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/bin/)
+	$(call COPY,$(APRLIB),$(INSTALLBASE)/lib/)
+	$(call COPY,$(APULIB),$(INSTALLBASE)/lib/)
+	$(call COPY,$(APULDAPLIB),$(INSTALLBASE)/lib/)
+	$(call COPY,$(APUXMLLIB),$(INSTALLBASE)/lib/)
+
+$(INSTDEVDIRS) ::
+	$(call MKDIR,$@)
+endif
+
+#
+# Any specialized rules here
+#
+
+vpath %.c atomic/netware:strings:tables:passwd:lib:time/unix
+vpath %.c file_io/unix:locks/netware:misc/netware:misc/unix:threadproc/netware
+vpath %.c poll/unix:shmem/unix:support/unix:random/unix
+vpath %.c dso/netware:memory/unix:mmap/unix:user/netware:encoding
+
+# Use the win32 network_io if Winsock is being used
+ifndef USE_STDSOCKETS
+vpath %.c network_io/win32
+endif
+vpath %.c network_io/unix
+
+$(OBJDIR)/%.o: file_io/netware/%.c $(OBJDIR)/$(NLM_NAME)_cc.opt
+#	@echo Compiling $<
+	@echo $(DL)CC   $<$(DL)
+	$(CC) $< -cwd source -o=$@ @$(OBJDIR)/$(NLM_NAME)_cc.opt
+
+#
+# Include the 'tail' makefile that has targets that depend on variables defined
+# in this makefile
+#
+
+include $(APRBUILD)/NWGNUtail.inc
+
+

Deleted: vendor/apache/apr/1.5.2/apr.dep
===================================================================
--- vendor/apache/apr/dist/apr.dep	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/apr.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,558 +0,0 @@
-# Microsoft Developer Studio Generated Dependency File, included by apr.mak
-
-.\atomic\win32\apr_atomic.c : \
-	".\include\apr_atomic.h"\
-	
-
-.\dso\win32\dso.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_dso.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\buffer.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\copy.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\dir.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\fileacc.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\filedup.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\filepath.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\filepath_util.c : \
-	".\include\apr_strings.h"\
-	
-
-.\file_io\win32\filestat.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\filesys.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\flock.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\fullrw.c : \
-	
-
-.\file_io\unix\mktemp.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\open.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\pipe.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\readwrite.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\seek.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\tempdir.c : \
-	".\include\apr_env.h"\
-	".\include\apr_strings.h"\
-	
-
-.\locks\win32\proc_mutex.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_proc_mutex.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\locks\win32\thread_cond.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\apr_thread_cond.h"\
-	".\include\arch\win32\apr_arch_thread_cond.h"\
-	".\include\arch\win32\apr_arch_thread_mutex.h"\
-	
-
-.\locks\win32\thread_mutex.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_thread_mutex.h"\
-	
-
-.\locks\win32\thread_rwlock.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\apr_thread_rwlock.h"\
-	".\include\arch\win32\apr_arch_thread_rwlock.h"\
-	
-
-.\memory\unix\apr_pools.c : \
-	".\include\apr_atomic.h"\
-	".\include\apr_env.h"\
-	".\include\apr_hash.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\win32\charset.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\win32\env.c : \
-	".\include\apr_env.h"\
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\unix\errorcodes.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\unix\getopt.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\win32\internal.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\win32\misc.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	".\include\arch\win32\apr_dbg_win32_handles.h"\
-	
-
-.\misc\unix\otherchild.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\win32\rand.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_portable.h"\
-	
-
-.\misc\win32\start.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_signal.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\win32\utf8.c : \
-	".\include\apr_lib.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\unix\version.c : \
-	".\include\apr_version.h"\
-	
-
-.\mmap\unix\common.c : \
-	".\include\apr_mmap.h"\
-	
-
-.\mmap\win32\mmap.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_mmap.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\network_io\unix\inet_ntop.c : \
-	".\include\apr_poll.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\unix\inet_pton.c : \
-	".\include\apr_poll.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\unix\multicast.c : \
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_support.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\win32\sendrecv.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\network_io\unix\sockaddr.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\unix\socket_util.c : \
-	".\include\apr_poll.h"\
-	
-
-.\network_io\win32\sockets.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\win32\sockopt.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\passwd\apr_getpass.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\poll\unix\poll.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\poll\unix\pollcb.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\poll\unix\pollset.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\poll\unix\select.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\random\unix\apr_random.c : \
-	".\include\apr_random.h"\
-	
-
-.\random\unix\sha2.c : \
-	".\random\unix\sha2.h"\
-	
-
-.\random\unix\sha2_glue.c : \
-	".\include\apr_random.h"\
-	".\random\unix\sha2.h"\
-	
-
-.\shmem\win32\shm.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\strings\apr_cpystrn.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_fnmatch.c : \
-	".\include\apr_fnmatch.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_snprintf.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_strings.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_strnatcmp.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_strtok.c : \
-	".\include\apr_strings.h"\
-	
-
-.\tables\apr_hash.c : \
-	".\include\apr_hash.h"\
-	
-
-.\tables\apr_tables.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\threadproc\win32\proc.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\threadproc\win32\signals.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_signal.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\threadproc\win32\thread.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	
-
-.\threadproc\win32\threadpriv.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	
-
-.\time\win32\time.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	
-
-.\time\win32\timestr.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	
-
-.\user\win32\groupinfo.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\user\win32\userinfo.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-!IF  "$(CFG)" == "apr - Win32 Release"
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
-
-!ELSEIF  "$(CFG)" == "apr - x64 Release"
-
-!ELSEIF  "$(CFG)" == "apr - x64 Debug"
-
-!ENDIF 
-

Copied: vendor/apache/apr/1.5.2/apr.dep (from rev 9273, vendor/apache/apr/dist/apr.dep)
===================================================================
--- vendor/apache/apr/1.5.2/apr.dep	                        (rev 0)
+++ vendor/apache/apr/1.5.2/apr.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1916 @@
+# Microsoft Developer Studio Generated Dependency File, included by apr.mak
+
+.\atomic\win32\apr_atomic.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_atomic.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\dso\win32\dso.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_dso.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\encoding\apr_escape.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_escape.h"\
+	".\include\apr_escape_test_char.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\file_io\win32\buffer.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\copy.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\dir.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\fileacc.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filedup.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filepath.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\filepath_util.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filestat.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filesys.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\flock.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\fullrw.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\file_io\unix\mktemp.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\open.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\pipe.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\readwrite.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\seek.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\tempdir.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_env.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\proc_mutex.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_proc_mutex.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\thread_cond.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_cond.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_thread_cond.h"\
+	".\include\arch\win32\apr_arch_thread_mutex.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\thread_mutex.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_thread_mutex.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\thread_rwlock.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_thread_rwlock.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_thread_rwlock.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\memory\unix\apr_pools.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_atomic.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_env.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_hash.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\charset.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\misc\win32\env.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_env.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\errorcodes.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\getopt.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\internal.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\misc.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\otherchild.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\rand.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\start.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_signal.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\utf8.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\version.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_version.h"\
+	".\include\apr_want.h"\
+	
+
+.\mmap\unix\common.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_mmap.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\mmap\win32\mmap.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_mmap.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\inet_ntop.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\inet_pton.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\multicast.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_support.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\network_io\win32\sendrecv.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\sockaddr.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\socket_util.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\network_io\win32\sockets.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\win32\sockopt.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\passwd\apr_getpass.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\poll.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\pollcb.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\pollset.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\select.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\random\unix\apr_random.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_random.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\random\unix\sha2.c : \
+	".\include\apr.h"\
+	".\random\unix\sha2.h"\
+	
+
+.\random\unix\sha2_glue.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_random.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\random\unix\sha2.h"\
+	
+
+.\shmem\win32\shm.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_cpystrn.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_fnmatch.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_fnmatch.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\strings\apr_snprintf.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_strings.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_strnatcmp.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\strings\apr_strtok.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\tables\apr_hash.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_hash.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\tables\apr_skiplist.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_skiplist.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\tables\apr_tables.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\proc.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\signals.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_signal.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\thread.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\threadpriv.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\time\win32\time.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\time\win32\timestr.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\user\win32\groupinfo.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\user\win32\userinfo.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+!ENDIF 
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+!ENDIF 
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+!ENDIF 
+

Deleted: vendor/apache/apr/1.5.2/apr.dsp
===================================================================
--- vendor/apache/apr/dist/apr.dsp	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/apr.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,817 +0,0 @@
-# Microsoft Developer Studio Project File - Name="apr" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=apr - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "apr.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "apr.mak" CFG="apr - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "apr - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - Win32 Release9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - Win32 Debug9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - x64 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - x64 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "apr - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "LibR"
-# PROP BASE Intermediate_Dir "LibR"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "LibR"
-# PROP Intermediate_Dir "LibR"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"LibR\apr-1.lib"
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "LibD"
-# PROP BASE Intermediate_Dir "LibD"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "LibD"
-# PROP Intermediate_Dir "LibD"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"LibD\apr-1.lib"
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "9x\LibR"
-# PROP BASE Intermediate_Dir "9x\LibR"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "9x\LibR"
-# PROP Intermediate_Dir "9x\LibR"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"9x\LibR\apr-1.lib"
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "9x\LibD"
-# PROP BASE Intermediate_Dir "9x\LibD"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "9x\LibD"
-# PROP Intermediate_Dir "9x\LibD"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"9x\LibD\apr-1.lib"
-
-!ELSEIF  "$(CFG)" == "apr - x64 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "x64\LibR"
-# PROP BASE Intermediate_Dir "x64\LibR"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "x64\LibR"
-# PROP Intermediate_Dir "x64\LibR"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"x64\LibR\apr-1.lib"
-
-!ELSEIF  "$(CFG)" == "apr - x64 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "x64\LibD"
-# PROP BASE Intermediate_Dir "x64\LibD"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "x64\LibD"
-# PROP Intermediate_Dir "x64\LibD"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"x64\LibD\apr-1.lib"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "apr - Win32 Release"
-# Name "apr - Win32 Debug"
-# Name "apr - Win32 Release9x"
-# Name "apr - Win32 Debug9x"
-# Name "apr - x64 Release"
-# Name "apr - x64 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ".c"
-# Begin Group "atomic"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\atomic\win32\apr_atomic.c
-# End Source File
-# End Group
-# Begin Group "dso"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\dso\win32\dso.c
-# End Source File
-# End Group
-# Begin Group "file_io"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\file_io\win32\buffer.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\copy.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\fileacc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filedup.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filepath.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\filepath_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filestat.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filesys.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\flock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\fullrw.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\mktemp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\open.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\pipe.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\readwrite.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\tempdir.c
-# End Source File
-# End Group
-# Begin Group "locks"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\locks\win32\proc_mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\locks\win32\thread_cond.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\locks\win32\thread_mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\locks\win32\thread_rwlock.c
-# End Source File
-# End Group
-# Begin Group "memory"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\memory\unix\apr_pools.c
-# End Source File
-# End Group
-# Begin Group "misc"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\misc\win32\apr_app.c
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\charset.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\env.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\errorcodes.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\getopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\internal.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\otherchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\rand.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\start.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\utf8.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\version.c
-# End Source File
-# End Group
-# Begin Group "mmap"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\mmap\unix\common.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\mmap\win32\mmap.c
-# End Source File
-# End Group
-# Begin Group "network_io"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\network_io\unix\inet_ntop.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\inet_pton.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\multicast.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\win32\sendrecv.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\sockaddr.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\win32\sockets.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\socket_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\win32\sockopt.c
-# End Source File
-# End Group
-# Begin Group "passwd"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\passwd\apr_getpass.c
-# End Source File
-# End Group
-# Begin Group "poll"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\poll\unix\poll.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\poll\unix\pollcb.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\poll\unix\pollset.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\poll\unix\select.c
-# End Source File
-# End Group
-# Begin Group "random"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\random\unix\apr_random.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\random\unix\sha2.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\random\unix\sha2_glue.c
-# End Source File
-# End Group
-# Begin Group "shmem"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\shmem\win32\shm.c
-# End Source File
-# End Group
-# Begin Group "strings"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\strings\apr_cpystrn.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_fnmatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_snprintf.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_strings.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_strnatcmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_strtok.c
-# End Source File
-# End Group
-# Begin Group "tables"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\tables\apr_hash.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\tables\apr_tables.c
-# End Source File
-# End Group
-# Begin Group "threadproc"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\threadproc\win32\proc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\threadproc\win32\signals.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\threadproc\win32\thread.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\threadproc\win32\threadpriv.c
-# End Source File
-# End Group
-# Begin Group "time"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\time\win32\time.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\time\win32\timestr.c
-# End Source File
-# End Group
-# Begin Group "user"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\user\win32\groupinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\user\win32\userinfo.c
-# End Source File
-# End Group
-# End Group
-# Begin Group "Private Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_atime.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_dso.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_file_io.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_inherit.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_networkio.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_thread_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_thread_rwlock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_threadproc.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_utf8.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_private.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\apr_private_common.h
-# End Source File
-# End Group
-# Begin Group "Public Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\include\apr.h.in
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr.hnw
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr.hw
-
-!IF  "$(CFG)" == "apr - Win32 Release"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "apr - x64 Release"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "apr - x64 Debug"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ENDIF 
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_allocator.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_atomic.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_dso.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_env.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_errno.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_file_info.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_file_io.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_fnmatch.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_general.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_getopt.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_global_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_hash.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_inherit.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_lib.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_mmap.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_network_io.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_poll.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_pools.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_portable.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_proc_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_random.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_ring.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_shm.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_signal.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_strings.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_support.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_tables.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_cond.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_proc.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_rwlock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_time.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_user.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_version.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_want.h
-# End Source File
-# End Group
-# End Target
-# End Project

Copied: vendor/apache/apr/1.5.2/apr.dsp (from rev 9273, vendor/apache/apr/dist/apr.dsp)
===================================================================
--- vendor/apache/apr/1.5.2/apr.dsp	                        (rev 0)
+++ vendor/apache/apr/1.5.2/apr.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,913 @@
+# Microsoft Developer Studio Project File - Name="apr" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=apr - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "apr.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "apr.mak" CFG="apr - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "apr - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Release9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "LibR"
+# PROP BASE Intermediate_Dir "LibR"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "LibR"
+# PROP Intermediate_Dir "LibR"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"LibR\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "LibD"
+# PROP BASE Intermediate_Dir "LibD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "LibD"
+# PROP Intermediate_Dir "LibD"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"LibD\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "9x\LibR"
+# PROP BASE Intermediate_Dir "9x\LibR"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "9x\LibR"
+# PROP Intermediate_Dir "9x\LibR"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"9x\LibR\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "9x\LibD"
+# PROP BASE Intermediate_Dir "9x\LibD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "9x\LibD"
+# PROP Intermediate_Dir "9x\LibD"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"9x\LibD\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "x64\LibR"
+# PROP BASE Intermediate_Dir "x64\LibR"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "x64\LibR"
+# PROP Intermediate_Dir "x64\LibR"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"x64\LibR\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "x64\LibD"
+# PROP BASE Intermediate_Dir "x64\LibD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "x64\LibD"
+# PROP Intermediate_Dir "x64\LibD"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"x64\LibD\apr-1.lib"
+
+!ENDIF 
+
+# Begin Target
+
+# Name "apr - Win32 Release"
+# Name "apr - Win32 Debug"
+# Name "apr - Win32 Release9x"
+# Name "apr - Win32 Debug9x"
+# Name "apr - x64 Release"
+# Name "apr - x64 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".c"
+# Begin Group "atomic"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\atomic\win32\apr_atomic.c
+# End Source File
+# End Group
+# Begin Group "dso"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\dso\win32\dso.c
+# End Source File
+# End Group
+# Begin Group "encoding"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\encoding\apr_escape.c
+
+# End Source File
+# End Group
+# Begin Group "file_io"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\file_io\win32\buffer.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\copy.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\dir.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\fileacc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filedup.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filepath.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\filepath_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filestat.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filesys.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\flock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\fullrw.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\mktemp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\open.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\pipe.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\readwrite.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\seek.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\tempdir.c
+# End Source File
+# End Group
+# Begin Group "locks"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\locks\win32\proc_mutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_cond.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_mutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_rwlock.c
+# End Source File
+# End Group
+# Begin Group "memory"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\memory\unix\apr_pools.c
+# End Source File
+# End Group
+# Begin Group "misc"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\misc\win32\apr_app.c
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\charset.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\env.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\errorcodes.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\internal.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\misc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\otherchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\rand.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\start.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\utf8.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\version.c
+# End Source File
+# End Group
+# Begin Group "mmap"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\mmap\unix\common.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\mmap\win32\mmap.c
+# End Source File
+# End Group
+# Begin Group "network_io"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\network_io\unix\inet_ntop.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\inet_pton.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\multicast.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sendrecv.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\sockaddr.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sockets.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\socket_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sockopt.c
+# End Source File
+# End Group
+# Begin Group "passwd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\passwd\apr_getpass.c
+# End Source File
+# End Group
+# Begin Group "poll"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\poll\unix\poll.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\pollcb.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\pollset.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\select.c
+# End Source File
+# End Group
+# Begin Group "random"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\random\unix\apr_random.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\random\unix\sha2.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\random\unix\sha2_glue.c
+# End Source File
+# End Group
+# Begin Group "shmem"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\shmem\win32\shm.c
+# End Source File
+# End Group
+# Begin Group "strings"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\strings\apr_cpystrn.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_fnmatch.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_snprintf.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strings.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strnatcmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strtok.c
+# End Source File
+# End Group
+# Begin Group "tables"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\tables\apr_hash.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\tables\apr_skiplist.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\tables\apr_tables.c
+# End Source File
+# End Group
+# Begin Group "threadproc"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\threadproc\win32\proc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\signals.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\thread.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\threadpriv.c
+# End Source File
+# End Group
+# Begin Group "time"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\time\win32\time.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\time\win32\timestr.c
+# End Source File
+# End Group
+# Begin Group "user"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\user\win32\groupinfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\user\win32\userinfo.c
+# End Source File
+# End Group
+# End Group
+# Begin Group "Private Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_atime.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_dso.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_file_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_inherit.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_misc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_networkio.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_thread_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_thread_rwlock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_threadproc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_utf8.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_private.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\apr_private_common.h
+# End Source File
+# End Group
+# Begin Group "Public Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\include\apr.h.in
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr.hnw
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr.hw
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_allocator.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_atomic.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_dso.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_env.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_errno.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_escape.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_escape.h
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\LibR\gen_test_char /Fe.\LibR\gen_test_char.exe .\tools\gen_test_char.c 
+	.\LibR\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\LibD\gen_test_char /Fe.\LibD\gen_test_char.exe .\tools\gen_test_char.c  
+	.\LibD\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\LibR\gen_test_char /Fe.\9x\LibR\gen_test_char.exe .\tools\gen_test_char.c 
+	.\9x\LibR\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+InputPath=.\include\apr_escape.h
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\LibD\gen_test_char /Fe.\9x\LibD\gen_test_char.exe .\tools\gen_test_char.c  
+	.\9x\LibD\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+InputPath=.\include\apr_escape.h
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\LibR\gen_test_char /Fe.\x64\LibR\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\LibR\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\LibD\gen_test_char /Fe.\x64\LibD\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\LibD\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_file_info.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_file_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_fnmatch.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_general.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_getopt.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_global_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_hash.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_inherit.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_lib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_mmap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_network_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_poll.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_pools.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_portable.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_proc_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_random.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_ring.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_shm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_signal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_skiplist.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_strings.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_support.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_tables.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_cond.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_proc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_rwlock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_time.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_user.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_version.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_want.h
+# End Source File
+# End Group
+# End Target
+# End Project

Deleted: vendor/apache/apr/1.5.2/apr.mak
===================================================================
--- vendor/apache/apr/dist/apr.mak	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/apr.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1779 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on apr.dsp
-!IF "$(CFG)" == ""
-CFG=apr - Win32 Release
-!MESSAGE No configuration specified. Defaulting to apr - Win32 Release.
-!ENDIF 
-
-!IF "$(CFG)" != "apr - Win32 Release" && "$(CFG)" != "apr - Win32 Debug" && "$(CFG)" != "apr - Win32 Release9x" && "$(CFG)" != "apr - Win32 Debug9x" && "$(CFG)" != "apr - x64 Release" && "$(CFG)" != "apr - x64 Debug"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "apr.mak" CFG="apr - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "apr - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - Win32 Release9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - Win32 Debug9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - x64 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "apr - x64 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-!ERROR An invalid configuration is specified.
-!ENDIF 
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-!IF  "$(CFG)" == "apr - Win32 Release"
-
-OUTDIR=.\LibR
-INTDIR=.\LibR
-# Begin Custom Macros
-OutDir=.\LibR
-# End Custom Macros
-
-ALL : "$(OUTDIR)\apr-1.lib"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr-1.idb"
-	- at erase "$(INTDIR)\apr-1.pdb"
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\apr-1.lib"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj"
-
-"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
-
-OUTDIR=.\LibD
-INTDIR=.\LibD
-# Begin Custom Macros
-OutDir=.\LibD
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr-1.idb"
-	- at erase "$(INTDIR)\apr-1.pdb"
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\apr-1.lib"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj"
-
-"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
-
-OUTDIR=.\9x\LibR
-INTDIR=.\9x\LibR
-# Begin Custom Macros
-OutDir=.\9x\LibR
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr-1.idb"
-	- at erase "$(INTDIR)\apr-1.pdb"
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\apr-1.lib"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj"
-
-"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
-
-OUTDIR=.\9x\LibD
-INTDIR=.\9x\LibD
-# Begin Custom Macros
-OutDir=.\9x\LibD
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr-1.idb"
-	- at erase "$(INTDIR)\apr-1.pdb"
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\apr-1.lib"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj"
-
-"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "apr - x64 Release"
-
-OUTDIR=.\x64\LibR
-INTDIR=.\x64\LibR
-# Begin Custom Macros
-OutDir=.\x64\LibR
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr-1.idb"
-	- at erase "$(INTDIR)\apr-1.pdb"
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\apr-1.lib"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj"
-
-"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "apr - x64 Debug"
-
-OUTDIR=.\x64\LibD
-INTDIR=.\x64\LibD
-# Begin Custom Macros
-OutDir=.\x64\LibD
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr-1.idb"
-	- at erase "$(INTDIR)\apr-1.pdb"
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\apr-1.lib"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj"
-
-"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF 
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("apr.dep")
-!INCLUDE "apr.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "apr.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "apr - Win32 Release" || "$(CFG)" == "apr - Win32 Debug" || "$(CFG)" == "apr - Win32 Release9x" || "$(CFG)" == "apr - Win32 Debug9x" || "$(CFG)" == "apr - x64 Release" || "$(CFG)" == "apr - x64 Debug"
-SOURCE=.\atomic\win32\apr_atomic.c
-
-"$(INTDIR)\apr_atomic.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\dso\win32\dso.c
-
-"$(INTDIR)\dso.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\buffer.c
-
-"$(INTDIR)\buffer.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\copy.c
-
-"$(INTDIR)\copy.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\dir.c
-
-"$(INTDIR)\dir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\fileacc.c
-
-"$(INTDIR)\fileacc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filedup.c
-
-"$(INTDIR)\filedup.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filepath.c
-
-"$(INTDIR)\filepath.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\filepath_util.c
-
-"$(INTDIR)\filepath_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filestat.c
-
-"$(INTDIR)\filestat.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filesys.c
-
-"$(INTDIR)\filesys.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\flock.c
-
-"$(INTDIR)\flock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\fullrw.c
-
-"$(INTDIR)\fullrw.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\mktemp.c
-
-"$(INTDIR)\mktemp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\open.c
-
-"$(INTDIR)\open.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\pipe.c
-
-"$(INTDIR)\pipe.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\readwrite.c
-
-"$(INTDIR)\readwrite.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\seek.c
-
-"$(INTDIR)\seek.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\tempdir.c
-
-"$(INTDIR)\tempdir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\proc_mutex.c
-
-"$(INTDIR)\proc_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\thread_cond.c
-
-"$(INTDIR)\thread_cond.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\thread_mutex.c
-
-"$(INTDIR)\thread_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\thread_rwlock.c
-
-"$(INTDIR)\thread_rwlock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\memory\unix\apr_pools.c
-
-"$(INTDIR)\apr_pools.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\apr_app.c
-SOURCE=.\misc\win32\charset.c
-
-"$(INTDIR)\charset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\env.c
-
-"$(INTDIR)\env.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\errorcodes.c
-
-"$(INTDIR)\errorcodes.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\getopt.c
-
-"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\internal.c
-
-"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\misc.c
-
-"$(INTDIR)\misc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\otherchild.c
-
-"$(INTDIR)\otherchild.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\rand.c
-
-"$(INTDIR)\rand.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\start.c
-
-"$(INTDIR)\start.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\utf8.c
-
-"$(INTDIR)\utf8.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\version.c
-
-"$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\mmap\unix\common.c
-
-"$(INTDIR)\common.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\mmap\win32\mmap.c
-
-"$(INTDIR)\mmap.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\inet_ntop.c
-
-"$(INTDIR)\inet_ntop.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\inet_pton.c
-
-"$(INTDIR)\inet_pton.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\multicast.c
-
-"$(INTDIR)\multicast.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\win32\sendrecv.c
-
-"$(INTDIR)\sendrecv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\sockaddr.c
-
-"$(INTDIR)\sockaddr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\socket_util.c
-
-"$(INTDIR)\socket_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\win32\sockets.c
-
-"$(INTDIR)\sockets.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\win32\sockopt.c
-
-"$(INTDIR)\sockopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\passwd\apr_getpass.c
-
-"$(INTDIR)\apr_getpass.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\poll.c
-
-"$(INTDIR)\poll.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\pollcb.c
-
-"$(INTDIR)\pollcb.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\pollset.c
-
-"$(INTDIR)\pollset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\select.c
-
-"$(INTDIR)\select.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\random\unix\apr_random.c
-
-"$(INTDIR)\apr_random.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\random\unix\sha2.c
-
-"$(INTDIR)\sha2.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\random\unix\sha2_glue.c
-
-"$(INTDIR)\sha2_glue.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\shmem\win32\shm.c
-
-"$(INTDIR)\shm.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_cpystrn.c
-
-"$(INTDIR)\apr_cpystrn.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_fnmatch.c
-
-"$(INTDIR)\apr_fnmatch.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_snprintf.c
-
-"$(INTDIR)\apr_snprintf.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_strings.c
-
-"$(INTDIR)\apr_strings.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_strnatcmp.c
-
-"$(INTDIR)\apr_strnatcmp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_strtok.c
-
-"$(INTDIR)\apr_strtok.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\tables\apr_hash.c
-
-"$(INTDIR)\apr_hash.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\tables\apr_tables.c
-
-"$(INTDIR)\apr_tables.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\proc.c
-
-"$(INTDIR)\proc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\signals.c
-
-"$(INTDIR)\signals.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\thread.c
-
-"$(INTDIR)\thread.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\threadpriv.c
-
-"$(INTDIR)\threadpriv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\time\win32\time.c
-
-"$(INTDIR)\time.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\time\win32\timestr.c
-
-"$(INTDIR)\timestr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\user\win32\groupinfo.c
-
-"$(INTDIR)\groupinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\user\win32\userinfo.c
-
-"$(INTDIR)\userinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\include\apr.hw
-
-!IF  "$(CFG)" == "apr - Win32 Release"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "apr - x64 Release"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "apr - x64 Debug"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ENDIF 
-
-
-!ENDIF 
-

Copied: vendor/apache/apr/1.5.2/apr.mak (from rev 9273, vendor/apache/apr/dist/apr.mak)
===================================================================
--- vendor/apache/apr/1.5.2/apr.mak	                        (rev 0)
+++ vendor/apache/apr/1.5.2/apr.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1980 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on apr.dsp
+!IF "$(CFG)" == ""
+CFG=apr - Win32 Release
+!MESSAGE No configuration specified. Defaulting to apr - Win32 Release.
+!ENDIF 
+
+!IF "$(CFG)" != "apr - Win32 Release" && "$(CFG)" != "apr - Win32 Debug" && "$(CFG)" != "apr - Win32 Release9x" && "$(CFG)" != "apr - Win32 Debug9x" && "$(CFG)" != "apr - x64 Release" && "$(CFG)" != "apr - x64 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "apr.mak" CFG="apr - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "apr - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Release9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+OUTDIR=.\LibR
+INTDIR=.\LibR
+# Begin Custom Macros
+OutDir=.\LibR
+# End Custom Macros
+
+ALL : ".\LibR\gen_test_char.exe" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr-1.idb"
+	- at erase "$(INTDIR)\apr-1.pdb"
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\apr-1.lib"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+OUTDIR=.\LibD
+INTDIR=.\LibD
+# Begin Custom Macros
+OutDir=.\LibD
+# End Custom Macros
+
+ALL : ".\LibD\gen_test_char.exe" ".\include\apr_escape_test_char.h" ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr-1.idb"
+	- at erase "$(INTDIR)\apr-1.pdb"
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\apr-1.lib"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+OUTDIR=.\9x\LibR
+INTDIR=.\9x\LibR
+# Begin Custom Macros
+OutDir=.\9x\LibR
+# End Custom Macros
+
+ALL : ".\include\apr_escape_test_char.h" ".\include\apr.h" ".\9x\LibR\gen_test_char.exe" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr-1.idb"
+	- at erase "$(INTDIR)\apr-1.pdb"
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\apr-1.lib"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+OUTDIR=.\9x\LibD
+INTDIR=.\9x\LibD
+# Begin Custom Macros
+OutDir=.\9x\LibD
+# End Custom Macros
+
+ALL : ".\include\apr_escape_test_char.h" ".\include\apr.h" ".\9x\LibD\gen_test_char.exe" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr-1.idb"
+	- at erase "$(INTDIR)\apr-1.pdb"
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\apr-1.lib"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+OUTDIR=.\x64\LibR
+INTDIR=.\x64\LibR
+# Begin Custom Macros
+OutDir=.\x64\LibR
+# End Custom Macros
+
+ALL : ".\x64\LibR\gen_test_char.exe" ".\include\apr_escape_test_char.h" ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr-1.idb"
+	- at erase "$(INTDIR)\apr-1.pdb"
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\apr-1.lib"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+OUTDIR=.\x64\LibD
+INTDIR=.\x64\LibD
+# Begin Custom Macros
+OutDir=.\x64\LibD
+# End Custom Macros
+
+ALL : ".\x64\LibD\gen_test_char.exe" ".\include\apr_escape_test_char.h" ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr-1.idb"
+	- at erase "$(INTDIR)\apr-1.pdb"
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\apr-1.lib"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("apr.dep")
+!INCLUDE "apr.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "apr.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "apr - Win32 Release" || "$(CFG)" == "apr - Win32 Debug" || "$(CFG)" == "apr - Win32 Release9x" || "$(CFG)" == "apr - Win32 Debug9x" || "$(CFG)" == "apr - x64 Release" || "$(CFG)" == "apr - x64 Debug"
+SOURCE=.\atomic\win32\apr_atomic.c
+
+"$(INTDIR)\apr_atomic.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\dso\win32\dso.c
+
+"$(INTDIR)\dso.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\encoding\apr_escape.c
+
+"$(INTDIR)\apr_escape.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr_escape.h" ".\include\apr_escape_test_char.h" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\buffer.c
+
+"$(INTDIR)\buffer.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\copy.c
+
+"$(INTDIR)\copy.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\dir.c
+
+"$(INTDIR)\dir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\fileacc.c
+
+"$(INTDIR)\fileacc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filedup.c
+
+"$(INTDIR)\filedup.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filepath.c
+
+"$(INTDIR)\filepath.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\filepath_util.c
+
+"$(INTDIR)\filepath_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filestat.c
+
+"$(INTDIR)\filestat.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filesys.c
+
+"$(INTDIR)\filesys.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\flock.c
+
+"$(INTDIR)\flock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\fullrw.c
+
+"$(INTDIR)\fullrw.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\mktemp.c
+
+"$(INTDIR)\mktemp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\open.c
+
+"$(INTDIR)\open.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\pipe.c
+
+"$(INTDIR)\pipe.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\readwrite.c
+
+"$(INTDIR)\readwrite.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\seek.c
+
+"$(INTDIR)\seek.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\tempdir.c
+
+"$(INTDIR)\tempdir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\proc_mutex.c
+
+"$(INTDIR)\proc_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_cond.c
+
+"$(INTDIR)\thread_cond.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_mutex.c
+
+"$(INTDIR)\thread_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_rwlock.c
+
+"$(INTDIR)\thread_rwlock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\memory\unix\apr_pools.c
+
+"$(INTDIR)\apr_pools.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\apr_app.c
+SOURCE=.\misc\win32\charset.c
+
+"$(INTDIR)\charset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\env.c
+
+"$(INTDIR)\env.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\errorcodes.c
+
+"$(INTDIR)\errorcodes.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\getopt.c
+
+"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\internal.c
+
+"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\misc.c
+
+"$(INTDIR)\misc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\otherchild.c
+
+"$(INTDIR)\otherchild.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\rand.c
+
+"$(INTDIR)\rand.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\start.c
+
+"$(INTDIR)\start.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\utf8.c
+
+"$(INTDIR)\utf8.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\version.c
+
+"$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\mmap\unix\common.c
+
+"$(INTDIR)\common.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\mmap\win32\mmap.c
+
+"$(INTDIR)\mmap.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\inet_ntop.c
+
+"$(INTDIR)\inet_ntop.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\inet_pton.c
+
+"$(INTDIR)\inet_pton.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\multicast.c
+
+"$(INTDIR)\multicast.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sendrecv.c
+
+"$(INTDIR)\sendrecv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\sockaddr.c
+
+"$(INTDIR)\sockaddr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\socket_util.c
+
+"$(INTDIR)\socket_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sockets.c
+
+"$(INTDIR)\sockets.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sockopt.c
+
+"$(INTDIR)\sockopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\passwd\apr_getpass.c
+
+"$(INTDIR)\apr_getpass.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\poll.c
+
+"$(INTDIR)\poll.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\pollcb.c
+
+"$(INTDIR)\pollcb.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\pollset.c
+
+"$(INTDIR)\pollset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\select.c
+
+"$(INTDIR)\select.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\apr_random.c
+
+"$(INTDIR)\apr_random.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\sha2.c
+
+"$(INTDIR)\sha2.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\sha2_glue.c
+
+"$(INTDIR)\sha2_glue.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\shmem\win32\shm.c
+
+"$(INTDIR)\shm.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_cpystrn.c
+
+"$(INTDIR)\apr_cpystrn.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_fnmatch.c
+
+"$(INTDIR)\apr_fnmatch.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_snprintf.c
+
+"$(INTDIR)\apr_snprintf.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strings.c
+
+"$(INTDIR)\apr_strings.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strnatcmp.c
+
+"$(INTDIR)\apr_strnatcmp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strtok.c
+
+"$(INTDIR)\apr_strtok.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_hash.c
+
+"$(INTDIR)\apr_hash.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_skiplist.c
+
+"$(INTDIR)\apr_skiplist.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_tables.c
+
+"$(INTDIR)\apr_tables.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\proc.c
+
+"$(INTDIR)\proc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\signals.c
+
+"$(INTDIR)\signals.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\thread.c
+
+"$(INTDIR)\thread.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\threadpriv.c
+
+"$(INTDIR)\threadpriv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\time\win32\time.c
+
+"$(INTDIR)\time.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\time\win32\timestr.c
+
+"$(INTDIR)\timestr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\user\win32\groupinfo.c
+
+"$(INTDIR)\groupinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\user\win32\userinfo.c
+
+"$(INTDIR)\userinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\include\apr.hw
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ENDIF 
+
+SOURCE=.\include\apr_escape.h
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\LibR\gen_test_char /Fe.\LibR\gen_test_char.exe .\tools\gen_test_char.c 
+	.\LibR\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\LibD\gen_test_char /Fe.\LibD\gen_test_char.exe .\tools\gen_test_char.c 
+	.\LibD\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\LibR\gen_test_char /Fe.\9x\LibR\gen_test_char.exe .\tools\gen_test_char.c 
+	.\9x\LibR\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\LibD\gen_test_char /Fe.\9x\LibD\gen_test_char.exe .\tools\gen_test_char.c 
+	.\9x\LibD\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\LibR\gen_test_char /Fe.\x64\LibR\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\LibR\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\LibD\gen_test_char /Fe.\x64\LibD\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\LibD\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ENDIF 
+
+SOURCE=.\include\apr_want.h
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+InputPath=.\include\apr_want.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+InputPath=.\include\apr_want.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+InputPath=.\include\apr_want.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+InputPath=.\include\apr_want.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+InputPath=.\include\apr_want.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+InputPath=.\include\apr_want.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ENDIF 
+
+
+!ENDIF 
+

Deleted: vendor/apache/apr/1.5.2/apr.spec
===================================================================
--- vendor/apache/apr/dist/apr.spec	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/apr.spec	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,100 +0,0 @@
-
-%define aprver 1
-
-Summary: Apache Portable Runtime library
-Name: apr
-Version: 1.4.8
-Release: 1
-License: Apache Software License
-Group: System Environment/Libraries
-URL: http://apr.apache.org/
-Source0: http://www.apache.org/dist/apr/%{name}-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
-BuildRequires: autoconf, libtool, doxygen, python
-
-%description
-The mission of the Apache Portable Runtime (APR) is to provide a
-free library of C data structures and routines, forming a system
-portability layer to as many operating systems as possible,
-including Unices, MS Win32, BeOS and OS/2.
-
-%package devel
-Group: Development/Libraries
-Summary: APR library development kit
-Requires: apr = %{version}
-
-%description devel
-This package provides the support files which can be used to 
-build applications using the APR library.  The mission of the
-Apache Portable Runtime (APR) is to provide a free library of 
-C data structures and routines.
-
-%prep
-%setup -q
-
-%build
-# regenerate configure script etc.
-./buildconf
-%configure \
-        --prefix=/usr \
-        --includedir=%{_includedir}/apr-%{aprver} \
-        --with-installbuilddir=%{_libdir}/apr/build-%{aprver} \
-        --with-devrandom=/dev/urandom \
-        CC=gcc CXX=g++
-make %{?_smp_mflags} && make dox
-
-%check
-# Run non-interactive tests
-pushd test
-make %{?_smp_mflags} all CFLAGS=-fno-strict-aliasing
-make check || exit 1
-popd
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make install DESTDIR=$RPM_BUILD_ROOT
-
-# Move docs to more convenient location
-mv docs/dox/html html
-
-# Unpackaged files:
-rm -f $RPM_BUILD_ROOT%{_libdir}/apr.exp
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root,-)
-%doc CHANGES LICENSE NOTICE
-%{_libdir}/libapr-%{aprver}.so.*
-
-%files devel
-%defattr(-,root,root,-)
-%doc docs/APRDesign.html docs/canonical_filenames.html
-%doc docs/incomplete_types docs/non_apr_programs
-%doc --parents html
-%{_bindir}/apr*config
-%{_libdir}/libapr-%{aprver}.*a
-%{_libdir}/libapr-%{aprver}.so
-%dir %{_libdir}/apr
-%dir %{_libdir}/apr/build-%{aprver}
-%{_libdir}/apr/build-%{aprver}/*
-%{_libdir}/pkgconfig/apr-%{aprver}.pc
-%dir %{_includedir}/apr-%{aprver}
-%{_includedir}/apr-%{aprver}/*.h
-
-%changelog
-* Sat Aug 30 2008 Graham Leggett <minfrin at sharp.fm> 1.3.3
-- update to depend on the bzip2 binary
-- build depends on python
-
-* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
-- update to support v1.0.0 of APR
-
-* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
-- derived from Fedora Core apr.spec
-

Copied: vendor/apache/apr/1.5.2/apr.spec (from rev 9273, vendor/apache/apr/dist/apr.spec)
===================================================================
--- vendor/apache/apr/1.5.2/apr.spec	                        (rev 0)
+++ vendor/apache/apr/1.5.2/apr.spec	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,100 @@
+
+%define aprver 1
+
+Summary: Apache Portable Runtime library
+Name: apr
+Version: 1.5.2
+Release: 1
+License: Apache Software License
+Group: System Environment/Libraries
+URL: http://apr.apache.org/
+Source0: http://www.apache.org/dist/apr/%{name}-%{version}.tar.bz2
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+BuildRequires: autoconf, libtool, doxygen, python
+
+%description
+The mission of the Apache Portable Runtime (APR) is to provide a
+free library of C data structures and routines, forming a system
+portability layer to as many operating systems as possible,
+including Unices, MS Win32, BeOS and OS/2.
+
+%package devel
+Group: Development/Libraries
+Summary: APR library development kit
+Requires: apr = %{version}
+
+%description devel
+This package provides the support files which can be used to 
+build applications using the APR library.  The mission of the
+Apache Portable Runtime (APR) is to provide a free library of 
+C data structures and routines.
+
+%prep
+%setup -q
+
+%build
+# regenerate configure script etc.
+./buildconf
+%configure \
+        --prefix=/usr \
+        --includedir=%{_includedir}/apr-%{aprver} \
+        --with-installbuilddir=%{_libdir}/apr/build-%{aprver} \
+        --with-devrandom=/dev/urandom \
+        CC=gcc CXX=g++
+make %{?_smp_mflags} && make dox
+
+%check
+# Run non-interactive tests
+pushd test
+make %{?_smp_mflags} all CFLAGS=-fno-strict-aliasing
+make check || exit 1
+popd
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Move docs to more convenient location
+mv docs/dox/html html
+
+# Unpackaged files:
+rm -f $RPM_BUILD_ROOT%{_libdir}/apr.exp
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc CHANGES LICENSE NOTICE
+%{_libdir}/libapr-%{aprver}.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%doc docs/APRDesign.html docs/canonical_filenames.html
+%doc docs/incomplete_types docs/non_apr_programs
+%doc html
+%{_bindir}/apr*config
+%{_libdir}/libapr-%{aprver}.*a
+%{_libdir}/libapr-%{aprver}.so
+%dir %{_libdir}/apr
+%dir %{_libdir}/apr/build-%{aprver}
+%{_libdir}/apr/build-%{aprver}/*
+%{_libdir}/pkgconfig/apr-%{aprver}.pc
+%dir %{_includedir}/apr-%{aprver}
+%{_includedir}/apr-%{aprver}/*.h
+
+%changelog
+* Sat Aug 30 2008 Graham Leggett <minfrin at sharp.fm> 1.3.3
+- update to depend on the bzip2 binary
+- build depends on python
+
+* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
+- update to support v1.0.0 of APR
+
+* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
+- derived from Fedora Core apr.spec
+

Deleted: vendor/apache/apr/1.5.2/atomic/win32/apr_atomic.c
===================================================================
--- vendor/apache/apr/dist/atomic/win32/apr_atomic.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/atomic/win32/apr_atomic.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,154 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_atomic.h"
-#include "apr_thread_mutex.h"
-
-APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
-{
-    return APR_SUCCESS;
-}
-
-/* 
- * Remapping function pointer type to accept apr_uint32_t's type-safely
- * as the arguments for as our apr_atomic_foo32 Functions
- */
-typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_fn)
-    (apr_uint32_t volatile *);
-typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_val_fn)
-    (apr_uint32_t volatile *, 
-     apr_uint32_t);
-typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_val_val_fn)
-    (apr_uint32_t volatile *, 
-     apr_uint32_t, apr_uint32_t);
-typedef WINBASEAPI void * (WINAPI * apr_atomic_win32_ptr_ptr_ptr_fn)
-    (volatile void **, 
-     void *, const void *);
-typedef WINBASEAPI void * (WINAPI * apr_atomic_win32_ptr_ptr_fn)
-    (volatile void **,
-     void *);
-
-APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64))
-    return InterlockedExchangeAdd(mem, val);
-#elif defined(__MINGW32__)
-    return InterlockedExchangeAdd((long *)mem, val);
-#else
-    return ((apr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, val);
-#endif
-}
-
-/* Of course we want the 2's compliment of the unsigned value, val */
-#ifdef _MSC_VER
-#pragma warning(disable: 4146)
-#endif
-
-APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64))
-    InterlockedExchangeAdd(mem, -val);
-#elif defined(__MINGW32__)
-    InterlockedExchangeAdd((long *)mem, -val);
-#else
-    ((apr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, -val);
-#endif
-}
-
-APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
-{
-    /* we return old value, win32 returns new value :( */
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
-    return InterlockedIncrement(mem) - 1;
-#elif defined(__MINGW32__)
-    return InterlockedIncrement((long *)mem) - 1;
-#else
-    return ((apr_atomic_win32_ptr_fn)InterlockedIncrement)(mem) - 1;
-#endif
-}
-
-APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
-    return InterlockedDecrement(mem);
-#elif defined(__MINGW32__)
-    return InterlockedDecrement((long *)mem);
-#else
-    return ((apr_atomic_win32_ptr_fn)InterlockedDecrement)(mem);
-#endif
-}
-
-APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
-    InterlockedExchange(mem, val);
-#elif defined(__MINGW32__)
-    InterlockedExchange((long*)mem, val);
-#else
-    ((apr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val);
-#endif
-}
-
-APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
-{
-    return *mem;
-}
-
-APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
-                                           apr_uint32_t cmp)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
-    return InterlockedCompareExchange(mem, with, cmp);
-#elif defined(__MINGW32__)
-    return InterlockedCompareExchange((long*)mem, with, cmp);
-#else
-    return ((apr_atomic_win32_ptr_val_val_fn)InterlockedCompareExchange)(mem, with, cmp);
-#endif
-}
-
-APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
-    return InterlockedCompareExchangePointer((void* volatile*)mem, with, (void*)cmp);
-#elif defined(__MINGW32__)
-    return InterlockedCompareExchangePointer((void**)mem, with, (void*)cmp);
-#else
-    /* Too many VC6 users have stale win32 API files, stub this */
-    return ((apr_atomic_win32_ptr_ptr_ptr_fn)InterlockedCompareExchange)(mem, with, cmp);
-#endif
-}
-
-APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
-    return InterlockedExchange(mem, val);
-#elif defined(__MINGW32__)
-    return InterlockedExchange((long *)mem, val);
-#else
-    return ((apr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val);
-#endif
-}
-
-APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
-{
-#if (defined(_M_IA64) || defined(_M_AMD64) || defined(__MINGW32__)) && !defined(RC_INVOKED)
-    return InterlockedExchangePointer((void**)mem, with);
-#else
-    /* Too many VC6 users have stale win32 API files, stub this */
-    return ((apr_atomic_win32_ptr_ptr_fn)InterlockedExchange)(mem, with);
-#endif
-}

Copied: vendor/apache/apr/1.5.2/atomic/win32/apr_atomic.c (from rev 9273, vendor/apache/apr/dist/atomic/win32/apr_atomic.c)
===================================================================
--- vendor/apache/apr/1.5.2/atomic/win32/apr_atomic.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/atomic/win32/apr_atomic.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,113 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_atomic.h"
+#include "apr_thread_mutex.h"
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64))
+    return InterlockedExchangeAdd(mem, val);
+#else
+    return InterlockedExchangeAdd((long *)mem, val);
+#endif
+}
+
+/* Of course we want the 2's compliment of the unsigned value, val */
+#ifdef _MSC_VER
+#pragma warning(disable: 4146)
+#endif
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64))
+    InterlockedExchangeAdd(mem, -val);
+#else
+    InterlockedExchangeAdd((long *)mem, -val);
+#endif
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    /* we return old value, win32 returns new value :( */
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedIncrement(mem) - 1;
+#else
+    return InterlockedIncrement((long *)mem) - 1;
+#endif
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedDecrement(mem);
+#else
+    return InterlockedDecrement((long *)mem);
+#endif
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    InterlockedExchange(mem, val);
+#else
+    InterlockedExchange((long*)mem, val);
+#endif
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                                           apr_uint32_t cmp)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedCompareExchange(mem, with, cmp);
+#else
+    return InterlockedCompareExchange((long*)mem, with, cmp);
+#endif
+}
+
+APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedCompareExchangePointer((void* volatile*)mem, with, (void*)cmp);
+#else
+    return InterlockedCompareExchangePointer((void**)mem, with, (void*)cmp);
+#endif
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedExchange(mem, val);
+#else
+    return InterlockedExchange((long *)mem, val);
+#endif
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    return InterlockedExchangePointer((void**)mem, with);
+}

Deleted: vendor/apache/apr/1.5.2/build/MakeEtags
===================================================================
--- vendor/apache/apr/dist/build/MakeEtags	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/MakeEtags	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,41 +0,0 @@
-#!/bin/sh
-
-# This file illustrates how to generate a useful TAGS file via etags
-# for emacs.  This should be invoked from the top source directory i.e.:
-#   > build/MakeEtags
-# and will create a TAGS file in the top source directory.
-
-# This script falls under the Apache License.
-# See http://www.apache.org/docs/LICENSE
-
-# Once you have created ./TAGS in emacs you'll need to setup
-# tag-table-alist with an entry to assure it finds the single ./TAGS
-# file from the many source directories.  Something along these lines:
-# (setq tag-table-alist
-#	'(("/home/me/work/apr-x.y/" . "/home/me/work/apr-x.y/")
-#	  ("/home/me/work/apr-util-x.y/" . "/home/me/work/apr-util-x.y/")
-#	  ("/home/me/work/httpd-x.y/" . "/home/me/work/httpd-x.y/")
-#	 ))
-
-# This requires a special version of etags, i.e. the
-# one called "Exuberant ctags" available at:
-#    http://ctags.sourceforge.net/
-# Once that is setup you'll need to point to the
-# executable here:
-
-etags=${ETAGS-etags}
-
-# Exuberant etags is necessary since it can ignore some defined symbols
-# that obscure the function signatures.
-
-ignore=AP_DECLARE,AP_DECLARE_NONSTD,__declspec,APR_DECLARE,APR_DECLARE_NONSTD
-ignore=$ignore,APU_DECLARE,APU_DECLARE_NONSTD
-
-# Create an etags file at the root of the source
-# tree, then create symbol links to it from each
-# directory in the source tree.  By passing etags
-# absolute pathnames we get a tag file that is
-# NOT portable when we move the directory tree.
-
-find . -name '*.[ch]' -print | $etags -I "$ignore"  -L -
-

Copied: vendor/apache/apr/1.5.2/build/MakeEtags (from rev 9273, vendor/apache/apr/dist/build/MakeEtags)
===================================================================
--- vendor/apache/apr/1.5.2/build/MakeEtags	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/MakeEtags	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# This file illustrates how to generate a useful TAGS file via etags
+# for emacs.  This should be invoked from the top source directory i.e.:
+#   > build/MakeEtags
+# and will create a TAGS file in the top source directory.
+
+# This script falls under the Apache License.
+# See http://www.apache.org/docs/LICENSE
+
+# Once you have created ./TAGS in emacs you'll need to setup
+# tag-table-alist with an entry to assure it finds the single ./TAGS
+# file from the many source directories.  Something along these lines:
+# (setq tag-table-alist
+#	'(("/home/me/work/apr-x.y/" . "/home/me/work/apr-x.y/")
+#	  ("/home/me/work/apr-util-x.y/" . "/home/me/work/apr-util-x.y/")
+#	  ("/home/me/work/httpd-x.y/" . "/home/me/work/httpd-x.y/")
+#	 ))
+
+# This requires a special version of etags, i.e. the
+# one called "Exuberant ctags" available at:
+#    http://ctags.sourceforge.net/
+# Once that is setup you'll need to point to the
+# executable here:
+
+etags=${ETAGS-etags}
+
+# Exuberant etags is necessary since it can ignore some defined symbols
+# that obscure the function signatures.
+
+ignore=AP_DECLARE,AP_DECLARE_NONSTD,__declspec,APR_DECLARE,APR_DECLARE_NONSTD
+ignore=$ignore,APU_DECLARE,APU_DECLARE_NONSTD
+
+# Create an etags file at the root of the source
+# tree, then create symbol links to it from each
+# directory in the source tree.  By passing etags
+# absolute pathnames we get a tag file that is
+# NOT portable when we move the directory tree.
+
+find . -name '*.[ch]' -print | $etags -I "$ignore"  -L -
+

Deleted: vendor/apache/apr/1.5.2/build/NWGNUenvironment.inc
===================================================================
--- vendor/apache/apr/dist/build/NWGNUenvironment.inc	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/NWGNUenvironment.inc	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,344 +0,0 @@
-#
-# Setup needed Tools and Libraries
-#
-
-ifeq "$(wildcard $(APR_WORK)/build/NWGNUcustom.inc)" "$(APR_WORK)/build/NWGNUcustom.inc"
-include $(APR_WORK)/build/NWGNUcustom.inc
-CUSTOM_INI = $(AP_WORK)/NWGNUcustom.ini
-endif
-
-ifndef VERBOSE
-.SILENT:
-endif
-
-#
-# Treat like an include
-#
-ifndef EnvironmentDefined
-
-#
-# simple macros for parsing makefiles
-#
-EOLIST:=
-EMPTY :=
-COMMA := ,
-SPACE := $(EMPTY) $(EMPTY)
-
-#
-# Base environment
-#
-
-# Try and handle case issues
-ifndef NOVELLLIBC
-ifdef NovellLibC
-NOVELLLIBC = $(NovellLibC)
-endif
-endif
-
-ifndef NOVELLLIBC
-NOVELLLIBC = C:/novell/ndk/libc
-endif
-ifneq "$(wildcard $(NOVELLLIBC)/include/ndkvers.h)" "$(NOVELLLIBC)/include/ndkvers.h"
-$(error NOVELLLIBC does not point to a valid Novell LIBC SDK) 
-endif
-
-ifndef LDAPSDK
-LDAPSDK = C:/novell/ndk/cldapsdk/NetWare/libc
-endif
-ifneq "$(wildcard $(LDAPSDK)/inc/ldap.h)" "$(LDAPSDK)/inc/ldap.h"
-$(error LDAPSDK does not point to a valid Novell CLDAP SDK) 
-endif
-
-ifdef EXPATSDK
-ifeq "$(wildcard $(EXPATSDK)/include/expat.h)" "$(EXPATSDK)/include/expat.h"
-EXPAT_IMP = $(EXPATSDK)/imports/expatlbc.imp
-EXPAT_INC = $(EXPATSDK)/include
-EXPAT_LIB = $(EXPATSDK)/lib/expat.lib
-EXPAT_NLM = EXPATLBC
-else
-$(error EXPATSDK does not point to a valid EXPAT SDK) 
-endif
-endif
-ifdef EXPATSRC
-ifeq "$(wildcard $(EXPATSRC)/lib/xmlparse.c)" "$(EXPATSRC)/lib/xmlparse.c"
-EXPAT_INC = $(EXPATSRC)/lib
-EXPAT_LIB = $(EXPATSRC)/lib/$(OBJDIR)/expat.lib
-else
-$(error EXPATSRC does not point to a valid EXPAT source tree) 
-endif
-endif
-ifndef EXPAT_INC
-EXPATSRC  = $(APUXML)/expat
-EXPAT_INC = $(EXPATSRC)/lib
-EXPAT_LIB = $(EXPATSRC)/lib/$(OBJDIR)/expat.lib
-endif
-
-ifndef METROWERKS
-METROWERKS = $(ProgramFiles)\Metrowerks\CodeWarrior
-endif
-
-# If LM_LICENSE_FILE isn't defined, define a variable that can be used to
-# restart make with it defined
-ifndef LM_LICENSE_FILE
-NO_LICENSE_FILE = NO_LICENSE_FILE
-endif
-
-#
-# Set the Release type that you want to build, possible values are:
-#
-#  debug	- full debug switches are set
-#  noopt	- normal switches are set
-#  release	- optimization switches are set (default)
-
-ifdef reltype
-RELEASE = $(reltype)
-endif
-
-ifdef RELTYPE
-RELEASE = $(RELTYPE)
-endif
-
-ifdef debug
-RELEASE = debug
-endif
-
-ifdef DEBUG
-RELEASE = debug
-endif
-
-ifdef noopt
-RELEASE = noopt
-endif
-
-ifdef NOOPT
-RELEASE = noopt
-endif
-
-ifdef optimized
-RELEASE = release
-endif
-
-ifdef OPTIMIZED
-RELEASE = release
-endif
-
-ifndef RELEASE
-RELEASE = release
-endif
-
-ifeq "$(strip $(RELEASE))" "optimized"
-RELEASE = release
-endif
-
-OBJDIR = obj_$(RELEASE)
-
-#
-# Setup compiler information
-#
-
-# MetroWerks NLM tools
-CC	= mwccnlm
-CPP	= mwccnlm
-LINK	= mwldnlm
-LIB	= mwldnlm -type library -w nocmdline
-
-# Setup build tools
-AWK	= awk
-
-#
-# Declare Command and tool macros here
-#
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL	= rm -f $1
-RMDIR	= rm -rf $1
-MKDIR	= mkdir -p $1
-COPY	= cp -av $1 $2
-COPYR	= cp -ar $1 $2
-ECHONL	= echo ""
-DL	= '
-CAT	= cat
-else
-ifeq "$(OS)" "Windows_NT"
-DEL	= $(shell if exist $(subst /,\,$1) del /q /f 2>NUL $(subst /,\,$1))
-RMDIR	= $(shell if exist $(subst /,\,$1)\NUL rd /q /s 2>NUL $(subst /,\,$1))
-else
-DEL	= $(shell if exist $(subst /,\,$1) del 2>NUL $(subst /,\,$1))
-RMDIR	= $(shell if exist $(subst /,\,$1)\NUL deltree /y 2>NUL $(subst /,\,$1))
-endif
-ECHONL	= $(ComSpec) /c echo.
-MKDIR	= $(shell if not exist $(subst /,\,$1)\NUL md 2>NUL $(subst /,\,$1))
-COPY	= copy /y 2>NUL $(subst /,\,$1) $(subst /,\,$2)
-COPYR	= xcopy /y /e 2>NUL $(subst /,\,$1) $(subst /,\,$2)
-CAT	= type
-endif
-
-ifdef IPV6
-ifndef USE_STDSOCKETS
-USE_STDSOCKETS=1
-endif
-endif
-
-NOVI	= $(NOVELLLIBC)/imports
-PRELUDE	= $(NOVI)/libcpre.o
-
-INCDIRS	= $(NOVELLLIBC)/include;
-
-DEFINES	= -DNETWARE
-ifdef USE_STDSOCKETS
-DEFINES	+= -DUSE_BSD_SOCKETS
-else
-DEFINES	+= -DUSE_WINSOCK
-INCDIRS	+= $(NOVELLLIBC)/include/winsock;
-endif
-ifndef DEBUG
-DEFINES	+= -DNDEBUG
-endif
-
-ifdef USE_STDSOCKETS
-VERSION_SKT = (BSDSOCK)
-else
-VERSION_SKT = (WINSOCK)
-endif
-
-# MetroWerks static Libraries
-CLIB3S	= $(METROWERKS)/Novell Support/Metrowerks Support/Libraries/Runtime/mwcrtl.lib
-MATH3S	=
-PLIB3S	= $(METROWERKS)/Novell Support/Metrowerks Support/Libraries/MSL C++/MWCPP.lib
-
-# Base compile flags
-# and prefix or precompiled header added here.
-
-# The default flags are as follows:
-#
-# -c                    compile only, no link
-# -gccinc               search directory of referencing file first for #includes
-# -Cpp_exceptions off   disable C++ exceptions
-# -RTTI off             disable C++ run-time typing information
-# -align 4              align on 4 byte bounderies
-# -w nocmdline          disable command-line driver/parser warnings
-# -proc PII             generate code base on Pentium II instruction set
-# -inst mmx             use MMX extensions (not used)
-
-CFLAGS = -c -w nocmdline -gccinc -Cpp_exceptions off -RTTI off -align 4 -proc PII
-
-ifeq "$(REQUIRE_PROTOTYPES)" "1"
-CFLAGS += -r
-endif
-
-# -g                    generate debugging information
-# -O0                   level 0 optimizations
-ifeq "$(RELEASE)" "debug"
-CFLAGS += -g -O0
-endif
-
-# -O4,p                 level 4 optimizations, optimize for speed
-ifeq "$(RELEASE)" "release"
-CFLAGS += -O4,p
-endif
-
-# -prefix apr_arch_pre_nw.h      #include pre_nw.h for all files
-CFLAGS += -prefix apr_arch_pre_nw.h
-
-
-ifneq ($(findstring /sh,$(SHELL)),/sh)
-PATH:=$(PATH);$(METROWERKS)\bin;$(METROWERKS)\Other Metrowerks Tools\Command Line Tools
-endif
-
-#
-# Declare major project deliverables output directories here
-#
-
-ifdef DEST
-INSTALL = $(DEST)
-ifeq (\, $(findstring \,$(INSTALL)))
-INSTDIRS = $(DEST)
-endif
-endif
-
-ifdef dest
-INSTALL = $(dest)
-ifeq (\, $(findstring \,$(INSTALL)))
-INSTDIRS = $(dest)
-endif
-endif
-
-ifndef INSTALL
-INSTALL = $(APR_WORK)/Dist
-INSTDIRS = $(APR_WORK)/Dist
-BASEDIR = Apr
-endif
-
-# Add support for building IPV6 alongside
-ifneq "$(IPV6)" ""
-DEFINES += -DNW_BUILD_IPV6
-# INCDIRS := $(NOVELLLIBC)/include/winsock/IPV6;$(INCDIRS)
-
-ifneq "$(findstring IPV6,$(OBJDIR))" "IPV6"
-OBJDIR := $(OBJDIR)_IPV6
-endif
-        
-ifneq "$(findstring IPV6,$(INSTALL))" "IPV6"
-INSTALL := $(INSTALL)_IPV6
-endif        
-
-ifneq "$(findstring IPV6,$(INSTDIRS))" "IPV6"
-INSTDIRS := $(INSTDIRS)_IPV6
-endif
-
-endif
-
-ifdef DEST
-
-ifndef BASEDIR
-BASEDIR = Apache2
-endif
-
-endif
-
-INSTALLBASE := $(INSTALL)/$(BASEDIR)
-
-INSTDEVDIRS := \
-	$(INSTDIRS) \
-	$(INSTALLBASE) \
-	$(INSTALLBASE)/include \
-	$(INSTALLBASE)/lib \
-	$(INSTALLBASE)/bin 
-
-INSTDIRS += \
-	$(INSTALLBASE)
-
-#
-# Common directories
-#
-
-APR		= $(subst \,/,$(APR_WORK))
-APU		= $(subst \,/,$(APU_WORK))
-APRBUILD	= $(APR)/build
-APULDAP		= $(APU)/ldap
-APUXML		= $(APU)/xml
-APRTEST		= $(APR)/test
-APUTEST		= $(APU)/test
-
-#
-# Internal Libraries
-#
-
-APRLIB		= $(APR)/$(OBJDIR)/aprlib.lib
-APULIB		= $(APU)/$(OBJDIR)/apulib.lib
-APULDAPLIB	= $(APULDAP)/$(OBJDIR)/apuldap.lib
-APUXMLLIB	= $(APUXML)/$(OBJDIR)/apuxml.lib
-
-#
-# Additional general defines
-#
-
-EnvironmentDefined = 1
-endif # ifndef EnvironmentDefined
-
-# This is always set so that it will show up in lower directories
-
-ifdef Path
-Path = $(PATH)
-endif
-

Copied: vendor/apache/apr/1.5.2/build/NWGNUenvironment.inc (from rev 9273, vendor/apache/apr/dist/build/NWGNUenvironment.inc)
===================================================================
--- vendor/apache/apr/1.5.2/build/NWGNUenvironment.inc	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/NWGNUenvironment.inc	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,365 @@
+#
+# Setup needed Tools and Libraries
+#
+
+ifeq "$(wildcard $(APR_WORK)/build/NWGNUcustom.inc)" "$(APR_WORK)/build/NWGNUcustom.inc"
+include $(APR_WORK)/build/NWGNUcustom.inc
+CUSTOM_INI = $(AP_WORK)/NWGNUcustom.ini
+endif
+
+ifndef VERBOSE
+.SILENT:
+endif
+
+#
+# Treat like an include
+#
+ifndef EnvironmentDefined
+
+#
+# simple macros for parsing makefiles
+#
+EOLIST:=
+EMPTY :=
+COMMA := ,
+SPACE := $(EMPTY) $(EMPTY)
+
+#
+# Base environment
+#
+
+# Try and handle case issues
+ifndef NOVELLLIBC
+ifdef NovellLibC
+NOVELLLIBC = $(NovellLibC)
+endif
+endif
+
+ifndef NOVELLLIBC
+NOVELLLIBC = C:/novell/ndk/libc
+endif
+ifneq "$(wildcard $(NOVELLLIBC)/include/ndkvers.h)" "$(NOVELLLIBC)/include/ndkvers.h"
+$(error NOVELLLIBC does not point to a valid Novell LIBC SDK) 
+endif
+
+ifndef LDAPSDK
+LDAPSDK = C:/novell/ndk/cldapsdk/NetWare/libc
+endif
+ifneq "$(wildcard $(LDAPSDK)/inc/ldap.h)" "$(LDAPSDK)/inc/ldap.h"
+$(error LDAPSDK does not point to a valid Novell CLDAP SDK) 
+endif
+
+ifdef EXPATSDK
+ifeq "$(wildcard $(EXPATSDK)/include/expat.h)" "$(EXPATSDK)/include/expat.h"
+EXPAT_IMP = $(EXPATSDK)/imports/expatlbc.imp
+EXPAT_INC = $(EXPATSDK)/include
+EXPAT_LIB = $(EXPATSDK)/lib/expat.lib
+EXPAT_NLM = EXPATLBC
+else
+$(error EXPATSDK does not point to a valid EXPAT SDK) 
+endif
+endif
+ifdef EXPATSRC
+ifeq "$(wildcard $(EXPATSRC)/lib/xmlparse.c)" "$(EXPATSRC)/lib/xmlparse.c"
+EXPAT_INC = $(EXPATSRC)/lib
+EXPAT_LIB = $(EXPATSRC)/lib/$(OBJDIR)/expat.lib
+else
+$(error EXPATSRC does not point to a valid EXPAT source tree) 
+endif
+endif
+ifndef EXPAT_INC
+EXPATSRC  = $(APUXML)/expat
+EXPAT_INC = $(EXPATSRC)/lib
+EXPAT_LIB = $(EXPATSRC)/lib/$(OBJDIR)/expat.lib
+endif
+
+ifndef METROWERKS
+METROWERKS = $(ProgramFiles)\Metrowerks\CodeWarrior
+endif
+
+# If LM_LICENSE_FILE isn't defined, define a variable that can be used to
+# restart make with it defined
+ifndef LM_LICENSE_FILE
+NO_LICENSE_FILE = NO_LICENSE_FILE
+endif
+
+#
+# Set the Release type that you want to build, possible values are:
+#
+#  debug	- full debug switches are set
+#  noopt	- normal switches are set
+#  release	- optimization switches are set (default)
+
+ifdef reltype
+RELEASE = $(reltype)
+endif
+
+ifdef RELTYPE
+RELEASE = $(RELTYPE)
+endif
+
+ifdef debug
+RELEASE = debug
+endif
+
+ifdef DEBUG
+RELEASE = debug
+endif
+
+ifdef noopt
+RELEASE = noopt
+endif
+
+ifdef NOOPT
+RELEASE = noopt
+endif
+
+ifdef optimized
+RELEASE = release
+endif
+
+ifdef OPTIMIZED
+RELEASE = release
+endif
+
+ifndef RELEASE
+RELEASE = release
+endif
+
+ifeq "$(strip $(RELEASE))" "optimized"
+RELEASE = release
+endif
+
+OBJDIR = obj_$(RELEASE)
+
+#
+# Setup compiler information
+#
+
+# MetroWerks NLM tools
+CC	= mwccnlm
+CPP	= mwccnlm
+LINK	= mwldnlm
+LIB	= mwldnlm -type library -w nocmdline
+WIN_CC	= mwcc
+
+# Setup build tools
+AWK	= awk
+
+#
+# Declare Command and tool macros here
+#
+
+ifeq ($(findstring /sh,$(SHELL)),/sh)
+DEL	= rm -f $1
+RMDIR	= rm -rf $1
+MKDIR	= mkdir -p $1
+COPY	= cp -av $1 $2
+COPYR	= cp -ar $1 $2
+ECHONL	= echo ""
+DL	= '
+CAT	= cat
+else
+ifeq "$(OS)" "Windows_NT"
+DEL	= $(shell if exist $(subst /,\,$1) del /q /f 2>NUL $(subst /,\,$1))
+RMDIR	= $(shell if exist $(subst /,\,$1)\NUL rd /q /s 2>NUL $(subst /,\,$1))
+else
+DEL	= $(shell if exist $(subst /,\,$1) del 2>NUL $(subst /,\,$1))
+RMDIR	= $(shell if exist $(subst /,\,$1)\NUL deltree /y 2>NUL $(subst /,\,$1))
+endif
+ECHONL	= $(ComSpec) /c echo.
+MKDIR	= $(shell if not exist $(subst /,\,$1)\NUL md 2>NUL $(subst /,\,$1))
+COPY	= copy /y 2>NUL $(subst /,\,$1) $(subst /,\,$2)
+COPYR	= xcopy /y /e 2>NUL $(subst /,\,$1) $(subst /,\,$2)
+CAT	= type
+endif
+
+ifdef IPV6
+ifndef USE_STDSOCKETS
+USE_STDSOCKETS=1
+endif
+endif
+
+NOVI	= $(NOVELLLIBC)/imports
+PRELUDE	= $(NOVI)/libcpre.o
+
+INCDIRS	= $(NOVELLLIBC)/include;
+
+DEFINES	= -DNETWARE
+ifdef USE_STDSOCKETS
+DEFINES	+= -DUSE_BSD_SOCKETS
+else
+DEFINES	+= -DUSE_WINSOCK
+INCDIRS	+= $(NOVELLLIBC)/include/winsock;
+endif
+ifndef DEBUG
+DEFINES	+= -DNDEBUG
+endif
+
+ifdef USE_STDSOCKETS
+VERSION_SKT = (BSDSOCK)
+else
+VERSION_SKT = (WINSOCK)
+endif
+
+# MetroWerks static Libraries
+CLIB3S	= $(METROWERKS)/Novell Support/Metrowerks Support/Libraries/Runtime/mwcrtl.lib
+MATH3S	=
+PLIB3S	= $(METROWERKS)/Novell Support/Metrowerks Support/Libraries/MSL C++/MWCPP.lib
+
+ifeq "$(OS)" "Windows_NT"
+# MetroWerks Win32 build flags to create build tools
+MWCW_MSL         = "$(METROWERKS)/MSL"
+MWCW_W32         = "$(METROWERKS)/Win32-x86 Support"
+CC_FOR_BUILD     = $(WIN_CC)
+CFLAGS_FOR_BUILD =  -O2 -gccinc -nodefaults -proc 586 -w off
+CFLAGS_FOR_BUILD += -ir $(MWCW_MSL) -ir $(MWCW_W32) -lr $(MWCW_MSL) -lr $(MWCW_W32)
+CFLAGS_FOR_BUILD += -lMSL_All_x86.lib -lkernel32.lib -luser32.lib
+else
+# GNUC build flags to create build tools
+CC_FOR_BUILD     = gcc
+CFLAGS_FOR_BUILD = -Wall -O2
+endif
+
+# Base compile flags
+# and prefix or precompiled header added here.
+
+# The default flags are as follows:
+#
+# -c                    compile only, no link
+# -gccinc               search directory of referencing file first for #includes
+# -Cpp_exceptions off   disable C++ exceptions
+# -RTTI off             disable C++ run-time typing information
+# -align 4              align on 4 byte bounderies
+# -w nocmdline          disable command-line driver/parser warnings
+# -proc PII             generate code base on Pentium II instruction set
+# -inst mmx             use MMX extensions (not used)
+
+CFLAGS = -c -w nocmdline -gccinc -Cpp_exceptions off -RTTI off -align 4 -proc PII
+
+ifdef CC_MAX_ERRORS
+CFLAGS += -maxerrors $(CC_MAX_ERRORS)
+else
+CFLAGS += -maxerrors 1
+endif
+
+ifeq "$(REQUIRE_PROTOTYPES)" "1"
+CFLAGS += -r
+endif
+
+# -g                    generate debugging information
+# -O0                   level 0 optimizations
+ifeq "$(RELEASE)" "debug"
+CFLAGS += -g -O0
+endif
+
+# -O4,p                 level 4 optimizations, optimize for speed
+ifeq "$(RELEASE)" "release"
+CFLAGS += -O4,p
+endif
+
+# -prefix apr_arch_pre_nw.h      #include apr_arch_pre_nw.h for all files
+CFLAGS += -prefix apr_arch_pre_nw.h
+
+
+ifneq ($(findstring /sh,$(SHELL)),/sh)
+PATH:=$(PATH);$(METROWERKS)\bin;$(METROWERKS)\Other Metrowerks Tools\Command Line Tools
+endif
+
+#
+# Declare major project deliverables output directories here
+#
+
+ifdef DEST
+INSTALL = $(DEST)
+ifeq (\, $(findstring \,$(INSTALL)))
+INSTDIRS = $(DEST)
+endif
+endif
+
+ifdef dest
+INSTALL = $(dest)
+ifeq (\, $(findstring \,$(INSTALL)))
+INSTDIRS = $(dest)
+endif
+endif
+
+ifndef INSTALL
+INSTALL = $(APR_WORK)/Dist
+INSTDIRS = $(APR_WORK)/Dist
+BASEDIR = Apr
+endif
+
+# Add support for building IPV6 alongside
+ifneq "$(IPV6)" ""
+DEFINES += -DNW_BUILD_IPV6
+# INCDIRS := $(NOVELLLIBC)/include/winsock/IPV6;$(INCDIRS)
+
+ifneq "$(findstring IPV6,$(OBJDIR))" "IPV6"
+OBJDIR := $(OBJDIR)_IPV6
+endif
+        
+ifneq "$(findstring IPV6,$(INSTALL))" "IPV6"
+INSTALL := $(INSTALL)_IPV6
+endif        
+
+ifneq "$(findstring IPV6,$(INSTDIRS))" "IPV6"
+INSTDIRS := $(INSTDIRS)_IPV6
+endif
+
+endif
+
+ifdef DEST
+
+ifndef BASEDIR
+BASEDIR = Apache2
+endif
+
+endif
+
+INSTALLBASE := $(INSTALL)/$(BASEDIR)
+
+INSTDEVDIRS := \
+	$(INSTDIRS) \
+	$(INSTALLBASE) \
+	$(INSTALLBASE)/include \
+	$(INSTALLBASE)/lib \
+	$(INSTALLBASE)/bin 
+
+INSTDIRS += \
+	$(INSTALLBASE)
+
+#
+# Common directories
+#
+
+APR		= $(subst \,/,$(APR_WORK))
+APU		= $(subst \,/,$(APU_WORK))
+APRBUILD	= $(APR)/build
+APULDAP		= $(APU)/ldap
+APUXML		= $(APU)/xml
+APRTEST		= $(APR)/test
+APUTEST		= $(APU)/test
+
+#
+# Internal Libraries
+#
+
+APRLIB		= $(APR)/$(OBJDIR)/aprlib.lib
+APULIB		= $(APU)/$(OBJDIR)/apulib.lib
+APULDAPLIB	= $(APULDAP)/$(OBJDIR)/apuldap.lib
+APUXMLLIB	= $(APUXML)/$(OBJDIR)/apuxml.lib
+
+#
+# Additional general defines
+#
+
+EnvironmentDefined = 1
+endif # ifndef EnvironmentDefined
+
+# This is always set so that it will show up in lower directories
+
+ifdef Path
+Path = $(PATH)
+endif
+

Deleted: vendor/apache/apr/1.5.2/build/NWGNUmakefile
===================================================================
--- vendor/apache/apr/dist/build/NWGNUmakefile	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/NWGNUmakefile	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,83 +0,0 @@
-#
-# Declare the sub-directories to be built here
-#
-
-SUBDIRS = \
-	$(EOLIST) 
-
-#
-# Get the 'head' of the build environment.  This includes default targets and
-# paths to tools
-#
-
-include $(APR_WORK)/build/NWGNUhead.inc
-
-#
-# build this level's files
-
-FILES_prebuild_headers = \
-	$(APR)/include/apr.h \
-	$(APU)/include/apu.h \
-	$(APU)/include/apu_want.h \
-	$(APU)/include/apr_ldap.h \
-	$(APU)/include/private/apu_config.h \
-	$(APU)/include/private/apu_select_dbm.h \
-	$(APUXML)/expat/lib/expat_config.h \
-	$(EOLIST) 
-    
-nlms :: $(APR)/aprlib.imp
-
-$(APR)/aprlib.imp : make_nw_export.awk nw_export.i
-	@echo $(DL)GEN  $@$(DL)
-	$(AWK) -v EXPPREFIX=APR$(VERSION_MAJMIN) -f $^ >$@
-    
-nw_export.i : nw_export.inc $(APU)/build/nw_apu_export.inc $(FILES_prebuild_headers) cc.opt
-	@echo $(DL)GEN  $@$(DL)
-	$(CC) $< @cc.opt
-
-cc.opt : NWGNUmakefile $(APR_WORK)/build/NWGNUenvironment.inc $(APR_WORK)/build/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(CUSTOM_INI)
-	@echo $(DL)-P$(DL)> $@
-	@echo $(DL)-EP$(DL)>> $@
-	@echo $(DL)-nosyspath$(DL)>> $@
-	@echo $(DL)-w nocmdline$(DL)>> $@
-	@echo $(DL)$(DEFINES) -DGENEXPORTS$(DL)>> $@
-	@echo $(DL)-I$(APR)/include$(DL)>> $@
-	@echo $(DL)-I$(APR)/include/arch/netware$(DL)>> $@
-	@echo $(DL)-I$(APR)/include/arch/unix$(DL)>> $@
-	@echo $(DL)-I$(APU)/include$(DL)>> $@
-	@echo $(DL)-I$(APU)/include/private$(DL)>> $@
-	@echo $(DL)-I$(APU)/build$(DL)>> $@
-	@echo $(DL)-ir $(NOVELLLIBC)$(DL)>> $@
-ifneq "$(LDAPSDK)" ""
-	@echo $(DL)-ir $(LDAPSDK)$(DL)>> $@
-endif
-
-
-%.h: %.hnw
-	@echo $(DL)Creating $@$(DL)
-	$(call COPY,$<,$@)
-
-%.h: %.hw
-	@echo $(DL)Creating $@$(DL)
-	$(call COPY,$<,$@)
-
-#
-# You can use this target if all that is needed is to copy files to the
-# installation area
-#
-install :: nlms FORCE
-
-clean ::
-	$(call DEL,nw_export.i)
-	$(call DEL,cc.opt)
-	$(call DEL,NWGNUversion.inc)
-	$(call DEL,$(APR)/aprlib.imp)
-	$(foreach file,$(FILES_prebuild_headers),$(call DEL,$(file)))
-
-#
-# Include the 'tail' makefile that has targets that depend on variables defined
-# in this makefile
-#
-
-include $(APRBUILD)/NWGNUtail.inc
-    

Copied: vendor/apache/apr/1.5.2/build/NWGNUmakefile (from rev 9273, vendor/apache/apr/dist/build/NWGNUmakefile)
===================================================================
--- vendor/apache/apr/1.5.2/build/NWGNUmakefile	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/NWGNUmakefile	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,101 @@
+#
+# Declare the sub-directories to be built here
+#
+
+SUBDIRS = \
+	$(EOLIST) 
+
+#
+# Get the 'head' of the build environment.  This includes default targets and
+# paths to tools
+#
+
+include $(APR_WORK)/build/NWGNUhead.inc
+
+#
+# build this level's files
+
+FILES_prebuild_headers = \
+	$(APR)/include/apr.h \
+	$(APU)/include/apu.h \
+	$(APU)/include/apu_want.h \
+	$(APU)/include/apr_ldap.h \
+	$(APU)/include/private/apu_config.h \
+	$(APU)/include/private/apu_select_dbm.h \
+	$(APUXML)/expat/lib/expat_config.h \
+	$(APR)/include/private/apr_escape_test_char.h \
+	$(EOLIST) 
+    
+nlms :: $(APR)/aprlib.imp
+
+$(APR)/aprlib.imp : make_nw_export.awk nw_export.i
+	@echo $(DL)GEN  $@$(DL)
+	$(AWK) -v EXPPREFIX=APR$(VERSION_MAJMIN) -f $^ >$@
+    
+nw_export.i : nw_export.inc $(APU)/build/nw_apu_export.inc $(FILES_prebuild_headers) cc.opt
+	@echo $(DL)GEN  $@$(DL)
+	$(CC) $< @cc.opt
+
+cc.opt : NWGNUmakefile $(APR_WORK)/build/NWGNUenvironment.inc $(APR_WORK)/build/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(CUSTOM_INI)
+	@echo $(DL)-P$(DL)> $@
+	@echo $(DL)-EP$(DL)>> $@
+	@echo $(DL)-nosyspath$(DL)>> $@
+	@echo $(DL)-w nocmdline$(DL)>> $@
+	@echo $(DL)$(DEFINES) -DGENEXPORTS$(DL)>> $@
+	@echo $(DL)-I$(APR)/include$(DL)>> $@
+	@echo $(DL)-I$(APR)/include/arch/netware$(DL)>> $@
+	@echo $(DL)-I$(APR)/include/arch/unix$(DL)>> $@
+	@echo $(DL)-I$(APU)/include$(DL)>> $@
+	@echo $(DL)-I$(APU)/include/private$(DL)>> $@
+	@echo $(DL)-I$(APU)/build$(DL)>> $@
+	@echo $(DL)-ir $(NOVELLLIBC)$(DL)>> $@
+ifneq "$(LDAPSDK)" ""
+	@echo $(DL)-ir $(LDAPSDK)$(DL)>> $@
+endif
+
+
+ifndef WITH_LDAP
+WITH_LDAP = $(shell $(AWK) '/^\#define APR_HAS_LDAP /{print $$3}' $(APU)/include/apr_ldap.hnw)
+endif
+
+$(APU)/include/apr_ldap.h: $(APR)/build/nw_make_header.awk $(APU)/include/apr_ldap.hnw
+	@echo $(DL)Creating $@$(DL)
+	$(AWK) -v WITH_LDAP=$(WITH_LDAP) -f $^ >$@
+
+%.h: %.hnw
+	@echo $(DL)Creating $@$(DL)
+	$(call COPY,$<,$@)
+
+%.h: %.hw
+	@echo $(DL)Creating $@$(DL)
+	$(call COPY,$<,$@)
+
+$(APR)/include/private/apr_escape_test_char.h: gen_test_char.exe $(APR)/tools/gen_test_char.c
+	@echo $(DL)GEN  $@$(DL)
+	$< > $@
+
+%.exe: $(APR)/tools/%.c
+	@echo $(DL)Creating Build Helper $@$(DL)
+	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE $< -o $@
+
+#
+# You can use this target if all that is needed is to copy files to the
+# installation area
+#
+install :: nlms FORCE
+
+clean ::
+	$(call DEL,nw_export.i)
+	$(call DEL,cc.opt)
+	$(call DEL,NWGNUversion.inc)
+	$(call DEL,$(APR)/aprlib.imp)
+	$(foreach file,$(FILES_prebuild_headers),$(call DEL,$(file)))
+	$(call DEL,gen_test_char.exe)
+
+#
+# Include the 'tail' makefile that has targets that depend on variables defined
+# in this makefile
+#
+
+include $(APRBUILD)/NWGNUtail.inc
+    

Deleted: vendor/apache/apr/1.5.2/build/NWGNUtail.inc
===================================================================
--- vendor/apache/apr/dist/build/NWGNUtail.inc	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/NWGNUtail.inc	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,373 +0,0 @@
-#
-# This contains final targets and should be included at the end of any
-# NWGNUmakefile file
-#
-
-#
-# If we are going to create an nlm, make sure we have assigned variables to
-# use during the link.
-#
-ifndef NLM_NAME
-NLM_NAME = $(TARGET_nlm)
-endif
-
-ifndef NLM_DESCRIPTION
-NLM_DESCRIPTION = $(NLM_NAME)
-endif
-
-ifndef NLM_THREAD_NAME
-NLM_THREAD_NAME = $(NLM_NAME) Thread
-endif
-
-ifndef NLM_SCREEN_NAME
-NLM_SCREEN_NAME = DEFAULT
-endif
-
-ifndef NLM_COPYRIGHT
-NLM_COPYRIGHT = Licensed under the Apache License, Version 2.0
-endif
-
-ifeq "$(NLM_FLAGS)" ""
-NLM_FLAGS = AUTOUNLOAD, PSEUDOPREEMPTION
-endif
-
-ifeq "$(NLM_STACK_SIZE)" ""
-NLM_STACK_SIZE = 65536
-endif
-
-ifeq "$(NLM_ENTRY_SYM)" ""
-NLM_ENTRY_SYM = _LibCPrelude
-endif
-
-ifeq "$(NLM_EXIT_SYM)" ""
-NLM_EXIT_SYM = _LibCPostlude
-endif
-
-ifeq "$(NLM_VERSION)" ""
-NLM_VERSION = $(VERSION)
-endif
-
-#
-# Create dependency lists based on the files available
-#
-
-
-CCOPT_DEPENDS			= \
-				$(APRBUILD)/NWGNUhead.inc \
-				$(APRBUILD)/NWGNUenvironment.inc \
-				$(APRBUILD)/NWGNUtail.inc \
-				NWGNUmakefile \
-				$(CUSTOM_INI) \
-				$(EOLIST)
-
-CPPOPT_DEPENDS			= \
-				$(APRBUILD)/NWGNUhead.inc \
-				$(APRBUILD)/NWGNUenvironment.inc \
-				$(APRBUILD)/NWGNUtail.inc \
-				NWGNUmakefile \
-				$(CUSTOM_INI) \
-				$(EOLIST)
-
-$(NLM_NAME)_LINKOPT_DEPENDS	= \
-				$(TARGET_lib) \
-				$(APRBUILD)/NWGNUenvironment.inc \
-				NWGNUmakefile \
-				$(APRBUILD)/NWGNUtail.inc \
-				$(CUSTOM_INI) \
-				$(VERSION_INC) \
-				$(EOLIST)
-
-ifeq "$(words $(strip $(TARGET_lib)))" "1"
-LIB_NAME			= $(basename $(notdir $(TARGET_lib)))
-$(LIB_NAME)_LIBLST_DEPENDS	= \
-				$(FILES_lib_objs) \
-				$(APRBUILD)/NWGNUenvironment.inc \
-				NWGNUmakefile \
-				$(APRBUILD)/NWGNUtail.inc \
-				$(CUSTOM_INI) \
-				$(EOLIST)
-endif
-
-ifeq "$(wildcard NWGNU$(LIB_NAME))" "NWGNU$(LIB_NAME)"
-$(LIB_NAME)_LIBLST_DEPENDS	+= NWGNU$(LIB_NAME)
-endif
-
-ifeq "$(wildcard NWGNU$(NLM_NAME))" "NWGNU$(NLM_NAME)"
-$(NLM_NAME)_LINKOPT_DEPENDS	+= NWGNU$(NLM_NAME)
-CCOPT_DEPENDS 	+= NWGNU$(NLM_NAME)
-CPPOPT_DEPENDS 	+= NWGNU$(NLM_NAME)
-endif
-
-#
-# Generic compiler rules
-#
-
-ifneq "$(MAKECMDGOALS)" "clean"
-ifneq "$(findstring clobber_,$(MAKECMDGOALS))" "clobber_"
-$(APRBUILD)/NWGNUversion.inc : $(APRBUILD)/nw_ver.awk $(APR)/include/apr_version.h
-#	@echo Generating $@
-	@echo GEN  $@
-	@$(AWK) -f $^ > $@
-
--include $(APRBUILD)/NWGNUversion.inc
-
-ifneq "$(strip $(VERSION_STR))" ""
-VERSION_INC = $(APRBUILD)/NWGNUversion.inc
-else
-VERSION		= 1,4,0
-VERSION_STR	= 1.4.0
-VERSION_MAJMIN	= 14
-endif
-endif
-endif
-
-ifeq "$(words $(strip $(TARGET_nlm)))" "1"
-INCLUDE_BLDCMDS	= 1
-CCOPT_NAME	= $(NLM_NAME)
-endif
-
-ifeq "$(words $(strip $(TARGET_lib)))" "1"
-INCLUDE_BLDCMDS	= 1
-CCOPT_NAME	= $(LIB_NAME)
-endif
-
-ifeq "$(INCLUDE_BLDCMDS)" "1"
-
-$(OBJDIR)/%.o: %.c $(OBJDIR)/$(CCOPT_NAME)_cc.opt
-#	@echo Compiling $<
-	@echo $(DL)CC   $<$(DL)
-	$(CC) -o $@ $< @$(word 2, $^)
-
-$(OBJDIR)/$(CCOPT_NAME)_cc.opt: $(CCOPT_DEPENDS)
-	$(call DEL,$@)
-ifdef VERBOSE
-	@echo $(DL)CCOPT_DEPENDS=$^$(DL)
-endif
-#	@echo Generating $@
-	@echo $(DL)GEN  $@$(DL)
-ifneq "$(strip $(CFLAGS))" ""
-	@echo $(DL)$(CFLAGS)$(DL)>> $@
-endif
-ifneq "$(strip $(XCFLAGS))" ""
-	@echo $(DL)$(XCFLAGS)$(DL)>> $@
-endif
-ifneq "$(strip $(XINCDIRS))" ""
-	@echo $(DL)$(foreach xincdir,$(strip $(subst ;,$(SPACE),$(XINCDIRS))),-I$(xincdir))$(DL)>> $@
-endif
-ifneq "$(strip $(INCDIRS))" ""
-	@echo $(DL)$(foreach incdir,$(strip $(subst ;,$(SPACE),$(INCDIRS))),-I$(incdir))$(DL)>> $@
-endif
-ifneq "$(strip $(DEFINES))" ""
-	@echo $(DL)$(DEFINES)$(DL)>> $@
-endif
-ifneq "$(strip $(XDEFINES))" ""
-	@echo $(DL)$(XDEFINES)$(DL)>> $@
-endif
-
-$(OBJDIR)/%.o: %.cpp $(OBJDIR)/$(CCOPT_NAME)_cpp.opt
-#	@echo Compiling $<
-	@echo $(DL)CPP  $<$(DL)
-	$(CCP) -o $@ $< @$(word 2, $^)
-
-$(OBJDIR)/$(CCOPT_NAME)_cpp.opt: $(CPPOPT_DEPENDS)
-	$(call DEL,$@)
-ifdef VERBOSE
-	@echo $(DL)CPPOPT_DEPENDS=$^$(DL)
-endif
-#	@echo Generating $@
-	@echo $(DL)GEN  $@$(DL)
-ifneq "$(strip $(CFLAGS))" ""
-	@echo $(DL)$(CFLAGS)$(DL)>> $@
-endif
-ifneq "$(strip $(XCFLAGS))" ""
-	@echo $(DL)$(XCFLAGS)$(DL)>> $@
-endif
-ifneq "$(strip $(XINCDIRS))" ""
-	@echo $(DL)$(foreach xincdir,$(strip $(subst ;,$(SPACE),$(XINCDIRS))),-I$(xincdir))$(DL)>> $@
-endif
-ifneq "$(strip $(INCDIRS))" ""
-	@echo $(DL)$(foreach incdir,$(strip $(subst ;,$(SPACE),$(INCDIRS))),-I$(incdir))$(DL)>> $@
-endif
-ifneq "$(strip $(DEFINES))" ""
-	@echo $(DL)$(DEFINES)$(DL)>> $@
-endif
-ifneq "$(strip $(XDEFINES))" ""
-	@echo $(DL)$(XDEFINES)$(DL)>> $@
-endif
-
-endif # one target nlm or lib
-
-#
-# Rules to build libraries
-#
-
-# If we only have one target library then build it
-
-ifeq "$(words $(strip $(TARGET_lib)))" "1"
-
-$(TARGET_lib) : $(OBJDIR)/$(LIB_NAME)_lib.lst
-	$(call DEL,$@)
-#	@echo Generating $@
-	@echo $(DL)AR   $@$(DL)
-	$(LIB) -o $@ @$<
-
-$(OBJDIR)/aprlib_lib.lst: $(aprlib_LIBLST_DEPENDS)
-	$(call DEL,$@)
-ifneq "$(strip $(FILES_lib_objs))" ""
-#	@echo Generating $@
-	@echo $(DL)GEN  $@$(DL)
-ifdef VERBOSE
-	@echo $(DL)FILES_lib_objs=$(words $(FILES_lib_objs))$(DL)
-endif
-	@echo $(DL)$(wordlist  1, 20, $(FILES_lib_objs))$(DL)>> $@
-	@echo $(DL)$(wordlist 21, 40, $(FILES_lib_objs))$(DL)>> $@
-	@echo $(DL)$(wordlist 41, 60, $(FILES_lib_objs))$(DL)>> $@
-	@echo $(DL)$(wordlist 61, 80, $(FILES_lib_objs))$(DL)>> $@
-endif
-
-$(OBJDIR)/%_lib.lst: $($(LIB_NAME)_LIBLST_DEPENDS)
-	$(call DEL,$@)
-ifneq "$(strip $(FILES_lib_objs))" ""
-#	@echo Generating $@
-	@echo $(DL)GEN  $@$(DL)
-ifdef VERBOSE
-	@echo FILES_lib_objs=$(words $(FILES_lib_objs))
-endif
-	@echo $(DL)$(FILES_lib_objs)$(DL)>> $@
-endif
-
-else # We must have more than one target library so load the individual makefiles
-
-$(OBJDIR)/%.lib: NWGNU% $(APRBUILD)/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(APRBUILD)/NWGNUenvironment.inc FORCE
-	@echo $(DL)Calling $<$(DL)
-	$(MAKE) -f $< $(MAKECMDGOALS) RELEASE=$(RELEASE)
-
-endif
-
-#
-# Rules to build nlms.
-#
-
-# If we only have one target NLM then build it
-ifeq "$(words $(strip $(TARGET_nlm)))" "1"
-
-$(TARGET_nlm) : $(FILES_nlm_objs) $(FILES_nlm_libs) $(OBJDIR)/$(NLM_NAME)_link.opt
-#	@echo Linking $@
-	@echo $(DL)LINK $@$(DL)
-	$(LINK) @$(OBJDIR)/$(NLM_NAME)_link.opt
-
-# This will force the link option file to be rebuilt if we change the
-# corresponding makefile
-
-$(OBJDIR)/$(NLM_NAME)_link.opt : $($(NLM_NAME)_LINKOPT_DEPENDS)
-	$(call DEL,$@)
-	$(call DEL,$(@:.opt=.def))
-#	@echo Generating $@
-	@echo $(DL)GEN  $@$(DL)
-	@echo $(DL)# Do not edit this file - it is created by make!$(DL) > $@
-	@echo $(DL)# All your changes will be lost!!$(DL)>> $@
-	@echo $(DL)-warnings off$(DL)>> $@
-	@echo $(DL)-zerobss$(DL)>> $@
-	@echo $(DL)-o $(TARGET_nlm)$(DL)>> $@
-ifneq "$(FILE_nlm_copyright)" ""
-	@-$(CAT) $(FILE_nlm_copyright) >> $@
-endif
-ifeq "$(RELEASE)" "debug"
-	@echo $(DL)-g$(DL)>> $@
-	@echo $(DL)-sym internal$(DL)>> $@
-	@echo $(DL)-sym codeview4$(DL)>> $@
-	@echo $(DL)-osym $(OBJDIR)/$(NLM_NAME).sym$(DL)>> $@
-else
-	@echo $(DL)-sym internal$(DL)>> $@
-endif
-	@echo $(DL)-l $(APR)/$(OBJDIR)$(DL)>> $@
-	@echo $(DL)-l $(APU)/$(OBJDIR)$(DL)>> $@
-	@echo $(DL)-l $(APULDAP)/$(OBJDIR)$(DL)>> $@
-	@echo $(DL)-l $(APUXML)/$(OBJDIR)$(DL)>> $@
-	@echo $(DL)-l $(APR)/misc/netware$(DL)>> $@
-	@echo $(DL)-l $(APR)$(DL)>> $@
-	@echo $(DL)-l "$(METROWERKS)/Novell Support/Metrowerks Support/Libraries/Runtime"$(DL)>> $@
-	@echo $(DL)-l "$(METROWERKS)/Novell Support/Metrowerks Support/Libraries/MSL C++"$(DL)>> $@
-ifneq "$(IPV6)" ""
-	@echo $(DL)-l $(NOVELLLIBC)/include/winsock/IPV6$(DL)>> $@
-endif
-	@echo $(DL)-l $(NOVELLLIBC)/imports$(DL)>> $@
-ifneq "$(LDAPSDK)" ""
-	@echo $(DL)-l $(LDAPSDK)/imports$(DL)>> $@
-endif
-	@echo $(DL)-nodefaults$(DL)>> $@
-	@echo $(DL)-map $(OBJDIR)/$(NLM_NAME).map$(DL)>> $@
-ifneq "$(strip $(XLFLAGS))" ""
-	@echo $(DL)$(XLFLAGS)$(DL)>> $@
-endif
-ifneq "$(strip $(FILES_nlm_objs))" ""
-	@echo $(DL)$(foreach objfile,$(strip $(FILES_nlm_objs)),$(objfile))$(DL)>> $@
-endif
-ifneq "$(FILES_nlm_libs)" ""
-	@echo $(DL)$(foreach libfile, $(notdir $(strip $(FILES_nlm_libs))),-l$(libfile))$(DL)>> $@
-endif
-	@echo $(DL)-commandfile $(@:.opt=.def)$(DL)>> $@
-	@echo $(DL)# Do not edit this file - it is created by make!$(DL)> $(@:.opt=.def)
-	@echo $(DL)# All your changes will be lost!!$(DL)>> $(@:.opt=.def)
-ifneq "$(FILE_nlm_msg)" ""
-	@echo $(DL)Messages $(FILE_nlm_msg)$(DL)>> $(@:.opt=.def)
-endif
-ifneq "$(FILE_nlm_hlp)" ""
-	@echo $(DL)Help $(FILE_nlm_hlp)$(DL)>> $(@:.opt=.def)
-endif
-ifeq "$(FILE_nlm_copyright)" ""
-	@echo $(DL)copyright "$(NLM_COPYRIGHT)"$(DL)>> $(@:.opt=.def)
-endif
-	@echo $(DL)description "$(NLM_DESCRIPTION)"$(DL)>> $(@:.opt=.def)
-	@echo $(DL)threadname "$(NLM_THREAD_NAME)"$(DL)>> $(@:.opt=.def)
-	@echo $(DL)screenname "$(NLM_SCREEN_NAME)"$(DL)>> $(@:.opt=.def)
-	@echo $(DL)stacksize $(subst K,000,$(subst k,K,$(strip $(NLM_STACK_SIZE))))$(DL)>> $(@:.opt=.def)
-	@echo $(DL)version $(NLM_VERSION) $(DL)>> $(@:.opt=.def)
-	@echo $(DL)$(strip $(NLM_FLAGS))$(DL)>> $(@:.opt=.def)
-	@echo $(DL)start $(NLM_ENTRY_SYM)$(DL)>> $(@:.opt=.def)
-	@echo $(DL)exit $(NLM_EXIT_SYM)$(DL)>> $(@:.opt=.def)
-ifneq "$(NLM_CHECK_SYM)" ""
-	@echo $(DL)check $(NLM_CHECK_SYM)$(DL)>> $(@:.opt=.def)
-endif
-ifneq "$(FILES_nlm_modules)" ""
-	@echo $(DL)module $(foreach module,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_modules))),$(module))$(DL)>> $(@:.opt=.def)
-endif
-ifneq "$(FILES_nlm_Ximports)" ""
-	@echo $(DL)import $(foreach import,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_Ximports))),$(import))$(DL)>> $(@:.opt=.def)
-endif
-ifneq "$(FILES_nlm_exports)" ""
-	@echo $(DL)export $(foreach export,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_exports))),$(export))$(DL)>> $(@:.opt=.def)
-endif
-# if APACHE_UNIPROC is defined, don't include XDCData
-ifndef APACHE_UNIPROC
-ifneq "$(string $(XDCDATA))" ""
-	@echo $(DL)xdcdata $(XDCDATA)$(DL)>> $(@:.opt=.def)
-else
-	@echo $(DL)xdcdata apr.xdc$(DL)>> $(@:.opt=.def)
-endif
-endif
-
-else # more than one target so look for individual makefiles.
-
-# Only include these if NO_LICENSE_FILE isn't set to prevent excessive
-# recursion
-
-ifndef NO_LICENSE_FILE
-
-$(OBJDIR)/%.nlm: NWGNU% $(APRBUILD)/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(APRBUILD)/NWGNUenvironment.inc $(CUSTOM_INI) $(VERSION_INC) FORCE
-	@echo $(DL)Calling $<$(DL)
-	$(MAKE) -f $< $(MAKECMDGOALS) RELEASE=$(RELEASE)
-	@$(ECHONL)
-
-else
-
-$(TARGET_nlm):
-
-endif # NO_LICENSE_FILE
-
-endif # multiple targets
-
-$(INSTDIRS) ::
-	$(call MKDIR,$@)
-
-

Copied: vendor/apache/apr/1.5.2/build/NWGNUtail.inc (from rev 9273, vendor/apache/apr/dist/build/NWGNUtail.inc)
===================================================================
--- vendor/apache/apr/1.5.2/build/NWGNUtail.inc	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/NWGNUtail.inc	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,373 @@
+#
+# This contains final targets and should be included at the end of any
+# NWGNUmakefile file
+#
+
+#
+# If we are going to create an nlm, make sure we have assigned variables to
+# use during the link.
+#
+ifndef NLM_NAME
+NLM_NAME = $(TARGET_nlm)
+endif
+
+ifndef NLM_DESCRIPTION
+NLM_DESCRIPTION = $(NLM_NAME)
+endif
+
+ifndef NLM_THREAD_NAME
+NLM_THREAD_NAME = $(NLM_NAME) Thread
+endif
+
+ifndef NLM_SCREEN_NAME
+NLM_SCREEN_NAME = DEFAULT
+endif
+
+ifndef NLM_COPYRIGHT
+NLM_COPYRIGHT = Licensed under the Apache License, Version 2.0
+endif
+
+ifeq "$(NLM_FLAGS)" ""
+NLM_FLAGS = AUTOUNLOAD, PSEUDOPREEMPTION
+endif
+
+ifeq "$(NLM_STACK_SIZE)" ""
+NLM_STACK_SIZE = 65536
+endif
+
+ifeq "$(NLM_ENTRY_SYM)" ""
+NLM_ENTRY_SYM = _LibCPrelude
+endif
+
+ifeq "$(NLM_EXIT_SYM)" ""
+NLM_EXIT_SYM = _LibCPostlude
+endif
+
+ifeq "$(NLM_VERSION)" ""
+NLM_VERSION = $(VERSION)
+endif
+
+#
+# Create dependency lists based on the files available
+#
+
+
+CCOPT_DEPENDS			= \
+				$(APRBUILD)/NWGNUhead.inc \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				$(APRBUILD)/NWGNUtail.inc \
+				NWGNUmakefile \
+				$(CUSTOM_INI) \
+				$(EOLIST)
+
+CPPOPT_DEPENDS			= \
+				$(APRBUILD)/NWGNUhead.inc \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				$(APRBUILD)/NWGNUtail.inc \
+				NWGNUmakefile \
+				$(CUSTOM_INI) \
+				$(EOLIST)
+
+$(NLM_NAME)_LINKOPT_DEPENDS	= \
+				$(TARGET_lib) \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				NWGNUmakefile \
+				$(APRBUILD)/NWGNUtail.inc \
+				$(CUSTOM_INI) \
+				$(VERSION_INC) \
+				$(EOLIST)
+
+ifeq "$(words $(strip $(TARGET_lib)))" "1"
+LIB_NAME			= $(basename $(notdir $(TARGET_lib)))
+$(LIB_NAME)_LIBLST_DEPENDS	= \
+				$(FILES_lib_objs) \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				NWGNUmakefile \
+				$(APRBUILD)/NWGNUtail.inc \
+				$(CUSTOM_INI) \
+				$(EOLIST)
+endif
+
+ifeq "$(wildcard NWGNU$(LIB_NAME))" "NWGNU$(LIB_NAME)"
+$(LIB_NAME)_LIBLST_DEPENDS	+= NWGNU$(LIB_NAME)
+endif
+
+ifeq "$(wildcard NWGNU$(NLM_NAME))" "NWGNU$(NLM_NAME)"
+$(NLM_NAME)_LINKOPT_DEPENDS	+= NWGNU$(NLM_NAME)
+CCOPT_DEPENDS 	+= NWGNU$(NLM_NAME)
+CPPOPT_DEPENDS 	+= NWGNU$(NLM_NAME)
+endif
+
+#
+# Generic compiler rules
+#
+
+ifneq "$(MAKECMDGOALS)" "clean"
+ifneq "$(findstring clobber_,$(MAKECMDGOALS))" "clobber_"
+$(APRBUILD)/NWGNUversion.inc : $(APRBUILD)/nw_ver.awk $(APR)/include/apr_version.h
+#	@echo Generating $@
+	@echo GEN  $@
+	@$(AWK) -f $^ > $@
+
+-include $(APRBUILD)/NWGNUversion.inc
+
+ifneq "$(strip $(VERSION_STR))" ""
+VERSION_INC = $(APRBUILD)/NWGNUversion.inc
+else
+VERSION		= 1,5,0
+VERSION_STR	= 1.5.0
+VERSION_MAJMIN	= 15
+endif
+endif
+endif
+
+ifeq "$(words $(strip $(TARGET_nlm)))" "1"
+INCLUDE_BLDCMDS	= 1
+CCOPT_NAME	= $(NLM_NAME)
+endif
+
+ifeq "$(words $(strip $(TARGET_lib)))" "1"
+INCLUDE_BLDCMDS	= 1
+CCOPT_NAME	= $(LIB_NAME)
+endif
+
+ifeq "$(INCLUDE_BLDCMDS)" "1"
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/$(CCOPT_NAME)_cc.opt
+#	@echo Compiling $<
+	@echo $(DL)CC   $<$(DL)
+	$(CC) -o $@ $< @$(word 2, $^)
+
+$(OBJDIR)/$(CCOPT_NAME)_cc.opt: $(CCOPT_DEPENDS)
+	$(call DEL,$@)
+ifdef VERBOSE
+	@echo $(DL)CCOPT_DEPENDS=$^$(DL)
+endif
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifneq "$(strip $(CFLAGS))" ""
+	@echo $(DL)$(CFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XCFLAGS))" ""
+	@echo $(DL)$(XCFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XINCDIRS))" ""
+	@echo $(DL)$(foreach xincdir,$(strip $(subst ;,$(SPACE),$(XINCDIRS))),-I$(xincdir))$(DL)>> $@
+endif
+ifneq "$(strip $(INCDIRS))" ""
+	@echo $(DL)$(foreach incdir,$(strip $(subst ;,$(SPACE),$(INCDIRS))),-I$(incdir))$(DL)>> $@
+endif
+ifneq "$(strip $(DEFINES))" ""
+	@echo $(DL)$(DEFINES)$(DL)>> $@
+endif
+ifneq "$(strip $(XDEFINES))" ""
+	@echo $(DL)$(XDEFINES)$(DL)>> $@
+endif
+
+$(OBJDIR)/%.o: %.cpp $(OBJDIR)/$(CCOPT_NAME)_cpp.opt
+#	@echo Compiling $<
+	@echo $(DL)CPP  $<$(DL)
+	$(CCP) -o $@ $< @$(word 2, $^)
+
+$(OBJDIR)/$(CCOPT_NAME)_cpp.opt: $(CPPOPT_DEPENDS)
+	$(call DEL,$@)
+ifdef VERBOSE
+	@echo $(DL)CPPOPT_DEPENDS=$^$(DL)
+endif
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifneq "$(strip $(CFLAGS))" ""
+	@echo $(DL)$(CFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XCFLAGS))" ""
+	@echo $(DL)$(XCFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XINCDIRS))" ""
+	@echo $(DL)$(foreach xincdir,$(strip $(subst ;,$(SPACE),$(XINCDIRS))),-I$(xincdir))$(DL)>> $@
+endif
+ifneq "$(strip $(INCDIRS))" ""
+	@echo $(DL)$(foreach incdir,$(strip $(subst ;,$(SPACE),$(INCDIRS))),-I$(incdir))$(DL)>> $@
+endif
+ifneq "$(strip $(DEFINES))" ""
+	@echo $(DL)$(DEFINES)$(DL)>> $@
+endif
+ifneq "$(strip $(XDEFINES))" ""
+	@echo $(DL)$(XDEFINES)$(DL)>> $@
+endif
+
+endif # one target nlm or lib
+
+#
+# Rules to build libraries
+#
+
+# If we only have one target library then build it
+
+ifeq "$(words $(strip $(TARGET_lib)))" "1"
+
+$(TARGET_lib) : $(OBJDIR)/$(LIB_NAME)_lib.lst
+	$(call DEL,$@)
+#	@echo Generating $@
+	@echo $(DL)AR   $@$(DL)
+	$(LIB) -o $@ @$<
+
+$(OBJDIR)/aprlib_lib.lst: $(aprlib_LIBLST_DEPENDS)
+	$(call DEL,$@)
+ifneq "$(strip $(FILES_lib_objs))" ""
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifdef VERBOSE
+	@echo $(DL)FILES_lib_objs=$(words $(FILES_lib_objs))$(DL)
+endif
+	@echo $(DL)$(wordlist  1, 20, $(FILES_lib_objs))$(DL)>> $@
+	@echo $(DL)$(wordlist 21, 40, $(FILES_lib_objs))$(DL)>> $@
+	@echo $(DL)$(wordlist 41, 60, $(FILES_lib_objs))$(DL)>> $@
+	@echo $(DL)$(wordlist 61, 80, $(FILES_lib_objs))$(DL)>> $@
+endif
+
+$(OBJDIR)/%_lib.lst: $($(LIB_NAME)_LIBLST_DEPENDS)
+	$(call DEL,$@)
+ifneq "$(strip $(FILES_lib_objs))" ""
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifdef VERBOSE
+	@echo FILES_lib_objs=$(words $(FILES_lib_objs))
+endif
+	@echo $(DL)$(FILES_lib_objs)$(DL)>> $@
+endif
+
+else # We must have more than one target library so load the individual makefiles
+
+$(OBJDIR)/%.lib: NWGNU% $(APRBUILD)/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(APRBUILD)/NWGNUenvironment.inc FORCE
+	@echo $(DL)Calling $<$(DL)
+	$(MAKE) -f $< $(MAKECMDGOALS) RELEASE=$(RELEASE)
+
+endif
+
+#
+# Rules to build nlms.
+#
+
+# If we only have one target NLM then build it
+ifeq "$(words $(strip $(TARGET_nlm)))" "1"
+
+$(TARGET_nlm) : $(FILES_nlm_objs) $(FILES_nlm_libs) $(OBJDIR)/$(NLM_NAME)_link.opt
+#	@echo Linking $@
+	@echo $(DL)LINK $@$(DL)
+	$(LINK) @$(OBJDIR)/$(NLM_NAME)_link.opt
+
+# This will force the link option file to be rebuilt if we change the
+# corresponding makefile
+
+$(OBJDIR)/$(NLM_NAME)_link.opt : $($(NLM_NAME)_LINKOPT_DEPENDS)
+	$(call DEL,$@)
+	$(call DEL,$(@:.opt=.def))
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+	@echo $(DL)# Do not edit this file - it is created by make!$(DL) > $@
+	@echo $(DL)# All your changes will be lost!!$(DL)>> $@
+	@echo $(DL)-warnings off$(DL)>> $@
+	@echo $(DL)-zerobss$(DL)>> $@
+	@echo $(DL)-o $(TARGET_nlm)$(DL)>> $@
+ifneq "$(FILE_nlm_copyright)" ""
+	@-$(CAT) $(FILE_nlm_copyright) >> $@
+endif
+ifeq "$(RELEASE)" "debug"
+	@echo $(DL)-g$(DL)>> $@
+	@echo $(DL)-sym internal$(DL)>> $@
+	@echo $(DL)-sym codeview4$(DL)>> $@
+	@echo $(DL)-osym $(OBJDIR)/$(NLM_NAME).sym$(DL)>> $@
+else
+	@echo $(DL)-sym internal$(DL)>> $@
+endif
+	@echo $(DL)-l $(APR)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APU)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APULDAP)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APUXML)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APR)/misc/netware$(DL)>> $@
+	@echo $(DL)-l $(APR)$(DL)>> $@
+	@echo $(DL)-l "$(METROWERKS)/Novell Support/Metrowerks Support/Libraries/Runtime"$(DL)>> $@
+	@echo $(DL)-l "$(METROWERKS)/Novell Support/Metrowerks Support/Libraries/MSL C++"$(DL)>> $@
+ifneq "$(IPV6)" ""
+	@echo $(DL)-l $(NOVELLLIBC)/include/winsock/IPV6$(DL)>> $@
+endif
+	@echo $(DL)-l $(NOVELLLIBC)/imports$(DL)>> $@
+ifneq "$(LDAPSDK)" ""
+	@echo $(DL)-l $(LDAPSDK)/imports$(DL)>> $@
+endif
+	@echo $(DL)-nodefaults$(DL)>> $@
+	@echo $(DL)-map $(OBJDIR)/$(NLM_NAME).map$(DL)>> $@
+ifneq "$(strip $(XLFLAGS))" ""
+	@echo $(DL)$(XLFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(FILES_nlm_objs))" ""
+	@echo $(DL)$(foreach objfile,$(strip $(FILES_nlm_objs)),$(objfile))$(DL)>> $@
+endif
+ifneq "$(FILES_nlm_libs)" ""
+	@echo $(DL)$(foreach libfile, $(notdir $(strip $(FILES_nlm_libs))),-l$(libfile))$(DL)>> $@
+endif
+	@echo $(DL)-commandfile $(@:.opt=.def)$(DL)>> $@
+	@echo $(DL)# Do not edit this file - it is created by make!$(DL)> $(@:.opt=.def)
+	@echo $(DL)# All your changes will be lost!!$(DL)>> $(@:.opt=.def)
+ifneq "$(FILE_nlm_msg)" ""
+	@echo $(DL)Messages $(FILE_nlm_msg)$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILE_nlm_hlp)" ""
+	@echo $(DL)Help $(FILE_nlm_hlp)$(DL)>> $(@:.opt=.def)
+endif
+ifeq "$(FILE_nlm_copyright)" ""
+	@echo $(DL)copyright "$(NLM_COPYRIGHT)"$(DL)>> $(@:.opt=.def)
+endif
+	@echo $(DL)description "$(NLM_DESCRIPTION)"$(DL)>> $(@:.opt=.def)
+	@echo $(DL)threadname "$(NLM_THREAD_NAME)"$(DL)>> $(@:.opt=.def)
+	@echo $(DL)screenname "$(NLM_SCREEN_NAME)"$(DL)>> $(@:.opt=.def)
+	@echo $(DL)stacksize $(subst K,000,$(subst k,K,$(strip $(NLM_STACK_SIZE))))$(DL)>> $(@:.opt=.def)
+	@echo $(DL)version $(NLM_VERSION) $(DL)>> $(@:.opt=.def)
+	@echo $(DL)$(strip $(NLM_FLAGS))$(DL)>> $(@:.opt=.def)
+	@echo $(DL)start $(NLM_ENTRY_SYM)$(DL)>> $(@:.opt=.def)
+	@echo $(DL)exit $(NLM_EXIT_SYM)$(DL)>> $(@:.opt=.def)
+ifneq "$(NLM_CHECK_SYM)" ""
+	@echo $(DL)check $(NLM_CHECK_SYM)$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILES_nlm_modules)" ""
+	@echo $(DL)module $(foreach module,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_modules))),$(module))$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILES_nlm_Ximports)" ""
+	@echo $(DL)import $(foreach import,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_Ximports))),$(import))$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILES_nlm_exports)" ""
+	@echo $(DL)export $(foreach export,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_exports))),$(export))$(DL)>> $(@:.opt=.def)
+endif
+# if APACHE_UNIPROC is defined, don't include XDCData
+ifndef APACHE_UNIPROC
+ifneq "$(string $(XDCDATA))" ""
+	@echo $(DL)xdcdata $(XDCDATA)$(DL)>> $(@:.opt=.def)
+else
+	@echo $(DL)xdcdata apr.xdc$(DL)>> $(@:.opt=.def)
+endif
+endif
+
+else # more than one target so look for individual makefiles.
+
+# Only include these if NO_LICENSE_FILE isn't set to prevent excessive
+# recursion
+
+ifndef NO_LICENSE_FILE
+
+$(OBJDIR)/%.nlm: NWGNU% $(APRBUILD)/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(APRBUILD)/NWGNUenvironment.inc $(CUSTOM_INI) $(VERSION_INC) FORCE
+	@echo $(DL)Calling $<$(DL)
+	$(MAKE) -f $< $(MAKECMDGOALS) RELEASE=$(RELEASE)
+	@$(ECHONL)
+
+else
+
+$(TARGET_nlm):
+
+endif # NO_LICENSE_FILE
+
+endif # multiple targets
+
+$(INSTDIRS) ::
+	$(call MKDIR,$@)
+
+

Deleted: vendor/apache/apr/1.5.2/build/PrintPath
===================================================================
--- vendor/apache/apr/dist/build/PrintPath	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/PrintPath	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,130 +0,0 @@
-#!/bin/sh
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-# Look for program[s] somewhere in $PATH.
-#
-# Options:
-#  -s
-#    Do not print out full pathname. (silent)
-#  -pPATHNAME
-#    Look in PATHNAME instead of $PATH
-#
-# Usage:
-#  PrintPath [-s] [-pPATHNAME] program [program ...]
-#
-# Initially written by Jim Jagielski for the Apache configuration mechanism
-#  (with kudos to Kernighan/Pike)
-
-##
-# Some "constants"
-##
-pathname=$PATH
-echo="yes"
-
-##
-# Find out what OS we are running for later on
-##
-os=`(uname) 2>/dev/null`
-
-##
-# Parse command line
-##
-for args in $*
-do
-    case $args in
-	-s  ) echo="no" ;;
-	-p* ) pathname="`echo $args | sed 's/^..//'`" ;;
-	*   ) programs="$programs $args" ;;
-    esac
-done
-
-##
-# Now we make the adjustments required for OS/2 and everyone
-# else :)
-#
-# First of all, all OS/2 programs have the '.exe' extension.
-# Next, we adjust PATH (or what was given to us as PATH) to
-# be whitespace separated directories.
-# Finally, we try to determine the best flag to use for
-# test/[] to look for an executable file. OS/2 just has '-r'
-# but with other OSs, we do some funny stuff to check to see
-# if test/[] knows about -x, which is the prefered flag.
-##
-
-if [ "x$os" = "xOS/2" ]
-then
-    ext=".exe"
-    pathname=`echo -E $pathname |
-     sed 's/^;/.;/
-	  s/;;/;.;/g
-	  s/;$/;./
-	  s/;/ /g
-	  s/\\\\/\\//g' `
-    test_exec_flag="-r"
-else
-    ext=""	# No default extensions
-    pathname=`echo $pathname |
-     sed 's/^:/.:/
-	  s/::/:.:/g
-	  s/:$/:./
-	  s/:/ /g' `
-    # Here is how we test to see if test/[] can handle -x
-    testfile="pp.t.$$"
-
-    cat > $testfile <<ENDTEST
-#!/bin/sh
-if [ -x / ] || [ -x /bin ] || [ -x /bin/ls ]; then
-    exit 0
-fi
-exit 1
-ENDTEST
-
-    if `/bin/sh $testfile 2>/dev/null`; then
-	test_exec_flag="-x"
-    else
-	test_exec_flag="-r"
-    fi
-    rm -f $testfile
-fi
-
-for program in $programs
-do
-    for path in $pathname
-    do
-	if [ $test_exec_flag $path/${program}${ext} ] && \
-	   [ ! -d $path/${program}${ext} ]; then
-	    if [ "x$echo" = "xyes" ]; then
-		echo $path/${program}${ext}
-	    fi
-	    exit 0
-	fi
-
-# Next try without extension (if one was used above)
-	if [ "x$ext" != "x" ]; then
-            if [ $test_exec_flag $path/${program} ] && \
-               [ ! -d $path/${program} ]; then
-                if [ "x$echo" = "xyes" ]; then
-                    echo $path/${program}
-                fi
-                exit 0
-            fi
-        fi
-    done
-done
-exit 1
-

Copied: vendor/apache/apr/1.5.2/build/PrintPath (from rev 9273, vendor/apache/apr/dist/build/PrintPath)
===================================================================
--- vendor/apache/apr/1.5.2/build/PrintPath	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/PrintPath	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,130 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+# Look for program[s] somewhere in $PATH.
+#
+# Options:
+#  -s
+#    Do not print out full pathname. (silent)
+#  -pPATHNAME
+#    Look in PATHNAME instead of $PATH
+#
+# Usage:
+#  PrintPath [-s] [-pPATHNAME] program [program ...]
+#
+# Initially written by Jim Jagielski for the Apache configuration mechanism
+#  (with kudos to Kernighan/Pike)
+
+##
+# Some "constants"
+##
+pathname=$PATH
+echo="yes"
+
+##
+# Find out what OS we are running for later on
+##
+os=`(uname) 2>/dev/null`
+
+##
+# Parse command line
+##
+for args in $*
+do
+    case $args in
+	-s  ) echo="no" ;;
+	-p* ) pathname="`echo $args | sed 's/^..//'`" ;;
+	*   ) programs="$programs $args" ;;
+    esac
+done
+
+##
+# Now we make the adjustments required for OS/2 and everyone
+# else :)
+#
+# First of all, all OS/2 programs have the '.exe' extension.
+# Next, we adjust PATH (or what was given to us as PATH) to
+# be whitespace separated directories.
+# Finally, we try to determine the best flag to use for
+# test/[] to look for an executable file. OS/2 just has '-r'
+# but with other OSs, we do some funny stuff to check to see
+# if test/[] knows about -x, which is the prefered flag.
+##
+
+if [ "x$os" = "xOS/2" ]
+then
+    ext=".exe"
+    pathname=`echo -E $pathname |
+     sed 's/^;/.;/
+	  s/;;/;.;/g
+	  s/;$/;./
+	  s/;/ /g
+	  s/\\\\/\\//g' `
+    test_exec_flag="-r"
+else
+    ext=""	# No default extensions
+    pathname=`echo $pathname |
+     sed 's/^:/.:/
+	  s/::/:.:/g
+	  s/:$/:./
+	  s/:/ /g' `
+    # Here is how we test to see if test/[] can handle -x
+    testfile="pp.t.$$"
+
+    cat > $testfile <<ENDTEST
+#!/bin/sh
+if [ -x / ] || [ -x /bin ] || [ -x /bin/ls ]; then
+    exit 0
+fi
+exit 1
+ENDTEST
+
+    if `/bin/sh $testfile 2>/dev/null`; then
+	test_exec_flag="-x"
+    else
+	test_exec_flag="-r"
+    fi
+    rm -f $testfile
+fi
+
+for program in $programs
+do
+    for path in $pathname
+    do
+	if [ $test_exec_flag $path/${program}${ext} ] && \
+	   [ ! -d $path/${program}${ext} ]; then
+	    if [ "x$echo" = "xyes" ]; then
+		echo $path/${program}${ext}
+	    fi
+	    exit 0
+	fi
+
+# Next try without extension (if one was used above)
+	if [ "x$ext" != "x" ]; then
+            if [ $test_exec_flag $path/${program} ] && \
+               [ ! -d $path/${program} ]; then
+                if [ "x$echo" = "xyes" ]; then
+                    echo $path/${program}
+                fi
+                exit 0
+            fi
+        fi
+    done
+done
+exit 1
+

Deleted: vendor/apache/apr/1.5.2/build/apr_common.m4
===================================================================
--- vendor/apache/apr/dist/build/apr_common.m4	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/apr_common.m4	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,985 +0,0 @@
-dnl -------------------------------------------------------- -*- autoconf -*-
-dnl Licensed to the Apache Software Foundation (ASF) under one or more
-dnl contributor license agreements.  See the NOTICE file distributed with
-dnl this work for additional information regarding copyright ownership.
-dnl The ASF licenses this file to You under the Apache License, Version 2.0
-dnl (the "License"); you may not use this file except in compliance with
-dnl the License.  You may obtain a copy of the License at
-dnl
-dnl     http://www.apache.org/licenses/LICENSE-2.0
-dnl
-dnl Unless required by applicable law or agreed to in writing, software
-dnl distributed under the License is distributed on an "AS IS" BASIS,
-dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-dnl See the License for the specific language governing permissions and
-dnl limitations under the License.
-
-dnl
-dnl apr_common.m4: APR's general-purpose autoconf macros
-dnl
-
-dnl
-dnl APR_CONFIG_NICE(filename)
-dnl
-dnl Saves a snapshot of the configure command-line for later reuse
-dnl
-AC_DEFUN([APR_CONFIG_NICE], [
-  rm -f $1
-  cat >$1<<EOF
-#! /bin/sh
-#
-# Created by configure
-
-EOF
-  if test -n "$CC"; then
-    echo "CC=\"$CC\"; export CC" >> $1
-  fi
-  if test -n "$CFLAGS"; then
-    echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> $1
-  fi
-  if test -n "$CPPFLAGS"; then
-    echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> $1
-  fi
-  if test -n "$LDFLAGS"; then
-    echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> $1
-  fi
-  if test -n "$LTFLAGS"; then
-    echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> $1
-  fi
-  if test -n "$LIBS"; then
-    echo "LIBS=\"$LIBS\"; export LIBS" >> $1
-  fi
-  if test -n "$INCLUDES"; then
-    echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> $1
-  fi
-  if test -n "$NOTEST_CFLAGS"; then
-    echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> $1
-  fi
-  if test -n "$NOTEST_CPPFLAGS"; then
-    echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> $1
-  fi
-  if test -n "$NOTEST_LDFLAGS"; then
-    echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> $1
-  fi
-  if test -n "$NOTEST_LIBS"; then
-    echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> $1
-  fi
-
-  # Retrieve command-line arguments.
-  eval "set x $[0] $ac_configure_args"
-  shift
-
-  for arg
-  do
-    APR_EXPAND_VAR(arg, $arg)
-    echo "\"[$]arg\" \\" >> $1
-  done
-  echo '"[$]@"' >> $1
-  chmod +x $1
-])dnl
-
-dnl APR_MKDIR_P_CHECK(fallback-mkdir-p)
-dnl checks whether mkdir -p works
-AC_DEFUN([APR_MKDIR_P_CHECK], [
-  AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[
-    test -d conftestdir && rm -rf conftestdir
-    mkdir -p conftestdir/somedir >/dev/null 2>&1
-    if test -d conftestdir/somedir; then
-      ac_cv_mkdir_p=yes
-    else
-      ac_cv_mkdir_p=no
-    fi
-    rm -rf conftestdir
-  ])
-  if test "$ac_cv_mkdir_p" = "yes"; then
-      mkdir_p="mkdir -p"
-  else
-      mkdir_p="$1"
-  fi
-])
-
-dnl
-dnl APR_SUBDIR_CONFIG(dir [, sub-package-cmdline-args, args-to-drop])
-dnl
-dnl dir: directory to find configure in
-dnl sub-package-cmdline-args: arguments to add to the invocation (optional)
-dnl args-to-drop: arguments to drop from the invocation (optional)
-dnl
-dnl Note: This macro relies on ac_configure_args being set properly.
-dnl
-dnl The args-to-drop argument is shoved into a case statement, so
-dnl multiple arguments can be separated with a |.
-dnl
-dnl Note: Older versions of autoconf do not single-quote args, while 2.54+
-dnl places quotes around every argument.  So, if you want to drop the
-dnl argument called --enable-layout, you must pass the third argument as:
-dnl [--enable-layout=*|\'--enable-layout=*]
-dnl
-dnl Trying to optimize this is left as an exercise to the reader who wants
-dnl to put up with more autoconf craziness.  I give up.
-dnl
-AC_DEFUN([APR_SUBDIR_CONFIG], [
-  # save our work to this point; this allows the sub-package to use it
-  AC_CACHE_SAVE
-
-  echo "configuring package in $1 now"
-  ac_popdir=`pwd`
-  apr_config_subdirs="$1"
-  test -d $1 || $mkdir_p $1
-  ac_abs_srcdir=`(cd $srcdir/$1 && pwd)`
-  cd $1
-
-changequote(, )dnl
-      # A "../" for each directory in /$config_subdirs.
-      ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
-changequote([, ])dnl
-
-  # Make the cache file pathname absolute for the subdirs
-  # required to correctly handle subdirs that might actually
-  # be symlinks
-  case "$cache_file" in
-  /*) # already absolute
-    ac_sub_cache_file=$cache_file ;;
-  *)  # Was relative path.
-    ac_sub_cache_file="$ac_popdir/$cache_file" ;;
-  esac
-
-  ifelse($3, [], [apr_configure_args=$ac_configure_args],[
-  apr_configure_args=
-  apr_sep=
-  for apr_configure_arg in $ac_configure_args
-  do
-    case "$apr_configure_arg" in
-      $3)
-        continue ;;
-    esac
-    apr_configure_args="$apr_configure_args$apr_sep'$apr_configure_arg'"
-    apr_sep=" "
-  done
-  ])
-
-  dnl autoconf doesn't add --silent to ac_configure_args; explicitly pass it
-  test "x$silent" = "xyes" && apr_configure_args="$apr_configure_args --silent"
-
-  dnl AC_CONFIG_SUBDIRS silences option warnings, emulate this for 2.62
-  apr_configure_args="--disable-option-checking $apr_configure_args" 
-
-  dnl The eval makes quoting arguments work - specifically the second argument
-  dnl where the quoting mechanisms used is "" rather than [].
-  dnl
-  dnl We need to execute another shell because some autoconf/shell combinations
-  dnl will choke after doing repeated APR_SUBDIR_CONFIG()s.  (Namely Solaris
-  dnl and autoconf-2.54+)
-  if eval $SHELL $ac_abs_srcdir/configure $apr_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_abs_srcdir $2
-  then :
-    echo "$1 configured properly"
-  else
-    echo "configure failed for $1"
-    exit 1
-  fi
-
-  cd $ac_popdir
-
-  # grab any updates from the sub-package
-  AC_CACHE_LOAD
-])dnl
-
-dnl
-dnl APR_SAVE_THE_ENVIRONMENT(variable_name)
-dnl
-dnl Stores the variable (usually a Makefile macro) for later restoration
-dnl
-AC_DEFUN([APR_SAVE_THE_ENVIRONMENT], [
-  apr_ste_save_$1="$$1"
-])dnl
-
-dnl
-dnl APR_RESTORE_THE_ENVIRONMENT(variable_name, prefix_)
-dnl
-dnl Uses the previously saved variable content to figure out what configure
-dnl has added to the variable, moving the new bits to prefix_variable_name
-dnl and restoring the original variable contents.  This makes it possible
-dnl for a user to override configure when it does something stupid.
-dnl
-AC_DEFUN([APR_RESTORE_THE_ENVIRONMENT], [
-dnl Check whether $apr_ste_save_$1 is empty or
-dnl only whitespace. The verbatim "X" is token number 1,
-dnl the following whitespace will be ignored.
-set X $apr_ste_save_$1
-if test ${#} -eq 1; then
-  $2$1="$$1"
-  $1=
-else
-  if test "x$apr_ste_save_$1" = "x$$1"; then
-    $2$1=
-  else
-    $2$1=`echo "$$1" | sed -e "s%${apr_ste_save_$1}%%"`
-    $1="$apr_ste_save_$1"
-  fi
-fi
-if test "x$silent" != "xyes"; then
-  echo "  restoring $1 to \"$$1\""
-  echo "  setting $2$1 to \"$$2$1\""
-fi
-AC_SUBST($2$1)
-])dnl
-
-dnl
-dnl APR_SETIFNULL(variable, value)
-dnl
-dnl  Set variable iff it's currently null
-dnl
-AC_DEFUN([APR_SETIFNULL], [
-  if test -z "$$1"; then
-    test "x$silent" != "xyes" && echo "  setting $1 to \"$2\""
-    $1="$2"
-  fi
-])dnl
-
-dnl
-dnl APR_SETVAR(variable, value)
-dnl
-dnl  Set variable no matter what
-dnl
-AC_DEFUN([APR_SETVAR], [
-  test "x$silent" != "xyes" && echo "  forcing $1 to \"$2\""
-  $1="$2"
-])dnl
-
-dnl
-dnl APR_ADDTO(variable, value)
-dnl
-dnl  Add value to variable
-dnl
-AC_DEFUN([APR_ADDTO], [
-  if test "x$$1" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting $1 to \"$2\""
-    $1="$2"
-  else
-    apr_addto_bugger="$2"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $$1; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to $1"
-        $1="$$1 $i"
-      fi
-    done
-  fi
-])dnl
-
-dnl
-dnl APR_REMOVEFROM(variable, value)
-dnl
-dnl Remove a value from a variable
-dnl
-AC_DEFUN([APR_REMOVEFROM], [
-  if test "x$$1" = "x$2"; then
-    test "x$silent" != "xyes" && echo "  nulling $1"
-    $1=""
-  else
-    apr_new_bugger=""
-    apr_removed=0
-    for i in $$1; do
-      if test "x$i" != "x$2"; then
-        apr_new_bugger="$apr_new_bugger $i"
-      else
-        apr_removed=1
-      fi
-    done
-    if test $apr_removed = "1"; then
-      test "x$silent" != "xyes" && echo "  removed \"$2\" from $1"
-      $1=$apr_new_bugger
-    fi
-  fi
-]) dnl
-
-dnl
-dnl APR_CHECK_DEFINE_FILES( symbol, header_file [header_file ...] )
-dnl
-AC_DEFUN([APR_CHECK_DEFINE_FILES], [
-  AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[
-    ac_cv_define_$1=no
-    for curhdr in $2
-    do
-      AC_EGREP_CPP(YES_IS_DEFINED, [
-#include <$curhdr>
-#ifdef $1
-YES_IS_DEFINED
-#endif
-      ], ac_cv_define_$1=yes)
-    done
-  ])
-  if test "$ac_cv_define_$1" = "yes"; then
-    AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined])
-  fi
-])
-
-
-dnl
-dnl APR_CHECK_DEFINE(symbol, header_file)
-dnl
-AC_DEFUN([APR_CHECK_DEFINE], [
-  AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[
-    AC_EGREP_CPP(YES_IS_DEFINED, [
-#include <$2>
-#ifdef $1
-YES_IS_DEFINED
-#endif
-    ], ac_cv_define_$1=yes, ac_cv_define_$1=no)
-  ])
-  if test "$ac_cv_define_$1" = "yes"; then
-    AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined in $2])
-  fi
-])
-
-dnl
-dnl APR_CHECK_APR_DEFINE( symbol )
-dnl
-AC_DEFUN([APR_CHECK_APR_DEFINE], [
-apr_old_cppflags=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $INCLUDES"
-AC_EGREP_CPP(YES_IS_DEFINED, [
-#include <apr.h>
-#if $1
-YES_IS_DEFINED
-#endif
-], ac_cv_define_$1=yes, ac_cv_define_$1=no)
-CPPFLAGS=$apr_old_cppflags
-])
-
-dnl APR_CHECK_FILE(filename); set ac_cv_file_filename to
-dnl "yes" if 'filename' is readable, else "no".
-dnl @deprecated! - use AC_CHECK_FILE instead
-AC_DEFUN([APR_CHECK_FILE], [
-dnl Pick a safe variable name
-define([apr_cvname], ac_cv_file_[]translit([$1], [./+-], [__p_]))
-AC_CACHE_CHECK([for $1], [apr_cvname],
-[if test -r $1; then
-   apr_cvname=yes
- else
-   apr_cvname=no
- fi])
-])
-
-define(APR_IFALLYES,[dnl
-ac_rc=yes
-for ac_spec in $1; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    $2
-else
-    :
-    $3
-fi
-])
-
-
-define(APR_BEGIN_DECISION,[dnl
-ac_decision_item='$1'
-ac_decision_msg='FAILED'
-ac_decision=''
-])
-
-
-AC_DEFUN([APR_DECIDE],[dnl
-dnl Define the flag (or not) in apr_private.h via autoheader
-AH_TEMPLATE($1, [Define if $2 will be used])
-ac_decision='$1'
-ac_decision_msg='$2'
-ac_decision_$1=yes
-ac_decision_$1_msg='$2'
-])
-
-
-define(APR_DECISION_OVERRIDE,[dnl
-    ac_decision=''
-    for ac_item in $1; do
-         eval "ac_decision_this=\$ac_decision_${ac_item}"
-         if test ".$ac_decision_this" = .yes; then
-             ac_decision=$ac_item
-             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
-         fi
-    done
-])
-
-
-define(APR_DECISION_FORCE,[dnl
-ac_decision="$1"
-eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\""
-])
-
-
-define(APR_END_DECISION,[dnl
-if test ".$ac_decision" = .; then
-    echo "[$]0:Error: decision on $ac_decision_item failed" 1>&2
-    exit 1
-else
-    if test ".$ac_decision_msg" = .; then
-        ac_decision_msg="$ac_decision"
-    fi
-    AC_DEFINE_UNQUOTED(${ac_decision_item})
-    AC_MSG_RESULT([decision on $ac_decision_item... $ac_decision_msg])
-fi
-])
-
-
-dnl
-dnl APR_CHECK_SIZEOF_EXTENDED(INCLUDES, TYPE [, CROSS_SIZE])
-dnl
-dnl A variant of AC_CHECK_SIZEOF which allows the checking of
-dnl sizes of non-builtin types
-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
-dnl The cache variable name.
-define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$2, [ *], [_p]))dnl
-changequote([, ])dnl
-AC_MSG_CHECKING(size of $2)
-AC_CACHE_VAL(AC_CV_NAME,
-[AC_TRY_RUN([#include <stdio.h>
-$1
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof($2));
-  exit(0);
-}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$3],,,
-AC_CV_NAME=$3))])dnl
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The size of ]$2)
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-])
-
-
-dnl
-dnl APR_TRY_COMPILE_NO_WARNING(INCLUDES, FUNCTION-BODY,
-dnl             [ACTIONS-IF-NO-WARNINGS], [ACTIONS-IF-WARNINGS])
-dnl
-dnl Tries a compile test with warnings activated so that the result
-dnl is false if the code doesn't compile cleanly.  For compilers
-dnl where it is not known how to activate a "fail-on-error" mode,
-dnl it is undefined which of the sets of actions will be run.
-dnl
-AC_DEFUN([APR_TRY_COMPILE_NO_WARNING],
-[apr_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $CFLAGS_WARN"
- if test "$ac_cv_prog_gcc" = "yes"; then 
-   CFLAGS="$CFLAGS -Werror"
- fi
- AC_COMPILE_IFELSE(
-  [AC_LANG_SOURCE(
-   [#include "confdefs.h"
-   ]
-   [[$1]]
-   [int main(int argc, const char *const *argv) {]
-   [[$2]]
-   [   return 0; }]
-  )],
-  [$3], [$4])
- CFLAGS=$apr_save_CFLAGS
-])
-
-dnl
-dnl APR_CHECK_STRERROR_R_RC
-dnl
-dnl  Decide which style of retcode is used by this system's 
-dnl  strerror_r().  It either returns int (0 for success, -1
-dnl  for failure), or it returns a pointer to the error 
-dnl  string.
-dnl
-dnl
-AC_DEFUN([APR_CHECK_STRERROR_R_RC], [
-AC_MSG_CHECKING(for type of return code from strerror_r)
-AC_TRY_RUN([
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-main()
-{
-  char buf[1024];
-  if (strerror_r(ERANGE, buf, sizeof buf) < 1) {
-    exit(0);
-  }
-  else {
-    exit(1);
-  }
-}], [
-    ac_cv_strerror_r_rc_int=yes ], [
-    ac_cv_strerror_r_rc_int=no ], [
-    ac_cv_strerror_r_rc_int=no ] )
-if test "x$ac_cv_strerror_r_rc_int" = xyes; then
-  AC_DEFINE(STRERROR_R_RC_INT, 1, [Define if strerror returns int])
-  msg="int"
-else
-  msg="pointer"
-fi
-AC_MSG_RESULT([$msg])
-] )
-
-dnl
-dnl APR_CHECK_DIRENT_INODE
-dnl
-dnl  Decide if d_fileno or d_ino are available in the dirent
-dnl  structure on this platform.  Single UNIX Spec says d_ino,
-dnl  BSD uses d_fileno.  Undef to find the real beast.
-dnl
-AC_DEFUN([APR_CHECK_DIRENT_INODE], [
-AC_CACHE_CHECK([for inode member of struct dirent], apr_cv_dirent_inode, [
-apr_cv_dirent_inode=no
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <dirent.h>
-],[
-#ifdef d_ino
-#undef d_ino
-#endif
-struct dirent de; de.d_fileno;
-], apr_cv_dirent_inode=d_fileno)
-if test "$apr_cv_dirent_inode" = "no"; then
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <dirent.h>
-],[
-#ifdef d_fileno
-#undef d_fileno
-#endif
-struct dirent de; de.d_ino;
-], apr_cv_dirent_inode=d_ino)
-fi
-])
-if test "$apr_cv_dirent_inode" != "no"; then
-  AC_DEFINE_UNQUOTED(DIRENT_INODE, $apr_cv_dirent_inode, 
-    [Define if struct dirent has an inode member])
-fi
-])
-
-dnl
-dnl APR_CHECK_DIRENT_TYPE
-dnl
-dnl  Decide if d_type is available in the dirent structure 
-dnl  on this platform.  Not part of the Single UNIX Spec.
-dnl  Note that this is worthless without DT_xxx macros, so
-dnl  look for one while we are at it.
-dnl
-AC_DEFUN([APR_CHECK_DIRENT_TYPE], [
-AC_CACHE_CHECK([for file type member of struct dirent], apr_cv_dirent_type,[
-apr_cv_dirent_type=no
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <dirent.h>
-],[
-struct dirent de; de.d_type = DT_REG;
-], apr_cv_dirent_type=d_type)
-])
-if test "$apr_cv_dirent_type" != "no"; then
-  AC_DEFINE_UNQUOTED(DIRENT_TYPE, $apr_cv_dirent_type, 
-    [Define if struct dirent has a d_type member]) 
-fi
-])
-
-dnl the following is a newline, a space, a tab, and a backslash (the
-dnl backslash is used by the shell to skip newlines, but m4 sees it;
-dnl treat it like whitespace).
-dnl WARNING: don't reindent these lines, or the space/tab will be lost!
-define([apr_whitespace],[
- 	\])
-
-dnl
-dnl APR_COMMA_ARGS(ARG1 ...)
-dnl  convert the whitespace-separated arguments into comman-separated
-dnl  arguments.
-dnl
-dnl APR_FOREACH(CODE-BLOCK, ARG1, ARG2, ...)
-dnl  subsitute CODE-BLOCK for each ARG[i]. "eachval" will be set to ARG[i]
-dnl  within each iteration.
-dnl
-changequote({,})
-define({APR_COMMA_ARGS},{patsubst([$}{1],[[}apr_whitespace{]+],[,])})
-define({APR_FOREACH},
-  {ifelse($}{2,,,
-          [define([eachval],
-                  $}{2)$}{1[]APR_FOREACH([$}{1],
-                                         builtin([shift],
-                                                 builtin([shift], $}{@)))])})
-changequote([,])
-
-dnl APR_FLAG_HEADERS(HEADER-FILE ... [, FLAG-TO-SET ] [, "yes" ])
-dnl  we set FLAG-TO-SET to 1 if we find HEADER-FILE, otherwise we set to 0
-dnl  if FLAG-TO-SET is null, we automagically determine it's name
-dnl  by changing all "/" to "_" in the HEADER-FILE and dropping
-dnl  all "." and "-" chars. If the 3rd parameter is "yes" then instead of
-dnl  setting to 1 or 0, we set FLAG-TO-SET to yes or no.
-dnl  
-AC_DEFUN([APR_FLAG_HEADERS], [
-AC_CHECK_HEADERS($1)
-for aprt_i in $1
-do
-    ac_safe=`echo "$aprt_i" | sed 'y%./+-%__p_%'`
-    aprt_2=`echo "$aprt_i" | sed -e 's%/%_%g' -e 's/\.//g' -e 's/-//g'`
-    if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-       eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,yes,1)"
-    else
-       eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,no,0)"
-    fi
-done
-])
-
-dnl APR_FLAG_FUNCS(FUNC ... [, FLAG-TO-SET] [, "yes" ])
-dnl  if FLAG-TO-SET is null, we automagically determine it's name
-dnl  prepending "have_" to the function name in FUNC, otherwise
-dnl  we use what's provided as FLAG-TO-SET. If the 3rd parameter
-dnl  is "yes" then instead of setting to 1 or 0, we set FLAG-TO-SET
-dnl  to yes or no.
-dnl
-AC_DEFUN([APR_FLAG_FUNCS], [
-AC_CHECK_FUNCS($1)
-for aprt_j in $1
-do
-    aprt_3="have_$aprt_j"
-    if eval "test \"`echo '$ac_cv_func_'$aprt_j`\" = yes"; then
-       eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,yes,1)"
-    else
-       eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,no,0)"
-    fi
-done
-])
-
-dnl Iteratively interpolate the contents of the second argument
-dnl until interpolation offers no new result. Then assign the
-dnl final result to $1.
-dnl
-dnl Example:
-dnl
-dnl foo=1
-dnl bar='${foo}/2'
-dnl baz='${bar}/3'
-dnl APR_EXPAND_VAR(fraz, $baz)
-dnl   $fraz is now "1/2/3"
-dnl 
-AC_DEFUN([APR_EXPAND_VAR], [
-ap_last=
-ap_cur="$2"
-while test "x${ap_cur}" != "x${ap_last}";
-do
-  ap_last="${ap_cur}"
-  ap_cur=`eval "echo ${ap_cur}"`
-done
-$1="${ap_cur}"
-])
-
-dnl
-dnl Removes the value of $3 from the string in $2, strips of any leading
-dnl slashes, and returns the value in $1.
-dnl
-dnl Example:
-dnl orig_path="${prefix}/bar"
-dnl APR_PATH_RELATIVE(final_path, $orig_path, $prefix)
-dnl    $final_path now contains "bar"
-AC_DEFUN([APR_PATH_RELATIVE], [
-ap_stripped=`echo $2 | sed -e "s#^$3##"`
-# check if the stripping was successful
-if test "x$2" != "x${ap_stripped}"; then
-    # it was, so strip of any leading slashes
-    $1="`echo ${ap_stripped} | sed -e 's#^/*##'`"
-else
-    # it wasn't so return the original
-    $1="$2"
-fi
-])
-
-dnl APR_HELP_STRING(LHS, RHS)
-dnl Autoconf 2.50 can not handle substr correctly.  It does have 
-dnl AC_HELP_STRING, so let's try to call it if we can.
-dnl Note: this define must be on one line so that it can be properly returned
-dnl as the help string.  When using this macro with a multi-line RHS, ensure
-dnl that you surround the macro invocation with []s
-AC_DEFUN([APR_HELP_STRING], [ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING([$1],[$2]),[  ][$1] substr([                       ],len($1))[$2])])
-
-dnl
-dnl APR_LAYOUT(configlayout, layoutname [, extravars])
-dnl
-AC_DEFUN([APR_LAYOUT], [
-  if test ! -f $srcdir/config.layout; then
-    echo "** Error: Layout file $srcdir/config.layout not found"
-    echo "** Error: Cannot use undefined layout '$LAYOUT'"
-    exit 1
-  fi
-  # Catch layout names including a slash which will otherwise
-  # confuse the heck out of the sed script.
-  case $2 in
-  */*) 
-    echo "** Error: $2 is not a valid layout name"
-    exit 1 ;;
-  esac
-  pldconf=./config.pld
-  changequote({,})
-  sed -e "1s/[ 	]*<[lL]ayout[ 	]*$2[ 	]*>[ 	]*//;1t" \
-      -e "1,/[ 	]*<[lL]ayout[ 	]*$2[ 	]*>[ 	]*/d" \
-      -e '/[ 	]*<\/Layout>[ 	]*/,$d' \
-      -e "s/^[ 	]*//g" \
-      -e "s/:[ 	]*/=\'/g" \
-      -e "s/[ 	]*$/'/g" \
-      $1 > $pldconf
-  layout_name=$2
-  if test ! -s $pldconf; then
-    echo "** Error: unable to find layout $layout_name"
-    exit 1
-  fi
-  . $pldconf
-  rm $pldconf
-  for var in prefix exec_prefix bindir sbindir libexecdir mandir \
-             sysconfdir datadir includedir localstatedir runtimedir \
-             logfiledir libdir installbuilddir libsuffix $3; do
-    eval "val=\"\$$var\""
-    case $val in
-      *+)
-        val=`echo $val | sed -e 's;\+$;;'`
-        eval "$var=\"\$val\""
-        autosuffix=yes
-        ;;
-      *)
-        autosuffix=no
-        ;;
-    esac
-    val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
-    val=`echo $val | sed -e 's:[\$]\([a-z_]*\):${\1}:g'`
-    if test "$autosuffix" = "yes"; then
-      if echo $val | grep apache >/dev/null; then
-        addtarget=no
-      else
-        addtarget=yes
-      fi
-      if test "$addtarget" = "yes"; then
-        val="$val/apache2"
-      fi
-    fi
-    eval "$var='$val'"
-  done
-  changequote([,])
-])dnl
-
-dnl
-dnl APR_ENABLE_LAYOUT(default layout name [, extra vars])
-dnl
-AC_DEFUN([APR_ENABLE_LAYOUT], [
-AC_ARG_ENABLE(layout,
-[  --enable-layout=LAYOUT],[
-  LAYOUT=$enableval
-])
-
-if test -z "$LAYOUT"; then
-  LAYOUT="$1"
-fi
-APR_LAYOUT($srcdir/config.layout, $LAYOUT, $2)
-
-AC_MSG_CHECKING(for chosen layout)
-AC_MSG_RESULT($layout_name)
-])
-
-
-dnl
-dnl APR_PARSE_ARGUMENTS
-dnl a reimplementation of autoconf's argument parser,
-dnl used here to allow us to co-exist layouts and argument based
-dnl set ups.
-AC_DEFUN([APR_PARSE_ARGUMENTS], [
-ac_prev=
-# Retrieve the command-line arguments.  The eval is needed because
-# the arguments are quoted to preserve accuracy.
-eval "set x $ac_configure_args"
-shift
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  ac_optarg=`expr "x$ac_option" : 'x[[^=]]*=\(.*\)'`
-
-  case $ac_option in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;;
-    *)  AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);;
-  esac
-done
-
-])dnl
-
-dnl
-dnl APR_CHECK_DEPEND
-dnl
-dnl Determine what program we can use to generate .deps-style dependencies
-dnl
-AC_DEFUN([APR_CHECK_DEPEND], [
-dnl Try to determine what depend program we can use
-dnl All GCC-variants should have -MM.
-dnl If not, then we can check on those, too.
-if test "$GCC" = "yes"; then
-  MKDEP='$(CC) -MM'
-else
-  rm -f conftest.c
-dnl <sys/types.h> should be available everywhere!
-  cat > conftest.c <<EOF
-#include <sys/types.h>
-  int main() { return 0; }
-EOF
-  MKDEP="true"
-  for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do
-    AC_MSG_CHECKING([if $i can create proper make dependencies])
-    if $i conftest.c 2>/dev/null | grep 'conftest.o: conftest.c' >/dev/null; then
-      MKDEP=$i
-      AC_MSG_RESULT(yes)
-      break;
-    fi
-    AC_MSG_RESULT(no)
-  done
-  rm -f conftest.c
-fi
-
-AC_SUBST(MKDEP)
-])
-
-dnl
-dnl APR_CHECK_TYPES_COMPATIBLE(TYPE-1, TYPE-2, [ACTION-IF-TRUE])
-dnl
-dnl Try to determine whether two types are the same. Only works
-dnl for gcc and icc.
-dnl
-AC_DEFUN([APR_CHECK_TYPES_COMPATIBLE], [
-define([apr_cvname], apr_cv_typematch_[]translit([$1], [ ], [_])_[]translit([$2], [ ], [_]))
-AC_CACHE_CHECK([whether $1 and $2 are the same], apr_cvname, [
-AC_TRY_COMPILE(AC_INCLUDES_DEFAULT, [
-    int foo[0 - !__builtin_types_compatible_p($1, $2)];
-], [apr_cvname=yes
-$3], [apr_cvname=no])])
-])

Copied: vendor/apache/apr/1.5.2/build/apr_common.m4 (from rev 9273, vendor/apache/apr/dist/build/apr_common.m4)
===================================================================
--- vendor/apache/apr/1.5.2/build/apr_common.m4	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/apr_common.m4	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,990 @@
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Licensed to the Apache Software Foundation (ASF) under one or more
+dnl contributor license agreements.  See the NOTICE file distributed with
+dnl this work for additional information regarding copyright ownership.
+dnl The ASF licenses this file to You under the Apache License, Version 2.0
+dnl (the "License"); you may not use this file except in compliance with
+dnl the License.  You may obtain a copy of the License at
+dnl
+dnl     http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
+dnl
+dnl apr_common.m4: APR's general-purpose autoconf macros
+dnl
+
+dnl
+dnl APR_CONFIG_NICE(filename)
+dnl
+dnl Saves a snapshot of the configure command-line for later reuse
+dnl
+AC_DEFUN([APR_CONFIG_NICE], [
+  rm -f $1
+  cat >$1<<EOF
+#! /bin/sh
+#
+# Created by configure
+
+EOF
+  if test -n "$CC"; then
+    echo "CC=\"$CC\"; export CC" >> $1
+  fi
+  if test -n "$CFLAGS"; then
+    echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> $1
+  fi
+  if test -n "$CPPFLAGS"; then
+    echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> $1
+  fi
+  if test -n "$LDFLAGS"; then
+    echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> $1
+  fi
+  if test -n "$LTFLAGS"; then
+    echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> $1
+  fi
+  if test -n "$LIBS"; then
+    echo "LIBS=\"$LIBS\"; export LIBS" >> $1
+  fi
+  if test -n "$INCLUDES"; then
+    echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> $1
+  fi
+  if test -n "$NOTEST_CFLAGS"; then
+    echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> $1
+  fi
+  if test -n "$NOTEST_CPPFLAGS"; then
+    echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> $1
+  fi
+  if test -n "$NOTEST_LDFLAGS"; then
+    echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> $1
+  fi
+  if test -n "$NOTEST_LIBS"; then
+    echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> $1
+  fi
+
+  # Retrieve command-line arguments.
+  eval "set x $[0] $ac_configure_args"
+  shift
+
+  for arg
+  do
+    APR_EXPAND_VAR(arg, $arg)
+    echo "\"[$]arg\" \\" >> $1
+  done
+  echo '"[$]@"' >> $1
+  chmod +x $1
+])dnl
+
+dnl APR_MKDIR_P_CHECK(fallback-mkdir-p)
+dnl checks whether mkdir -p works
+AC_DEFUN([APR_MKDIR_P_CHECK], [
+  AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[
+    test -d conftestdir && rm -rf conftestdir
+    mkdir -p conftestdir/somedir >/dev/null 2>&1
+    if test -d conftestdir/somedir; then
+      ac_cv_mkdir_p=yes
+    else
+      ac_cv_mkdir_p=no
+    fi
+    rm -rf conftestdir
+  ])
+  if test "$ac_cv_mkdir_p" = "yes"; then
+      mkdir_p="mkdir -p"
+  else
+      mkdir_p="$1"
+  fi
+])
+
+dnl
+dnl APR_SUBDIR_CONFIG(dir [, sub-package-cmdline-args, args-to-drop])
+dnl
+dnl dir: directory to find configure in
+dnl sub-package-cmdline-args: arguments to add to the invocation (optional)
+dnl args-to-drop: arguments to drop from the invocation (optional)
+dnl
+dnl Note: This macro relies on ac_configure_args being set properly.
+dnl
+dnl The args-to-drop argument is shoved into a case statement, so
+dnl multiple arguments can be separated with a |.
+dnl
+dnl Note: Older versions of autoconf do not single-quote args, while 2.54+
+dnl places quotes around every argument.  So, if you want to drop the
+dnl argument called --enable-layout, you must pass the third argument as:
+dnl [--enable-layout=*|\'--enable-layout=*]
+dnl
+dnl Trying to optimize this is left as an exercise to the reader who wants
+dnl to put up with more autoconf craziness.  I give up.
+dnl
+AC_DEFUN([APR_SUBDIR_CONFIG], [
+  # save our work to this point; this allows the sub-package to use it
+  AC_CACHE_SAVE
+
+  echo "configuring package in $1 now"
+  ac_popdir=`pwd`
+  apr_config_subdirs="$1"
+  test -d $1 || $mkdir_p $1
+  ac_abs_srcdir=`(cd $srcdir/$1 && pwd)`
+  cd $1
+
+changequote(, )dnl
+      # A "../" for each directory in /$config_subdirs.
+      ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
+changequote([, ])dnl
+
+  # Make the cache file pathname absolute for the subdirs
+  # required to correctly handle subdirs that might actually
+  # be symlinks
+  case "$cache_file" in
+  /*) # already absolute
+    ac_sub_cache_file=$cache_file ;;
+  *)  # Was relative path.
+    ac_sub_cache_file="$ac_popdir/$cache_file" ;;
+  esac
+
+  ifelse($3, [], [apr_configure_args=$ac_configure_args],[
+  apr_configure_args=
+  apr_sep=
+  for apr_configure_arg in $ac_configure_args
+  do
+    case "$apr_configure_arg" in
+      $3)
+        continue ;;
+    esac
+    apr_configure_args="$apr_configure_args$apr_sep'$apr_configure_arg'"
+    apr_sep=" "
+  done
+  ])
+
+  dnl autoconf doesn't add --silent to ac_configure_args; explicitly pass it
+  test "x$silent" = "xyes" && apr_configure_args="$apr_configure_args --silent"
+
+  dnl AC_CONFIG_SUBDIRS silences option warnings, emulate this for 2.62
+  apr_configure_args="--disable-option-checking $apr_configure_args" 
+
+  dnl The eval makes quoting arguments work - specifically the second argument
+  dnl where the quoting mechanisms used is "" rather than [].
+  dnl
+  dnl We need to execute another shell because some autoconf/shell combinations
+  dnl will choke after doing repeated APR_SUBDIR_CONFIG()s.  (Namely Solaris
+  dnl and autoconf-2.54+)
+  if eval $SHELL $ac_abs_srcdir/configure $apr_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_abs_srcdir $2
+  then :
+    echo "$1 configured properly"
+  else
+    echo "configure failed for $1"
+    exit 1
+  fi
+
+  cd $ac_popdir
+
+  # grab any updates from the sub-package
+  AC_CACHE_LOAD
+])dnl
+
+dnl
+dnl APR_SAVE_THE_ENVIRONMENT(variable_name)
+dnl
+dnl Stores the variable (usually a Makefile macro) for later restoration
+dnl
+AC_DEFUN([APR_SAVE_THE_ENVIRONMENT], [
+  apr_ste_save_$1="$$1"
+])dnl
+
+dnl
+dnl APR_RESTORE_THE_ENVIRONMENT(variable_name, prefix_)
+dnl
+dnl Uses the previously saved variable content to figure out what configure
+dnl has added to the variable, moving the new bits to prefix_variable_name
+dnl and restoring the original variable contents.  This makes it possible
+dnl for a user to override configure when it does something stupid.
+dnl
+AC_DEFUN([APR_RESTORE_THE_ENVIRONMENT], [
+dnl Check whether $apr_ste_save_$1 is empty or
+dnl only whitespace. The verbatim "X" is token number 1,
+dnl the following whitespace will be ignored.
+set X $apr_ste_save_$1
+if test ${#} -eq 1; then
+  $2$1="$$1"
+  $1=
+else
+  if test "x$apr_ste_save_$1" = "x$$1"; then
+    $2$1=
+  else
+    $2$1=`echo "$$1" | sed -e "s%${apr_ste_save_$1}%%"`
+    $1="$apr_ste_save_$1"
+  fi
+fi
+if test "x$silent" != "xyes"; then
+  echo "  restoring $1 to \"$$1\""
+  echo "  setting $2$1 to \"$$2$1\""
+fi
+AC_SUBST($2$1)
+])dnl
+
+dnl
+dnl APR_SETIFNULL(variable, value)
+dnl
+dnl  Set variable iff it's currently null
+dnl
+AC_DEFUN([APR_SETIFNULL], [
+  if test -z "$$1"; then
+    test "x$silent" != "xyes" && echo "  setting $1 to \"$2\""
+    $1="$2"
+  fi
+])dnl
+
+dnl
+dnl APR_SETVAR(variable, value)
+dnl
+dnl  Set variable no matter what
+dnl
+AC_DEFUN([APR_SETVAR], [
+  test "x$silent" != "xyes" && echo "  forcing $1 to \"$2\""
+  $1="$2"
+])dnl
+
+dnl
+dnl APR_ADDTO(variable, value)
+dnl
+dnl  Add value to variable
+dnl
+AC_DEFUN([APR_ADDTO], [
+  if test "x$$1" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting $1 to \"$2\""
+    $1="$2"
+  else
+    apr_addto_bugger="$2"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $$1; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to $1"
+        $1="$$1 $i"
+      fi
+    done
+  fi
+])dnl
+
+dnl
+dnl APR_REMOVEFROM(variable, value)
+dnl
+dnl Remove a value from a variable
+dnl
+AC_DEFUN([APR_REMOVEFROM], [
+  if test "x$$1" = "x$2"; then
+    test "x$silent" != "xyes" && echo "  nulling $1"
+    $1=""
+  else
+    apr_new_bugger=""
+    apr_removed=0
+    for i in $$1; do
+      if test "x$i" != "x$2"; then
+        apr_new_bugger="$apr_new_bugger $i"
+      else
+        apr_removed=1
+      fi
+    done
+    if test $apr_removed = "1"; then
+      test "x$silent" != "xyes" && echo "  removed \"$2\" from $1"
+      $1=$apr_new_bugger
+    fi
+  fi
+]) dnl
+
+dnl
+dnl APR_CHECK_DEFINE_FILES( symbol, header_file [header_file ...] )
+dnl
+AC_DEFUN([APR_CHECK_DEFINE_FILES], [
+  AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[
+    ac_cv_define_$1=no
+    for curhdr in $2
+    do
+      AC_EGREP_CPP(YES_IS_DEFINED, [
+#include <$curhdr>
+#ifdef $1
+YES_IS_DEFINED
+#endif
+      ], ac_cv_define_$1=yes)
+    done
+  ])
+  if test "$ac_cv_define_$1" = "yes"; then
+    AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined])
+  fi
+])
+
+
+dnl
+dnl APR_CHECK_DEFINE(symbol, header_file)
+dnl
+AC_DEFUN([APR_CHECK_DEFINE], [
+  AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[
+    AC_EGREP_CPP(YES_IS_DEFINED, [
+#include <$2>
+#ifdef $1
+YES_IS_DEFINED
+#endif
+    ], ac_cv_define_$1=yes, ac_cv_define_$1=no)
+  ])
+  if test "$ac_cv_define_$1" = "yes"; then
+    AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined in $2])
+  fi
+])
+
+dnl
+dnl APR_CHECK_APR_DEFINE( symbol )
+dnl
+AC_DEFUN([APR_CHECK_APR_DEFINE], [
+apr_old_cppflags=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $INCLUDES"
+AC_EGREP_CPP(YES_IS_DEFINED, [
+#include <apr.h>
+#if $1
+YES_IS_DEFINED
+#endif
+], ac_cv_define_$1=yes, ac_cv_define_$1=no)
+CPPFLAGS=$apr_old_cppflags
+])
+
+dnl APR_CHECK_FILE(filename); set ac_cv_file_filename to
+dnl "yes" if 'filename' is readable, else "no".
+dnl @deprecated! - use AC_CHECK_FILE instead
+AC_DEFUN([APR_CHECK_FILE], [
+dnl Pick a safe variable name
+define([apr_cvname], ac_cv_file_[]translit([$1], [./+-], [__p_]))
+AC_CACHE_CHECK([for $1], [apr_cvname],
+[if test -r $1; then
+   apr_cvname=yes
+ else
+   apr_cvname=no
+ fi])
+])
+
+define(APR_IFALLYES,[dnl
+ac_rc=yes
+for ac_spec in $1; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    $2
+else
+    :
+    $3
+fi
+])
+
+
+define(APR_BEGIN_DECISION,[dnl
+ac_decision_item='$1'
+ac_decision_msg='FAILED'
+ac_decision=''
+])
+
+
+AC_DEFUN([APR_DECIDE],[dnl
+dnl Define the flag (or not) in apr_private.h via autoheader
+AH_TEMPLATE($1, [Define if $2 will be used])
+ac_decision='$1'
+ac_decision_msg='$2'
+ac_decision_$1=yes
+ac_decision_$1_msg='$2'
+])
+
+
+define(APR_DECISION_OVERRIDE,[dnl
+    ac_decision=''
+    for ac_item in $1; do
+         eval "ac_decision_this=\$ac_decision_${ac_item}"
+         if test ".$ac_decision_this" = .yes; then
+             ac_decision=$ac_item
+             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
+         fi
+    done
+])
+
+
+define(APR_DECISION_FORCE,[dnl
+ac_decision="$1"
+eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\""
+])
+
+
+define(APR_END_DECISION,[dnl
+if test ".$ac_decision" = .; then
+    echo "[$]0:Error: decision on $ac_decision_item failed" 1>&2
+    exit 1
+else
+    if test ".$ac_decision_msg" = .; then
+        ac_decision_msg="$ac_decision"
+    fi
+    AC_DEFINE_UNQUOTED(${ac_decision_item})
+    AC_MSG_RESULT([decision on $ac_decision_item... $ac_decision_msg])
+fi
+])
+
+
+dnl
+dnl APR_CHECK_SIZEOF_EXTENDED(INCLUDES, TYPE [, CROSS_SIZE])
+dnl
+dnl A variant of AC_CHECK_SIZEOF which allows the checking of
+dnl sizes of non-builtin types
+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
+dnl The cache variable name.
+define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$2, [ *], [_p]))dnl
+changequote([, ])dnl
+AC_MSG_CHECKING(size of $2)
+AC_CACHE_VAL(AC_CV_NAME,
+[AC_TRY_RUN([#include <stdio.h>
+$1
+#ifdef WIN32
+#define binmode "b"
+#else
+#define binmode
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w" binmode);
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof($2));
+  exit(0);
+}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$3],,,
+AC_CV_NAME=$3))])dnl
+AC_MSG_RESULT($AC_CV_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The size of ]$2)
+undefine([AC_TYPE_NAME])dnl
+undefine([AC_CV_NAME])dnl
+])
+
+
+dnl
+dnl APR_TRY_COMPILE_NO_WARNING(INCLUDES, FUNCTION-BODY,
+dnl             [ACTIONS-IF-NO-WARNINGS], [ACTIONS-IF-WARNINGS])
+dnl
+dnl Tries a compile test with warnings activated so that the result
+dnl is false if the code doesn't compile cleanly.  For compilers
+dnl where it is not known how to activate a "fail-on-error" mode,
+dnl it is undefined which of the sets of actions will be run.
+dnl
+AC_DEFUN([APR_TRY_COMPILE_NO_WARNING],
+[apr_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $CFLAGS_WARN"
+ if test "$ac_cv_prog_gcc" = "yes"; then 
+   CFLAGS="$CFLAGS -Werror"
+ fi
+ AC_COMPILE_IFELSE(
+  [AC_LANG_SOURCE(
+   [#include "confdefs.h"
+   ]
+   [[$1]]
+   [int main(int argc, const char *const *argv) {]
+   [[$2]]
+   [   return 0; }]
+  )],
+  [$3], [$4])
+ CFLAGS=$apr_save_CFLAGS
+])
+
+dnl
+dnl APR_CHECK_STRERROR_R_RC
+dnl
+dnl  Decide which style of retcode is used by this system's 
+dnl  strerror_r().  It either returns int (0 for success, -1
+dnl  for failure), or it returns a pointer to the error 
+dnl  string.
+dnl
+dnl
+AC_DEFUN([APR_CHECK_STRERROR_R_RC], [
+AC_MSG_CHECKING(for type of return code from strerror_r)
+AC_TRY_RUN([
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+main()
+{
+  char buf[1024];
+  if (strerror_r(ERANGE, buf, sizeof buf) < 1) {
+    exit(0);
+  }
+  else {
+    exit(1);
+  }
+}], [
+    ac_cv_strerror_r_rc_int=yes ], [
+    ac_cv_strerror_r_rc_int=no ], [
+    ac_cv_strerror_r_rc_int=no ] )
+if test "x$ac_cv_strerror_r_rc_int" = xyes; then
+  AC_DEFINE(STRERROR_R_RC_INT, 1, [Define if strerror returns int])
+  msg="int"
+else
+  msg="pointer"
+fi
+AC_MSG_RESULT([$msg])
+] )
+
+dnl
+dnl APR_CHECK_DIRENT_INODE
+dnl
+dnl  Decide if d_fileno or d_ino are available in the dirent
+dnl  structure on this platform.  Single UNIX Spec says d_ino,
+dnl  BSD uses d_fileno.  Undef to find the real beast.
+dnl
+AC_DEFUN([APR_CHECK_DIRENT_INODE], [
+AC_CACHE_CHECK([for inode member of struct dirent], apr_cv_dirent_inode, [
+apr_cv_dirent_inode=no
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <dirent.h>
+],[
+#ifdef d_ino
+#undef d_ino
+#endif
+struct dirent de; de.d_fileno;
+], apr_cv_dirent_inode=d_fileno)
+if test "$apr_cv_dirent_inode" = "no"; then
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <dirent.h>
+],[
+#ifdef d_fileno
+#undef d_fileno
+#endif
+struct dirent de; de.d_ino;
+], apr_cv_dirent_inode=d_ino)
+fi
+])
+if test "$apr_cv_dirent_inode" != "no"; then
+  AC_DEFINE_UNQUOTED(DIRENT_INODE, $apr_cv_dirent_inode, 
+    [Define if struct dirent has an inode member])
+fi
+])
+
+dnl
+dnl APR_CHECK_DIRENT_TYPE
+dnl
+dnl  Decide if d_type is available in the dirent structure 
+dnl  on this platform.  Not part of the Single UNIX Spec.
+dnl  Note that this is worthless without DT_xxx macros, so
+dnl  look for one while we are at it.
+dnl
+AC_DEFUN([APR_CHECK_DIRENT_TYPE], [
+AC_CACHE_CHECK([for file type member of struct dirent], apr_cv_dirent_type,[
+apr_cv_dirent_type=no
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <dirent.h>
+],[
+struct dirent de; de.d_type = DT_REG;
+], apr_cv_dirent_type=d_type)
+])
+if test "$apr_cv_dirent_type" != "no"; then
+  AC_DEFINE_UNQUOTED(DIRENT_TYPE, $apr_cv_dirent_type, 
+    [Define if struct dirent has a d_type member]) 
+fi
+])
+
+dnl the following is a newline, a space, a tab, and a backslash (the
+dnl backslash is used by the shell to skip newlines, but m4 sees it;
+dnl treat it like whitespace).
+dnl WARNING: don't reindent these lines, or the space/tab will be lost!
+define([apr_whitespace],[
+ 	\])
+
+dnl
+dnl APR_COMMA_ARGS(ARG1 ...)
+dnl  convert the whitespace-separated arguments into comman-separated
+dnl  arguments.
+dnl
+dnl APR_FOREACH(CODE-BLOCK, ARG1, ARG2, ...)
+dnl  subsitute CODE-BLOCK for each ARG[i]. "eachval" will be set to ARG[i]
+dnl  within each iteration.
+dnl
+changequote({,})
+define({APR_COMMA_ARGS},{patsubst([$}{1],[[}apr_whitespace{]+],[,])})
+define({APR_FOREACH},
+  {ifelse($}{2,,,
+          [define([eachval],
+                  $}{2)$}{1[]APR_FOREACH([$}{1],
+                                         builtin([shift],
+                                                 builtin([shift], $}{@)))])})
+changequote([,])
+
+dnl APR_FLAG_HEADERS(HEADER-FILE ... [, FLAG-TO-SET ] [, "yes" ])
+dnl  we set FLAG-TO-SET to 1 if we find HEADER-FILE, otherwise we set to 0
+dnl  if FLAG-TO-SET is null, we automagically determine it's name
+dnl  by changing all "/" to "_" in the HEADER-FILE and dropping
+dnl  all "." and "-" chars. If the 3rd parameter is "yes" then instead of
+dnl  setting to 1 or 0, we set FLAG-TO-SET to yes or no.
+dnl  
+AC_DEFUN([APR_FLAG_HEADERS], [
+AC_CHECK_HEADERS($1)
+for aprt_i in $1
+do
+    ac_safe=`echo "$aprt_i" | sed 'y%./+-%__p_%'`
+    aprt_2=`echo "$aprt_i" | sed -e 's%/%_%g' -e 's/\.//g' -e 's/-//g'`
+    if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+       eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,yes,1)"
+    else
+       eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,no,0)"
+    fi
+done
+])
+
+dnl APR_FLAG_FUNCS(FUNC ... [, FLAG-TO-SET] [, "yes" ])
+dnl  if FLAG-TO-SET is null, we automagically determine it's name
+dnl  prepending "have_" to the function name in FUNC, otherwise
+dnl  we use what's provided as FLAG-TO-SET. If the 3rd parameter
+dnl  is "yes" then instead of setting to 1 or 0, we set FLAG-TO-SET
+dnl  to yes or no.
+dnl
+AC_DEFUN([APR_FLAG_FUNCS], [
+AC_CHECK_FUNCS($1)
+for aprt_j in $1
+do
+    aprt_3="have_$aprt_j"
+    if eval "test \"`echo '$ac_cv_func_'$aprt_j`\" = yes"; then
+       eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,yes,1)"
+    else
+       eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,no,0)"
+    fi
+done
+])
+
+dnl Iteratively interpolate the contents of the second argument
+dnl until interpolation offers no new result. Then assign the
+dnl final result to $1.
+dnl
+dnl Example:
+dnl
+dnl foo=1
+dnl bar='${foo}/2'
+dnl baz='${bar}/3'
+dnl APR_EXPAND_VAR(fraz, $baz)
+dnl   $fraz is now "1/2/3"
+dnl 
+AC_DEFUN([APR_EXPAND_VAR], [
+ap_last=
+ap_cur="$2"
+while test "x${ap_cur}" != "x${ap_last}";
+do
+  ap_last="${ap_cur}"
+  ap_cur=`eval "echo ${ap_cur}"`
+done
+$1="${ap_cur}"
+])
+
+dnl
+dnl Removes the value of $3 from the string in $2, strips of any leading
+dnl slashes, and returns the value in $1.
+dnl
+dnl Example:
+dnl orig_path="${prefix}/bar"
+dnl APR_PATH_RELATIVE(final_path, $orig_path, $prefix)
+dnl    $final_path now contains "bar"
+AC_DEFUN([APR_PATH_RELATIVE], [
+ap_stripped=`echo $2 | sed -e "s#^$3##"`
+# check if the stripping was successful
+if test "x$2" != "x${ap_stripped}"; then
+    # it was, so strip of any leading slashes
+    $1="`echo ${ap_stripped} | sed -e 's#^/*##'`"
+else
+    # it wasn't so return the original
+    $1="$2"
+fi
+])
+
+dnl APR_HELP_STRING(LHS, RHS)
+dnl Autoconf 2.50 can not handle substr correctly.  It does have 
+dnl AC_HELP_STRING, so let's try to call it if we can.
+dnl Note: this define must be on one line so that it can be properly returned
+dnl as the help string.  When using this macro with a multi-line RHS, ensure
+dnl that you surround the macro invocation with []s
+AC_DEFUN([APR_HELP_STRING], [ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING([$1],[$2]),[  ][$1] substr([                       ],len($1))[$2])])
+
+dnl
+dnl APR_LAYOUT(configlayout, layoutname [, extravars])
+dnl
+AC_DEFUN([APR_LAYOUT], [
+  if test ! -f $srcdir/config.layout; then
+    echo "** Error: Layout file $srcdir/config.layout not found"
+    echo "** Error: Cannot use undefined layout '$LAYOUT'"
+    exit 1
+  fi
+  # Catch layout names including a slash which will otherwise
+  # confuse the heck out of the sed script.
+  case $2 in
+  */*) 
+    echo "** Error: $2 is not a valid layout name"
+    exit 1 ;;
+  esac
+  pldconf=./config.pld
+  changequote({,})
+  sed -e "1s/[ 	]*<[lL]ayout[ 	]*$2[ 	]*>[ 	]*//;1t" \
+      -e "1,/[ 	]*<[lL]ayout[ 	]*$2[ 	]*>[ 	]*/d" \
+      -e '/[ 	]*<\/Layout>[ 	]*/,$d' \
+      -e "s/^[ 	]*//g" \
+      -e "s/:[ 	]*/=\'/g" \
+      -e "s/[ 	]*$/'/g" \
+      $1 > $pldconf
+  layout_name=$2
+  if test ! -s $pldconf; then
+    echo "** Error: unable to find layout $layout_name"
+    exit 1
+  fi
+  . $pldconf
+  rm $pldconf
+  for var in prefix exec_prefix bindir sbindir libexecdir mandir \
+             sysconfdir datadir includedir localstatedir runtimedir \
+             logfiledir libdir installbuilddir libsuffix $3; do
+    eval "val=\"\$$var\""
+    case $val in
+      *+)
+        val=`echo $val | sed -e 's;\+$;;'`
+        eval "$var=\"\$val\""
+        autosuffix=yes
+        ;;
+      *)
+        autosuffix=no
+        ;;
+    esac
+    val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
+    val=`echo $val | sed -e 's:[\$]\([a-z_]*\):${\1}:g'`
+    if test "$autosuffix" = "yes"; then
+      if echo $val | grep apache >/dev/null; then
+        addtarget=no
+      else
+        addtarget=yes
+      fi
+      if test "$addtarget" = "yes"; then
+        val="$val/apache2"
+      fi
+    fi
+    eval "$var='$val'"
+  done
+  changequote([,])
+])dnl
+
+dnl
+dnl APR_ENABLE_LAYOUT(default layout name [, extra vars])
+dnl
+AC_DEFUN([APR_ENABLE_LAYOUT], [
+AC_ARG_ENABLE(layout,
+[  --enable-layout=LAYOUT],[
+  LAYOUT=$enableval
+])
+
+if test -z "$LAYOUT"; then
+  LAYOUT="$1"
+fi
+APR_LAYOUT($srcdir/config.layout, $LAYOUT, $2)
+
+AC_MSG_CHECKING(for chosen layout)
+AC_MSG_RESULT($layout_name)
+])
+
+
+dnl
+dnl APR_PARSE_ARGUMENTS
+dnl a reimplementation of autoconf's argument parser,
+dnl used here to allow us to co-exist layouts and argument based
+dnl set ups.
+AC_DEFUN([APR_PARSE_ARGUMENTS], [
+ac_prev=
+# Retrieve the command-line arguments.  The eval is needed because
+# the arguments are quoted to preserve accuracy.
+eval "set x $ac_configure_args"
+shift
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[[^=]]*=\(.*\)'`
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir="$ac_optarg" ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir="$ac_optarg" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix="$ac_optarg" ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir="$ac_optarg" ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir="$ac_optarg" ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir="$ac_optarg" ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir="$ac_optarg" ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir="$ac_optarg" ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir="$ac_optarg" ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix="$ac_optarg" ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir="$ac_optarg" ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir="$ac_optarg" ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir="$ac_optarg" ;;
+
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;;
+    *)  AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);;
+  esac
+done
+
+])dnl
+
+dnl
+dnl APR_CHECK_DEPEND
+dnl
+dnl Determine what program we can use to generate .deps-style dependencies
+dnl
+AC_DEFUN([APR_CHECK_DEPEND], [
+dnl Try to determine what depend program we can use
+dnl All GCC-variants should have -MM.
+dnl If not, then we can check on those, too.
+if test "$GCC" = "yes"; then
+  MKDEP='$(CC) -MM'
+else
+  rm -f conftest.c
+dnl <sys/types.h> should be available everywhere!
+  cat > conftest.c <<EOF
+#include <sys/types.h>
+  int main() { return 0; }
+EOF
+  MKDEP="true"
+  for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do
+    AC_MSG_CHECKING([if $i can create proper make dependencies])
+    if $i conftest.c 2>/dev/null | grep 'conftest.o: conftest.c' >/dev/null; then
+      MKDEP=$i
+      AC_MSG_RESULT(yes)
+      break;
+    fi
+    AC_MSG_RESULT(no)
+  done
+  rm -f conftest.c
+fi
+
+AC_SUBST(MKDEP)
+])
+
+dnl
+dnl APR_CHECK_TYPES_COMPATIBLE(TYPE-1, TYPE-2, [ACTION-IF-TRUE])
+dnl
+dnl Try to determine whether two types are the same. Only works
+dnl for gcc and icc.
+dnl
+AC_DEFUN([APR_CHECK_TYPES_COMPATIBLE], [
+define([apr_cvname], apr_cv_typematch_[]translit([$1], [ ], [_])_[]translit([$2], [ ], [_]))
+AC_CACHE_CHECK([whether $1 and $2 are the same], apr_cvname, [
+AC_TRY_COMPILE(AC_INCLUDES_DEFAULT, [
+    int foo[0 - !__builtin_types_compatible_p($1, $2)];
+], [apr_cvname=yes
+$3], [apr_cvname=no])])
+])

Deleted: vendor/apache/apr/1.5.2/build/apr_hints.m4
===================================================================
--- vendor/apache/apr/dist/build/apr_hints.m4	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/apr_hints.m4	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,520 +0,0 @@
-dnl -------------------------------------------------------- -*- autoconf -*-
-dnl Licensed to the Apache Software Foundation (ASF) under one or more
-dnl contributor license agreements.  See the NOTICE file distributed with
-dnl this work for additional information regarding copyright ownership.
-dnl The ASF licenses this file to You under the Apache License, Version 2.0
-dnl (the "License"); you may not use this file except in compliance with
-dnl the License.  You may obtain a copy of the License at
-dnl
-dnl     http://www.apache.org/licenses/LICENSE-2.0
-dnl
-dnl Unless required by applicable law or agreed to in writing, software
-dnl distributed under the License is distributed on an "AS IS" BASIS,
-dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-dnl See the License for the specific language governing permissions and
-dnl limitations under the License.
-
-dnl -----------------------------------------------------------------
-dnl apr_hints.m4: APR's autoconf macros for platform-specific hints
-dnl
-dnl  We preload various configure settings depending
-dnl  on previously obtained platform knowledge.
-dnl  We allow all settings to be overridden from
-dnl  the command-line.
-dnl
-dnl  We maintain the "format" that we've used
-dnl  under 1.3.x, so we don't exactly follow
-dnl  what is "recommended" by autoconf.
-
-dnl
-dnl APR_PRELOAD
-dnl
-dnl  Preload various ENV/makefile params such as CC, CFLAGS, etc
-dnl  based on outside knowledge
-dnl
-dnl  Generally, we force the setting of CC, and add flags
-dnl  to CFLAGS, CPPFLAGS, LIBS and LDFLAGS. 
-dnl
-AC_DEFUN(APR_PRELOAD, [
-if test "x$apr_preload_done" != "xyes" ; then
-
-  apr_preload_done="yes"
-
-  echo "Applying APR hints file rules for $host"
-
-  case "$host" in
-    *mint)
-	APR_ADDTO(CPPFLAGS, [-DMINT])
-	APR_ADDTO(LIBS, [-lportlib])
-	;;
-    *MPE/iX*)
-	APR_ADDTO(CPPFLAGS, [-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE])
-	APR_ADDTO(LIBS, [-lsvipc -lcurses])
-	APR_ADDTO(LDFLAGS, [-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\"])
-	;;
-    *-apple-aux3*)
-	APR_ADDTO(CPPFLAGS, [-DAUX3 -D_POSIX_SOURCE])
-	APR_ADDTO(LIBS, [-lposix -lbsd])
-	APR_ADDTO(LDFLAGS, [-s])
-	APR_SETVAR(SHELL, [/bin/ksh])
-	;;
-    *-ibm-aix*)
-	APR_ADDTO(CPPFLAGS, [-U__STR__ -D_THREAD_SAFE])
-        dnl _USR_IRS gets us the hstrerror() proto in netdb.h
-        case $host in
-            *-ibm-aix4.3)
-	        APR_ADDTO(CPPFLAGS, [-D_USE_IRS])
-	        ;;
-            *-ibm-aix5*)
-	        APR_ADDTO(CPPFLAGS, [-D_USE_IRS])
-	        ;;
-            *-ibm-aix4.3.*)
-                APR_ADDTO(CPPFLAGS, [-D_USE_IRS])
-                ;;
-        esac
-        dnl If using xlc, remember it, and give it the right options.
-        if $CC 2>&1 | grep 'xlc' > /dev/null; then
-          APR_SETIFNULL(AIX_XLC, [yes])
-          APR_ADDTO(CFLAGS, [-qHALT=E])
-        fi
-	APR_SETIFNULL(apr_sysvsem_is_global, [yes])
-	APR_SETIFNULL(apr_lock_method, [USE_SYSVSEM_SERIALIZE])
-        case $host in
-            *-ibm-aix3* | *-ibm-aix4.1.*)
-                ;;
-            *)
-                APR_ADDTO(LDFLAGS, [-Wl,-brtl])
-                ;;
-	esac
-        ;;
-    *-apollo-*)
-	APR_ADDTO(CPPFLAGS, [-DAPOLLO])
-	;;
-    *-dg-dgux*)
-	APR_ADDTO(CPPFLAGS, [-DDGUX])
-	;;
-    *-os2*)
-	APR_SETVAR(SHELL, [sh])
-	APR_SETIFNULL(apr_gethostbyname_is_thread_safe, [yes])
-	APR_SETIFNULL(apr_gethostbyaddr_is_thread_safe, [yes])
-	APR_SETIFNULL(apr_getservbyname_is_thread_safe, [yes])
-	;;
-    *-hi-hiux)
-	APR_ADDTO(CPPFLAGS, [-DHIUX])
-	;;
-    *-hp-hpux11.*)
-	APR_ADDTO(CPPFLAGS, [-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE])
-	;;
-    *-hp-hpux10.*)
- 	case $host in
- 	  *-hp-hpux10.01)
-dnl	       # We know this is a problem in 10.01.
-dnl	       # Not a problem in 10.20.  Otherwise, who knows?
-	       APR_ADDTO(CPPFLAGS, [-DSELECT_NEEDS_CAST])
-	       ;;	     
- 	esac
-	APR_ADDTO(CPPFLAGS, [-D_REENTRANT])
-	;;
-    *-hp-hpux*)
-	APR_ADDTO(CPPFLAGS, [-DHPUX -D_REENTRANT])
-	;;
-    *-linux*)
-	APR_ADDTO(CPPFLAGS, [-DLINUX -D_REENTRANT -D_GNU_SOURCE])
-	;;
-    *-lynx-lynxos)
-	APR_ADDTO(CPPFLAGS, [-D__NO_INCLUDE_WARN__ -DLYNXOS])
-	APR_ADDTO(LIBS, [-lbsd])
-	;;
-    *486-*-bsdi*)
-	APR_ADDTO(CFLAGS, [-m486])
-	;;
-    *-*-bsdi*)
-        case $host in
-            *bsdi4.1)
-                APR_ADDTO(CFLAGS, [-D_REENTRANT])
-                ;;
-        esac
-        ;;
-    *-openbsd*)
-	APR_ADDTO(CPPFLAGS, [-D_POSIX_THREADS])
-        # binding to an ephemeral port fails on OpenBSD so override
-        # the test for O_NONBLOCK inheritance across accept().
-        APR_SETIFNULL(ac_cv_o_nonblock_inherited, [yes])
-	;;
-    *-netbsd*)
-	APR_ADDTO(CPPFLAGS, [-DNETBSD])
-        # fcntl() lies about O_NONBLOCK on an accept()ed socket (PR kern/26950)
-        APR_SETIFNULL(ac_cv_o_nonblock_inherited, [yes])
-	;;
-    *-freebsd*)
-        APR_SETIFNULL(apr_lock_method, [USE_FLOCK_SERIALIZE])
-        if test -x /sbin/sysctl; then
-            os_version=`/sbin/sysctl -n kern.osreldate`
-        else
-            os_version=000000
-        fi
-        # 502102 is when libc_r switched to libpthread (aka libkse).
-        if test $os_version -ge "502102"; then
-          apr_cv_pthreads_cflags="none"
-          apr_cv_pthreads_lib="-lpthread"
-        else
-          APR_ADDTO(CPPFLAGS, [-D_THREAD_SAFE -D_REENTRANT])
-          APR_SETIFNULL(enable_threads, [no])
-        fi
-        # prevent use of KQueue before FreeBSD 4.8
-        if test $os_version -lt "480000"; then
-          APR_SETIFNULL(ac_cv_func_kqueue, no)
-        fi
-	;;
-    *-k*bsd*-gnu)
-        APR_ADDTO(CPPFLAGS, [-D_REENTRANT -D_GNU_SOURCE])
-        ;;
-    *-gnu*|*-GNU*)
-        APR_ADDTO(CPPFLAGS, [-D_REENTRANT -D_GNU_SOURCE -DHURD])
-        ;;
-    *-next-nextstep*)
-	APR_SETIFNULL(CFLAGS, [-O])
-	APR_ADDTO(CPPFLAGS, [-DNEXT])
-	;;
-    *-next-openstep*)
-	APR_SETIFNULL(CFLAGS, [-O])
-	APR_ADDTO(CPPFLAGS, [-DNEXT])
-	;;
-    *-apple-rhapsody*)
-	APR_ADDTO(CPPFLAGS, [-DRHAPSODY])
-	;;
-    *-apple-darwin*)
-        APR_ADDTO(CPPFLAGS, [-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp])
-        APR_SETIFNULL(apr_posixsem_is_global, [yes])
-        case $host in
-            *-apple-darwin[[1-9]].*)
-                # APR's use of kqueue has triggered kernel panics for some
-                # 10.5.x (Darwin 9.x) users when running the entire test suite.
-                # In 10.4.x, use of kqueue would cause the socket tests to hang.
-                # 10.6+ (Darwin 10.x is supposed to fix the KQueue issues
-                APR_SETIFNULL(ac_cv_func_kqueue, [no]) 
-                APR_SETIFNULL(ac_cv_func_poll, [no]) # See issue 34332
-            ;;
-            *-apple-darwin1?.*)
-                APR_ADDTO(CPPFLAGS, [-DDARWIN_10])
-            ;;
-        esac
-	;;
-    *-dec-osf*)
-	APR_ADDTO(CPPFLAGS, [-DOSF1])
-        # process-shared mutexes don't seem to work in Tru64 5.0
-        APR_SETIFNULL(apr_cv_process_shared_works, [no])
-	;;
-    *-nto-qnx*)
-	;;
-    *-qnx)
-	APR_ADDTO(CPPFLAGS, [-DQNX])
-	APR_ADDTO(LIBS, [-N128k -lunix])
-	;;
-    *-qnx32)
-	APR_ADDTO(CPPFLAGS, [-DQNX])
-	APR_ADDTO(CFLAGS, [-mf -3])
-	APR_ADDTO(LIBS, [-N128k -lunix])
-	;;
-    *-isc4*)
-	APR_ADDTO(CPPFLAGS, [-posix -DISC])
-	APR_ADDTO(LDFLAGS, [-posix])
-	APR_ADDTO(LIBS, [-linet])
-	;;
-    *-sco3.2v[[234]]*)
-	APR_ADDTO(CPPFLAGS, [-DSCO -D_REENTRANT])
-	if test "$GCC" = "no"; then
-	    APR_ADDTO(CFLAGS, [-Oacgiltz])
-	fi
-	APR_ADDTO(LIBS, [-lPW -lmalloc])
-	;;
-    *-sco3.2v5*)
-	APR_ADDTO(CPPFLAGS, [-DSCO5 -D_REENTRANT])
-	;;
-    *-sco_sv*|*-SCO_SV*)
-	APR_ADDTO(CPPFLAGS, [-DSCO -D_REENTRANT])
-	APR_ADDTO(LIBS, [-lPW -lmalloc])
-	;;
-    *-solaris2*)
-    	PLATOSVERS=`echo $host | sed 's/^.*solaris2.//'`
-	APR_ADDTO(CPPFLAGS, [-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT])
-        if test $PLATOSVERS -ge 10; then
-            APR_SETIFNULL(apr_lock_method, [USE_PROC_PTHREAD_SERIALIZE])
-        else
-            APR_SETIFNULL(apr_lock_method, [USE_FCNTL_SERIALIZE])
-        fi
-        # readdir64_r error handling seems broken on Solaris (at least
-        # up till 2.8) -- it will return -1 at end-of-directory.
-        APR_SETIFNULL(ac_cv_func_readdir64_r, [no])
-	;;
-    *-sunos4*)
-	APR_ADDTO(CPPFLAGS, [-DSUNOS4])
-	;;
-    *-unixware1)
-	APR_ADDTO(CPPFLAGS, [-DUW=100])
-	;;
-    *-unixware2)
-	APR_ADDTO(CPPFLAGS, [-DUW=200])
-	APR_ADDTO(LIBS, [-lgen])
-	;;
-    *-unixware211)
-	APR_ADDTO(CPPFLAGS, [-DUW=211])
-	APR_ADDTO(LIBS, [-lgen])
-	;;
-    *-unixware212)
-	APR_ADDTO(CPPFLAGS, [-DUW=212])
-	APR_ADDTO(LIBS, [-lgen])
-	;;
-    *-unixware7)
-	APR_ADDTO(CPPFLAGS, [-DUW=700])
-	APR_ADDTO(LIBS, [-lgen])
-	;;
-    maxion-*-sysv4*)
-	APR_ADDTO(CPPFLAGS, [-DSVR4])
-	APR_ADDTO(LIBS, [-lc -lgen])
-	;;
-    *-*-powermax*)
-	APR_ADDTO(CPPFLAGS, [-DSVR4])
-	APR_ADDTO(LIBS, [-lgen])
-	;;
-    TPF)
-       APR_ADDTO(CPPFLAGS, [-DTPF -D_POSIX_SOURCE])
-       ;;
-    bs2000*-siemens-sysv*)
-	APR_SETIFNULL(CFLAGS, [-O])
-	APR_ADDTO(CPPFLAGS, [-DSVR4 -D_XPG_IV -D_KMEMUSER])
-	APR_ADDTO(LIBS, [-lsocket])
-	APR_SETIFNULL(enable_threads, [no])
-	;;
-    *-siemens-sysv4*)
-	APR_ADDTO(CPPFLAGS, [-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT])
-	APR_ADDTO(LIBS, [-lc])
-	;;
-    pyramid-pyramid-svr4)
-	APR_ADDTO(CPPFLAGS, [-DSVR4 -DNO_LONG_DOUBLE])
-	APR_ADDTO(LIBS, [-lc])
-	;;
-    DS/90\ 7000-*-sysv4*)
-	APR_ADDTO(CPPFLAGS, [-DUXPDS])
-	;;
-    *-tandem-sysv4*)
-	APR_ADDTO(CPPFLAGS, [-DSVR4])
-	;;
-    *-ncr-sysv4)
-	APR_ADDTO(CPPFLAGS, [-DSVR4 -DMPRAS])
-	APR_ADDTO(LIBS, [-lc -L/usr/ucblib -lucb])
-	;;
-    *-sysv4*)
-	APR_ADDTO(CPPFLAGS, [-DSVR4])
-	APR_ADDTO(LIBS, [-lc])
-	;;
-    88k-encore-sysv4)
-	APR_ADDTO(CPPFLAGS, [-DSVR4 -DENCORE])
-	APR_ADDTO(LIBS, [-lPW])
-	;;
-    *-uts*)
-	PLATOSVERS=`echo $host | sed 's/^.*,//'`
-	case $PLATOSVERS in
-	    2*) APR_ADDTO(CPPFLAGS, [-DUTS21])
-	        APR_ADDTO(CFLAGS, [-Xa -eft])
-	        APR_ADDTO(LIBS, [-lbsd -la])
-	        ;;
-	    *)  APR_ADDTO(CPPFLAGS, [-DSVR4])
-	        APR_ADDTO(CFLAGS, [-Xa])
-	        ;;
-	esac
-	;;
-    *-ultrix)
-	APR_ADDTO(CPPFLAGS, [-DULTRIX])
-	APR_SETVAR(SHELL, [/bin/sh5])
-	;;
-    *powerpc-tenon-machten*)
-	APR_ADDTO(LDFLAGS, [-Xlstack=0x14000 -Xldelcsect])
-	;;
-    *-machten*)
-	APR_ADDTO(LDFLAGS, [-stack 0x14000])
-	;;
-    *convex-v11*)
-	APR_ADDTO(CPPFLAGS, [-DCONVEXOS11])
-	APR_SETIFNULL(CFLAGS, [-O1])
-	APR_ADDTO(CFLAGS, [-ext])
-	;;
-    i860-intel-osf1)
-	APR_ADDTO(CPPFLAGS, [-DPARAGON])
-	;;
-    *-sequent-ptx2.*.*)
-	APR_ADDTO(CPPFLAGS, [-DSEQUENT=20])
-	APR_ADDTO(CFLAGS, [-Wc,-pw])
-	APR_ADDTO(LIBS, [-linet -lc -lseq])
-	;;
-    *-sequent-ptx4.0.*)
-	APR_ADDTO(CPPFLAGS, [-DSEQUENT=40])
-	APR_ADDTO(CFLAGS, [-Wc,-pw])
-	APR_ADDTO(LIBS, [-linet -lc])
-	;;
-    *-sequent-ptx4.[[123]].*)
-	APR_ADDTO(CPPFLAGS, [-DSEQUENT=41])
-	APR_ADDTO(CFLAGS, [-Wc,-pw])
-	APR_ADDTO(LIBS, [-lc])
-	;;
-    *-sequent-ptx4.4.*)
-	APR_ADDTO(CPPFLAGS, [-DSEQUENT=44])
-	APR_ADDTO(CFLAGS, [-Wc,-pw])
-	APR_ADDTO(LIBS, [-lc])
-	;;
-    *-sequent-ptx4.5.*)
-	APR_ADDTO(CPPFLAGS, [-DSEQUENT=45])
-	APR_ADDTO(CFLAGS, [-Wc,-pw])
-	APR_ADDTO(LIBS, [-lc])
-	;;
-    *-sequent-ptx5.0.*)
-	APR_ADDTO(CPPFLAGS, [-DSEQUENT=50])
-	APR_ADDTO(CFLAGS, [-Wc,-pw])
-	APR_ADDTO(LIBS, [-lc])
-	;;
-    *NEWS-OS*)
-	APR_ADDTO(CPPFLAGS, [-DNEWSOS])
-	;;
-    *-riscix)
-	APR_ADDTO(CPPFLAGS, [-DRISCIX])
-	APR_SETIFNULL(CFLAGS, [-O])
-	;;
-    *-irix*)
-	APR_ADDTO(CPPFLAGS, [-D_POSIX_THREAD_SAFE_FUNCTIONS])
-	;;
-    *beos*)
-        APR_ADDTO(CPPFLAGS, [-DBEOS])
-        PLATOSVERS=`uname -r`
-        APR_SETIFNULL(apr_process_lock_is_global, [yes])
-        case $PLATOSVERS in
-            5.0.4)
-                APR_ADDTO(LDFLAGS, [-L/boot/beos/system/lib])
-                APR_ADDTO(LIBS, [-lbind -lsocket])
-                APR_ADDTO(CPPFLAGS,[-DBONE7])
-                ;;
-            5.1)
-                APR_ADDTO(LDFLAGS, [-L/boot/beos/system/lib])
-                APR_ADDTO(LIBS, [-lbind -lsocket])
-                ;;
-	esac
-	APR_ADDTO(CPPFLAGS, [-DSIGPROCMASK_SETS_THREAD_MASK])
-        ;;
-    4850-*.*)
-	APR_ADDTO(CPPFLAGS, [-DSVR4 -DMPRAS])
-	APR_ADDTO(LIBS, [-lc -L/usr/ucblib -lucb])
-	;;
-    drs6000*)
-	APR_ADDTO(CPPFLAGS, [-DSVR4])
-	APR_ADDTO(LIBS, [-lc -L/usr/ucblib -lucb])
-	;;
-    m88k-*-CX/SX|CYBER)
-	APR_ADDTO(CPPFLAGS, [-D_CX_SX])
-	APR_ADDTO(CFLAGS, [-Xa])
-	;;
-    *-tandem-oss)
-	APR_ADDTO(CPPFLAGS, [-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1])
-	;;
-    *-ibm-os390)
-        APR_SETIFNULL(apr_lock_method, [USE_SYSVSEM_SERIALIZE])
-        APR_SETIFNULL(apr_sysvsem_is_global, [yes])
-        APR_SETIFNULL(apr_gethostbyname_is_thread_safe, [yes])
-        APR_SETIFNULL(apr_gethostbyaddr_is_thread_safe, [yes])
-        APR_SETIFNULL(apr_getservbyname_is_thread_safe, [yes])
-        AC_DEFINE(HAVE_ZOS_PTHREADS, 1, [Define for z/OS pthread API nuances])
-        APR_ADDTO(CPPFLAGS, [-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1])
-        ;;
-    *-ibm-as400)
-        APR_SETIFNULL(apr_lock_method, [USE_SYSVSEM_SERIALIZE])
-        APR_SETIFNULL(apr_process_lock_is_global, [yes])
-        APR_SETIFNULL(apr_gethostbyname_is_thread_safe, [yes])
-        APR_SETIFNULL(apr_gethostbyaddr_is_thread_safe, [yes])
-        APR_SETIFNULL(apr_getservbyname_is_thread_safe, [yes])
-        ;;
-    *cygwin*)
-	APR_ADDTO(CPPFLAGS, [-DCYGWIN])
-	;;
-    *mingw*)
-        APR_ADDTO(CPPFLAGS, [-DWIN32 -D__MSVCRT__])
-        APR_ADDTO(LDFLAGS, [-Wl,--enable-auto-import,--subsystem,console])
-        APR_SETIFNULL(have_unicode_fs, [1])
-        APR_SETIFNULL(have_proc_invoked, [1])
-        APR_SETIFNULL(apr_lock_method, [win32])
-        APR_SETIFNULL(apr_process_lock_is_global, [yes])
-        APR_SETIFNULL(apr_cv_use_lfs64, [yes])
-        APR_SETIFNULL(apr_cv_osuuid, [yes])
-        APR_SETIFNULL(apr_cv_tcp_nodelay_with_cork, [no])
-        APR_SETIFNULL(apr_thread_func, [__stdcall])
-        APR_SETIFNULL(ac_cv_o_nonblock_inherited, [yes])
-        APR_SETIFNULL(ac_cv_tcp_nodelay_inherited, [yes])
-        APR_SETIFNULL(ac_cv_file__dev_zero, [no])
-        APR_SETIFNULL(ac_cv_func_setpgrp_void, [no])
-        APR_SETIFNULL(ac_cv_func_mmap, [yes])
-        APR_SETIFNULL(ac_cv_define_sockaddr_in6, [yes])
-        APR_SETIFNULL(ac_cv_working_getaddrinfo, [yes])
-        APR_SETIFNULL(ac_cv_working_getnameinfo, [yes])
-        APR_SETIFNULL(ac_cv_func_gai_strerror, [yes])
-        case $host in
-            *mingw32*)
-                APR_SETIFNULL(apr_has_xthread_files, [1])
-                APR_SETIFNULL(apr_has_user, [1])
-                APR_SETIFNULL(apr_procattr_user_set_requires_password, [1])
-                dnl The real function is TransmitFile(), not sendfile(), but
-                dnl this bypasses the Linux/Solaris/AIX/etc. test and enables
-                dnl the TransmitFile() implementation.
-                APR_SETIFNULL(ac_cv_func_sendfile, [yes])
-                ;;
-            *mingwce)
-                APR_SETIFNULL(apr_has_xthread_files, [0])
-                APR_SETIFNULL(apr_has_user, [0])
-                APR_SETIFNULL(apr_procattr_user_set_requires_password, [0])
-                APR_SETIFNULL(ac_cv_func_sendfile, [no])
-                ;;
-        esac
-        ;;
-  esac
-
-fi
-])
-
-dnl
-dnl APR_CC_HINTS
-dnl
-dnl  Allows us to provide a default choice of compiler which
-dnl  the user can override.
-AC_DEFUN(APR_CC_HINTS, [
-case "$host" in
-  *-apple-aux3*)
-      APR_SETIFNULL(CC, [gcc])
-      ;;
-  bs2000*-siemens-sysv*)
-      APR_SETIFNULL(CC, [c89 -XLLML -XLLMK -XL -Kno_integer_overflow])
-      ;;
-  *convex-v11*)
-      APR_SETIFNULL(CC, [cc])
-      ;;
-  *-ibm-os390)
-      APR_SETIFNULL(CC, [cc])
-      ;;
-  *-ibm-as400)
-      APR_SETIFNULL(CC, [icc])
-      ;;
-  *-isc4*)
-      APR_SETIFNULL(CC, [gcc])
-      ;;
-  m88k-*-CX/SX|CYBER)
-      APR_SETIFNULL(CC, [cc])
-      ;;
-  *-next-openstep*)
-      APR_SETIFNULL(CC, [cc])
-      ;;
-  *-qnx32)
-      APR_SETIFNULL(CC, [cc -F])
-      ;;
-  *-tandem-oss)
-      APR_SETIFNULL(CC, [c89])
-      ;;
-  TPF)
-      APR_SETIFNULL(CC, [c89])
-      ;;
-esac
-])

Copied: vendor/apache/apr/1.5.2/build/apr_hints.m4 (from rev 9273, vendor/apache/apr/dist/build/apr_hints.m4)
===================================================================
--- vendor/apache/apr/1.5.2/build/apr_hints.m4	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/apr_hints.m4	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,517 @@
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Licensed to the Apache Software Foundation (ASF) under one or more
+dnl contributor license agreements.  See the NOTICE file distributed with
+dnl this work for additional information regarding copyright ownership.
+dnl The ASF licenses this file to You under the Apache License, Version 2.0
+dnl (the "License"); you may not use this file except in compliance with
+dnl the License.  You may obtain a copy of the License at
+dnl
+dnl     http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
+dnl -----------------------------------------------------------------
+dnl apr_hints.m4: APR's autoconf macros for platform-specific hints
+dnl
+dnl  We preload various configure settings depending
+dnl  on previously obtained platform knowledge.
+dnl  We allow all settings to be overridden from
+dnl  the command-line.
+dnl
+dnl  We maintain the "format" that we've used
+dnl  under 1.3.x, so we don't exactly follow
+dnl  what is "recommended" by autoconf.
+
+dnl
+dnl APR_PRELOAD
+dnl
+dnl  Preload various ENV/makefile params such as CC, CFLAGS, etc
+dnl  based on outside knowledge
+dnl
+dnl  Generally, we force the setting of CC, and add flags
+dnl  to CFLAGS, CPPFLAGS, LIBS and LDFLAGS. 
+dnl
+AC_DEFUN(APR_PRELOAD, [
+if test "x$apr_preload_done" != "xyes" ; then
+
+  apr_preload_done="yes"
+
+  echo "Applying APR hints file rules for $host"
+
+  case "$host" in
+    *mint)
+	APR_ADDTO(CPPFLAGS, [-DMINT -D_GNU_SOURCE])
+	;;
+    *MPE/iX*)
+	APR_ADDTO(CPPFLAGS, [-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE])
+	APR_ADDTO(LIBS, [-lsvipc -lcurses])
+	APR_ADDTO(LDFLAGS, [-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\"])
+	;;
+    *-apple-aux3*)
+	APR_ADDTO(CPPFLAGS, [-DAUX3 -D_POSIX_SOURCE])
+	APR_ADDTO(LIBS, [-lposix -lbsd])
+	APR_ADDTO(LDFLAGS, [-s])
+	APR_SETVAR(SHELL, [/bin/ksh])
+	;;
+    *-ibm-aix*)
+	APR_ADDTO(CPPFLAGS, [-U__STR__ -D_THREAD_SAFE])
+        dnl _USR_IRS gets us the hstrerror() proto in netdb.h
+        case $host in
+            *-ibm-aix4.3)
+	        APR_ADDTO(CPPFLAGS, [-D_USE_IRS])
+	        ;;
+            *-ibm-aix5*)
+	        APR_ADDTO(CPPFLAGS, [-D_USE_IRS])
+	        ;;
+            *-ibm-aix4.3.*)
+                APR_ADDTO(CPPFLAGS, [-D_USE_IRS])
+                ;;
+        esac
+        dnl If using xlc, remember it, and give it the right options.
+        if $CC 2>&1 | grep 'xlc' > /dev/null; then
+          APR_SETIFNULL(AIX_XLC, [yes])
+          APR_ADDTO(CFLAGS, [-qHALT=E])
+        fi
+	APR_SETIFNULL(apr_sysvsem_is_global, [yes])
+	APR_SETIFNULL(apr_lock_method, [USE_SYSVSEM_SERIALIZE])
+        case $host in
+            *-ibm-aix3* | *-ibm-aix4.1.*)
+                ;;
+            *)
+                APR_ADDTO(LDFLAGS, [-Wl,-brtl])
+                ;;
+	esac
+        ;;
+    *-apollo-*)
+	APR_ADDTO(CPPFLAGS, [-DAPOLLO])
+	;;
+    *-dg-dgux*)
+	APR_ADDTO(CPPFLAGS, [-DDGUX])
+	;;
+    *-os2*)
+	APR_SETVAR(SHELL, [sh])
+	APR_SETIFNULL(apr_gethostbyname_is_thread_safe, [yes])
+	APR_SETIFNULL(apr_gethostbyaddr_is_thread_safe, [yes])
+	APR_SETIFNULL(apr_getservbyname_is_thread_safe, [yes])
+	;;
+    *-hi-hiux)
+	APR_ADDTO(CPPFLAGS, [-DHIUX])
+	;;
+    *-hp-hpux11.*)
+	APR_ADDTO(CPPFLAGS, [-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE])
+	;;
+    *-hp-hpux10.*)
+ 	case $host in
+ 	  *-hp-hpux10.01)
+dnl	       # We know this is a problem in 10.01.
+dnl	       # Not a problem in 10.20.  Otherwise, who knows?
+	       APR_ADDTO(CPPFLAGS, [-DSELECT_NEEDS_CAST])
+	       ;;	     
+ 	esac
+	APR_ADDTO(CPPFLAGS, [-D_REENTRANT])
+	;;
+    *-hp-hpux*)
+	APR_ADDTO(CPPFLAGS, [-DHPUX -D_REENTRANT])
+	;;
+    *-linux*)
+	APR_ADDTO(CPPFLAGS, [-DLINUX -D_REENTRANT -D_GNU_SOURCE])
+	;;
+    *-lynx-lynxos)
+	APR_ADDTO(CPPFLAGS, [-D__NO_INCLUDE_WARN__ -DLYNXOS])
+	APR_ADDTO(LIBS, [-lbsd])
+	;;
+    *486-*-bsdi*)
+	APR_ADDTO(CFLAGS, [-m486])
+	;;
+    *-*-bsdi*)
+        case $host in
+            *bsdi4.1)
+                APR_ADDTO(CFLAGS, [-D_REENTRANT])
+                ;;
+        esac
+        ;;
+    *-openbsd*)
+	APR_ADDTO(CPPFLAGS, [-D_POSIX_THREADS])
+        # binding to an ephemeral port fails on OpenBSD so override
+        # the test for O_NONBLOCK inheritance across accept().
+        APR_SETIFNULL(ac_cv_o_nonblock_inherited, [yes])
+	;;
+    *-netbsd*)
+	APR_ADDTO(CPPFLAGS, [-DNETBSD])
+        # fcntl() lies about O_NONBLOCK on an accept()ed socket (PR kern/26950)
+        APR_SETIFNULL(ac_cv_o_nonblock_inherited, [yes])
+	;;
+    *-freebsd*)
+        APR_SETIFNULL(apr_lock_method, [USE_FLOCK_SERIALIZE])
+        if test -x /sbin/sysctl; then
+            os_version=`/sbin/sysctl -n kern.osreldate`
+        else
+            os_version=000000
+        fi
+        # 502102 is when libc_r switched to libpthread (aka libkse).
+        if test $os_version -ge "502102"; then
+          apr_cv_pthreads_cflags="none"
+          apr_cv_pthreads_lib="-lpthread"
+        else
+          APR_ADDTO(CPPFLAGS, [-D_THREAD_SAFE -D_REENTRANT])
+          APR_SETIFNULL(enable_threads, [no])
+        fi
+        # prevent use of KQueue before FreeBSD 4.8
+        if test $os_version -lt "480000"; then
+          APR_SETIFNULL(ac_cv_func_kqueue, no)
+        fi
+	;;
+    *-k*bsd*-gnu)
+        APR_ADDTO(CPPFLAGS, [-D_REENTRANT -D_GNU_SOURCE])
+        ;;
+    *-gnu*|*-GNU*)
+        APR_ADDTO(CPPFLAGS, [-D_REENTRANT -D_GNU_SOURCE -DHURD])
+        ;;
+    *-next-nextstep*)
+	APR_SETIFNULL(CFLAGS, [-O])
+	APR_ADDTO(CPPFLAGS, [-DNEXT])
+	;;
+    *-next-openstep*)
+	APR_SETIFNULL(CFLAGS, [-O])
+	APR_ADDTO(CPPFLAGS, [-DNEXT])
+	;;
+    *-apple-rhapsody*)
+	APR_ADDTO(CPPFLAGS, [-DRHAPSODY])
+	;;
+    *-apple-darwin*)
+        APR_ADDTO(CPPFLAGS, [-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK])
+        APR_SETIFNULL(apr_posixsem_is_global, [yes])
+        case $host in
+            *-apple-darwin[[1-9]].*)
+                # APR's use of kqueue has triggered kernel panics for some
+                # 10.5.x (Darwin 9.x) users when running the entire test suite.
+                # In 10.4.x, use of kqueue would cause the socket tests to hang.
+                # 10.6+ (Darwin 10.x is supposed to fix the KQueue issues
+                APR_SETIFNULL(ac_cv_func_kqueue, [no]) 
+                APR_SETIFNULL(ac_cv_func_poll, [no]) # See issue 34332
+            ;;
+            *-apple-darwin1?.*)
+                APR_ADDTO(CPPFLAGS, [-DDARWIN_10])
+            ;;
+        esac
+	;;
+    *-dec-osf*)
+	APR_ADDTO(CPPFLAGS, [-DOSF1])
+        # process-shared mutexes don't seem to work in Tru64 5.0
+        APR_SETIFNULL(apr_cv_process_shared_works, [no])
+	;;
+    *-nto-qnx*)
+	;;
+    *-qnx)
+	APR_ADDTO(CPPFLAGS, [-DQNX])
+	APR_ADDTO(LIBS, [-N128k -lunix])
+	;;
+    *-qnx32)
+	APR_ADDTO(CPPFLAGS, [-DQNX])
+	APR_ADDTO(CFLAGS, [-mf -3])
+	APR_ADDTO(LIBS, [-N128k -lunix])
+	;;
+    *-isc4*)
+	APR_ADDTO(CPPFLAGS, [-posix -DISC])
+	APR_ADDTO(LDFLAGS, [-posix])
+	APR_ADDTO(LIBS, [-linet])
+	;;
+    *-sco3.2v[[234]]*)
+	APR_ADDTO(CPPFLAGS, [-DSCO -D_REENTRANT])
+	if test "$GCC" = "no"; then
+	    APR_ADDTO(CFLAGS, [-Oacgiltz])
+	fi
+	APR_ADDTO(LIBS, [-lPW -lmalloc])
+	;;
+    *-sco3.2v5*)
+	APR_ADDTO(CPPFLAGS, [-DSCO5 -D_REENTRANT])
+	;;
+    *-sco_sv*|*-SCO_SV*)
+	APR_ADDTO(CPPFLAGS, [-DSCO -D_REENTRANT])
+	APR_ADDTO(LIBS, [-lPW -lmalloc])
+	;;
+    *-solaris2*)
+    	PLATOSVERS=`echo $host | sed 's/^.*solaris2.//'`
+	APR_ADDTO(CPPFLAGS, [-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT])
+        if test $PLATOSVERS -ge 10; then
+            APR_SETIFNULL(apr_lock_method, [USE_PROC_PTHREAD_SERIALIZE])
+        else
+            APR_SETIFNULL(apr_lock_method, [USE_FCNTL_SERIALIZE])
+        fi
+        # readdir64_r error handling seems broken on Solaris (at least
+        # up till 2.8) -- it will return -1 at end-of-directory.
+        APR_SETIFNULL(ac_cv_func_readdir64_r, [no])
+	;;
+    *-sunos4*)
+	APR_ADDTO(CPPFLAGS, [-DSUNOS4])
+	;;
+    *-unixware1)
+	APR_ADDTO(CPPFLAGS, [-DUW=100])
+	;;
+    *-unixware2)
+	APR_ADDTO(CPPFLAGS, [-DUW=200])
+	APR_ADDTO(LIBS, [-lgen])
+	;;
+    *-unixware211)
+	APR_ADDTO(CPPFLAGS, [-DUW=211])
+	APR_ADDTO(LIBS, [-lgen])
+	;;
+    *-unixware212)
+	APR_ADDTO(CPPFLAGS, [-DUW=212])
+	APR_ADDTO(LIBS, [-lgen])
+	;;
+    *-unixware7)
+	APR_ADDTO(CPPFLAGS, [-DUW=700])
+	APR_ADDTO(LIBS, [-lgen])
+	;;
+    maxion-*-sysv4*)
+	APR_ADDTO(CPPFLAGS, [-DSVR4])
+	APR_ADDTO(LIBS, [-lc -lgen])
+	;;
+    *-*-powermax*)
+	APR_ADDTO(CPPFLAGS, [-DSVR4])
+	APR_ADDTO(LIBS, [-lgen])
+	;;
+    TPF)
+       APR_ADDTO(CPPFLAGS, [-DTPF -D_POSIX_SOURCE])
+       ;;
+    bs2000*-siemens-sysv*)
+	APR_SETIFNULL(CFLAGS, [-O])
+	APR_ADDTO(CPPFLAGS, [-DSVR4 -D_XPG_IV -D_KMEMUSER])
+	APR_ADDTO(LIBS, [-lsocket])
+	APR_SETIFNULL(enable_threads, [no])
+	;;
+    *-siemens-sysv4*)
+	APR_ADDTO(CPPFLAGS, [-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT])
+	APR_ADDTO(LIBS, [-lc])
+	;;
+    pyramid-pyramid-svr4)
+	APR_ADDTO(CPPFLAGS, [-DSVR4 -DNO_LONG_DOUBLE])
+	APR_ADDTO(LIBS, [-lc])
+	;;
+    DS/90\ 7000-*-sysv4*)
+	APR_ADDTO(CPPFLAGS, [-DUXPDS])
+	;;
+    *-tandem-sysv4*)
+	APR_ADDTO(CPPFLAGS, [-DSVR4])
+	;;
+    *-ncr-sysv4)
+	APR_ADDTO(CPPFLAGS, [-DSVR4 -DMPRAS])
+	APR_ADDTO(LIBS, [-lc -L/usr/ucblib -lucb])
+	;;
+    *-sysv4*)
+	APR_ADDTO(CPPFLAGS, [-DSVR4])
+	APR_ADDTO(LIBS, [-lc])
+	;;
+    88k-encore-sysv4)
+	APR_ADDTO(CPPFLAGS, [-DSVR4 -DENCORE])
+	APR_ADDTO(LIBS, [-lPW])
+	;;
+    *-uts*)
+	PLATOSVERS=`echo $host | sed 's/^.*,//'`
+	case $PLATOSVERS in
+	    2*) APR_ADDTO(CPPFLAGS, [-DUTS21])
+	        APR_ADDTO(CFLAGS, [-Xa -eft])
+	        APR_ADDTO(LIBS, [-lbsd -la])
+	        ;;
+	    *)  APR_ADDTO(CPPFLAGS, [-DSVR4])
+	        APR_ADDTO(CFLAGS, [-Xa])
+	        ;;
+	esac
+	;;
+    *-ultrix)
+	APR_ADDTO(CPPFLAGS, [-DULTRIX])
+	APR_SETVAR(SHELL, [/bin/sh5])
+	;;
+    *powerpc-tenon-machten*)
+	APR_ADDTO(LDFLAGS, [-Xlstack=0x14000 -Xldelcsect])
+	;;
+    *-machten*)
+	APR_ADDTO(LDFLAGS, [-stack 0x14000])
+	;;
+    *convex-v11*)
+	APR_ADDTO(CPPFLAGS, [-DCONVEXOS11])
+	APR_SETIFNULL(CFLAGS, [-O1])
+	APR_ADDTO(CFLAGS, [-ext])
+	;;
+    i860-intel-osf1)
+	APR_ADDTO(CPPFLAGS, [-DPARAGON])
+	;;
+    *-sequent-ptx2.*.*)
+	APR_ADDTO(CPPFLAGS, [-DSEQUENT=20])
+	APR_ADDTO(CFLAGS, [-Wc,-pw])
+	APR_ADDTO(LIBS, [-linet -lc -lseq])
+	;;
+    *-sequent-ptx4.0.*)
+	APR_ADDTO(CPPFLAGS, [-DSEQUENT=40])
+	APR_ADDTO(CFLAGS, [-Wc,-pw])
+	APR_ADDTO(LIBS, [-linet -lc])
+	;;
+    *-sequent-ptx4.[[123]].*)
+	APR_ADDTO(CPPFLAGS, [-DSEQUENT=41])
+	APR_ADDTO(CFLAGS, [-Wc,-pw])
+	APR_ADDTO(LIBS, [-lc])
+	;;
+    *-sequent-ptx4.4.*)
+	APR_ADDTO(CPPFLAGS, [-DSEQUENT=44])
+	APR_ADDTO(CFLAGS, [-Wc,-pw])
+	APR_ADDTO(LIBS, [-lc])
+	;;
+    *-sequent-ptx4.5.*)
+	APR_ADDTO(CPPFLAGS, [-DSEQUENT=45])
+	APR_ADDTO(CFLAGS, [-Wc,-pw])
+	APR_ADDTO(LIBS, [-lc])
+	;;
+    *-sequent-ptx5.0.*)
+	APR_ADDTO(CPPFLAGS, [-DSEQUENT=50])
+	APR_ADDTO(CFLAGS, [-Wc,-pw])
+	APR_ADDTO(LIBS, [-lc])
+	;;
+    *NEWS-OS*)
+	APR_ADDTO(CPPFLAGS, [-DNEWSOS])
+	;;
+    *-riscix)
+	APR_ADDTO(CPPFLAGS, [-DRISCIX])
+	APR_SETIFNULL(CFLAGS, [-O])
+	;;
+    *-irix*)
+	APR_ADDTO(CPPFLAGS, [-D_POSIX_THREAD_SAFE_FUNCTIONS])
+	;;
+    *beos*)
+        APR_ADDTO(CPPFLAGS, [-DBEOS])
+        PLATOSVERS=`uname -r`
+        APR_SETIFNULL(apr_process_lock_is_global, [yes])
+        case $PLATOSVERS in
+            5.0.4)
+                APR_ADDTO(LDFLAGS, [-L/boot/beos/system/lib])
+                APR_ADDTO(LIBS, [-lbind -lsocket])
+                APR_ADDTO(CPPFLAGS,[-DBONE7])
+                ;;
+            5.1)
+                APR_ADDTO(LDFLAGS, [-L/boot/beos/system/lib])
+                APR_ADDTO(LIBS, [-lbind -lsocket])
+                ;;
+	esac
+	APR_ADDTO(CPPFLAGS, [-DSIGPROCMASK_SETS_THREAD_MASK])
+        ;;
+    4850-*.*)
+	APR_ADDTO(CPPFLAGS, [-DSVR4 -DMPRAS])
+	APR_ADDTO(LIBS, [-lc -L/usr/ucblib -lucb])
+	;;
+    drs6000*)
+	APR_ADDTO(CPPFLAGS, [-DSVR4])
+	APR_ADDTO(LIBS, [-lc -L/usr/ucblib -lucb])
+	;;
+    m88k-*-CX/SX|CYBER)
+	APR_ADDTO(CPPFLAGS, [-D_CX_SX])
+	APR_ADDTO(CFLAGS, [-Xa])
+	;;
+    *-tandem-oss)
+	APR_ADDTO(CPPFLAGS, [-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1])
+	;;
+    *-ibm-os390)
+        APR_SETIFNULL(apr_lock_method, [USE_SYSVSEM_SERIALIZE])
+        APR_SETIFNULL(apr_sysvsem_is_global, [yes])
+        APR_SETIFNULL(apr_gethostbyname_is_thread_safe, [yes])
+        APR_SETIFNULL(apr_gethostbyaddr_is_thread_safe, [yes])
+        APR_SETIFNULL(apr_getservbyname_is_thread_safe, [yes])
+        AC_DEFINE(HAVE_ZOS_PTHREADS, 1, [Define for z/OS pthread API nuances])
+        APR_ADDTO(CPPFLAGS, [-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1])
+        ;;
+    *-ibm-as400)
+        APR_SETIFNULL(apr_lock_method, [USE_SYSVSEM_SERIALIZE])
+        APR_SETIFNULL(apr_process_lock_is_global, [yes])
+        APR_SETIFNULL(apr_gethostbyname_is_thread_safe, [yes])
+        APR_SETIFNULL(apr_gethostbyaddr_is_thread_safe, [yes])
+        APR_SETIFNULL(apr_getservbyname_is_thread_safe, [yes])
+        ;;
+    *mingw*)
+        APR_ADDTO(INTERNAL_CPPFLAGS, -DBINPATH=$apr_builddir/test/.libs)
+        APR_ADDTO(CPPFLAGS, [-DWIN32 -D__MSVCRT__])
+        APR_ADDTO(LDFLAGS, [-Wl,--enable-auto-import,--subsystem,console])
+        APR_SETIFNULL(have_unicode_fs, [1])
+        APR_SETIFNULL(have_proc_invoked, [1])
+        APR_SETIFNULL(apr_lock_method, [win32])
+        APR_SETIFNULL(apr_process_lock_is_global, [yes])
+        APR_SETIFNULL(apr_cv_use_lfs64, [yes])
+        APR_SETIFNULL(apr_cv_osuuid, [yes])
+        APR_SETIFNULL(apr_cv_tcp_nodelay_with_cork, [no])
+        APR_SETIFNULL(apr_thread_func, [__stdcall])
+        APR_SETIFNULL(ac_cv_o_nonblock_inherited, [yes])
+        APR_SETIFNULL(ac_cv_tcp_nodelay_inherited, [yes])
+        APR_SETIFNULL(ac_cv_file__dev_zero, [no])
+        APR_SETIFNULL(ac_cv_func_setpgrp_void, [no])
+        APR_SETIFNULL(ac_cv_func_mmap, [yes])
+        APR_SETIFNULL(ac_cv_define_sockaddr_in6, [yes])
+        APR_SETIFNULL(ac_cv_working_getaddrinfo, [yes])
+        APR_SETIFNULL(ac_cv_working_getnameinfo, [yes])
+        APR_SETIFNULL(ac_cv_func_gai_strerror, [yes])
+        case $host in
+            *mingw32*)
+                APR_SETIFNULL(apr_has_xthread_files, [1])
+                APR_SETIFNULL(apr_has_user, [1])
+                APR_SETIFNULL(apr_procattr_user_set_requires_password, [1])
+                dnl The real function is TransmitFile(), not sendfile(), but
+                dnl this bypasses the Linux/Solaris/AIX/etc. test and enables
+                dnl the TransmitFile() implementation.
+                APR_SETIFNULL(ac_cv_func_sendfile, [yes])
+                ;;
+            *mingwce)
+                APR_SETIFNULL(apr_has_xthread_files, [0])
+                APR_SETIFNULL(apr_has_user, [0])
+                APR_SETIFNULL(apr_procattr_user_set_requires_password, [0])
+                APR_SETIFNULL(ac_cv_func_sendfile, [no])
+                ;;
+        esac
+        ;;
+  esac
+
+fi
+])
+
+dnl
+dnl APR_CC_HINTS
+dnl
+dnl  Allows us to provide a default choice of compiler which
+dnl  the user can override.
+AC_DEFUN(APR_CC_HINTS, [
+case "$host" in
+  *-apple-aux3*)
+      APR_SETIFNULL(CC, [gcc])
+      ;;
+  bs2000*-siemens-sysv*)
+      APR_SETIFNULL(CC, [c89 -XLLML -XLLMK -XL -Kno_integer_overflow])
+      ;;
+  *convex-v11*)
+      APR_SETIFNULL(CC, [cc])
+      ;;
+  *-ibm-os390)
+      APR_SETIFNULL(CC, [cc])
+      ;;
+  *-ibm-as400)
+      APR_SETIFNULL(CC, [icc])
+      ;;
+  *-isc4*)
+      APR_SETIFNULL(CC, [gcc])
+      ;;
+  m88k-*-CX/SX|CYBER)
+      APR_SETIFNULL(CC, [cc])
+      ;;
+  *-next-openstep*)
+      APR_SETIFNULL(CC, [cc])
+      ;;
+  *-qnx32)
+      APR_SETIFNULL(CC, [cc -F])
+      ;;
+  *-tandem-oss)
+      APR_SETIFNULL(CC, [c89])
+      ;;
+  TPF)
+      APR_SETIFNULL(CC, [c89])
+      ;;
+esac
+])

Deleted: vendor/apache/apr/1.5.2/build/apr_network.m4
===================================================================
--- vendor/apache/apr/dist/build/apr_network.m4	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/apr_network.m4	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,959 +0,0 @@
-dnl -------------------------------------------------------- -*- autoconf -*-
-dnl Licensed to the Apache Software Foundation (ASF) under one or more
-dnl contributor license agreements.  See the NOTICE file distributed with
-dnl this work for additional information regarding copyright ownership.
-dnl The ASF licenses this file to You under the Apache License, Version 2.0
-dnl (the "License"); you may not use this file except in compliance with
-dnl the License.  You may obtain a copy of the License at
-dnl
-dnl     http://www.apache.org/licenses/LICENSE-2.0
-dnl
-dnl Unless required by applicable law or agreed to in writing, software
-dnl distributed under the License is distributed on an "AS IS" BASIS,
-dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-dnl See the License for the specific language governing permissions and
-dnl limitations under the License.
-
-dnl -----------------------------------------------------------------
-dnl apr_network.m4: APR's autoconf macros for testing network support
-dnl
-
-dnl
-dnl check for type in_addr
-dnl
-AC_DEFUN(APR_TYPE_IN_ADDR,[
-  AC_CACHE_CHECK(for type in_addr, ac_cv_type_in_addr,[
-  AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-],[
- struct in_addr arg;
- arg.s_addr = htonl(INADDR_ANY);
-], [ ac_cv_type_in_addr="yes"] , [
-ac_cv_type_in_addr="no"])
-])
-])
-
-dnl
-dnl check for working getaddrinfo()
-dnl
-dnl Note that if the system doesn't have gai_strerror(), we
-dnl can't use getaddrinfo() because we can't get strings
-dnl describing the error codes.
-dnl
-AC_DEFUN([APR_CHECK_WORKING_GETADDRINFO], [
-  AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,[
-  AC_TRY_RUN( [
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-void main(void) {
-    struct addrinfo hints, *ai;
-    int error;
-
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = AF_UNSPEC;
-    hints.ai_socktype = SOCK_STREAM;
-    error = getaddrinfo("127.0.0.1", NULL, &hints, &ai);
-    if (error) {
-        exit(1);
-    }
-    if (ai->ai_addr->sa_family != AF_INET) {
-        exit(1);
-    }
-    exit(0);
-}
-],[
-  ac_cv_working_getaddrinfo="yes"
-],[
-  ac_cv_working_getaddrinfo="no"
-],[
-  ac_cv_working_getaddrinfo="yes"
-])])
-if test "$ac_cv_working_getaddrinfo" = "yes"; then
-  if test "$ac_cv_func_gai_strerror" != "yes"; then
-    ac_cv_working_getaddrinfo="no"
-  else
-    AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if getaddrinfo exists and works well enough for APR])
-  fi
-fi
-])
-
-dnl Check whether the AI_ADDRCONFIG flag can be used with getaddrinfo
-AC_DEFUN([APR_CHECK_GETADDRINFO_ADDRCONFIG], [
-  AC_CACHE_CHECK(for working AI_ADDRCONFIG, apr_cv_gai_addrconfig, [
-  AC_TRY_RUN([
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-int main(int argc, char **argv) {
-    struct addrinfo hints, *ai;
-
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = AF_UNSPEC;
-    hints.ai_socktype = SOCK_STREAM;
-    hints.ai_flags = AI_ADDRCONFIG;
-    return getaddrinfo("localhost", NULL, &hints, &ai) != 0;
-}], [apr_cv_gai_addrconfig=yes], 
-    [apr_cv_gai_addrconfig=no],
-    [apr_cv_gai_addrconfig=no])])
-
-if test $apr_cv_gai_addrconfig = yes; then
-   AC_DEFINE(HAVE_GAI_ADDRCONFIG, 1, [Define if getaddrinfo accepts the AI_ADDRCONFIG flag])
-fi
-])
-
-dnl
-dnl check for working getnameinfo()
-dnl
-AC_DEFUN([APR_CHECK_WORKING_GETNAMEINFO], [
-  AC_CACHE_CHECK(for working getnameinfo, ac_cv_working_getnameinfo,[
-  AC_TRY_RUN( [
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-void main(void) {
-    struct sockaddr_in sa;
-    char hbuf[256];
-    int error;
-
-    sa.sin_family = AF_INET;
-    sa.sin_port = 0;
-    sa.sin_addr.s_addr = inet_addr("127.0.0.1");
-#ifdef SIN6_LEN
-    sa.sin_len = sizeof(sa);
-#endif
-
-    error = getnameinfo((const struct sockaddr *)&sa, sizeof(sa),
-                        hbuf, 256, NULL, 0,
-                        NI_NUMERICHOST);
-    if (error) {
-        exit(1);
-    } else {
-        exit(0);
-    }
-}
-],[
-  ac_cv_working_getnameinfo="yes"
-],[
-  ac_cv_working_getnameinfo="no"
-],[
-  ac_cv_working_getnameinfo="yes"
-])])
-if test "$ac_cv_working_getnameinfo" = "yes"; then
-  AC_DEFINE(HAVE_GETNAMEINFO, 1, [Define if getnameinfo exists])
-fi
-])
-
-dnl
-dnl check for negative error codes for getaddrinfo()
-dnl
-AC_DEFUN([APR_CHECK_NEGATIVE_EAI], [
-  AC_CACHE_CHECK(for negative error codes for getaddrinfo, ac_cv_negative_eai,[
-  AC_TRY_RUN( [
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-void main(void) {
-    if (EAI_ADDRFAMILY < 0) {
-        exit(0);
-    }
-    exit(1);
-}
-],[
-  ac_cv_negative_eai="yes"
-],[
-  ac_cv_negative_eai="no"
-],[
-  ac_cv_negative_eai="no"
-])])
-if test "$ac_cv_negative_eai" = "yes"; then
-  AC_DEFINE(NEGATIVE_EAI, 1, [Define if EAI_ error codes from getaddrinfo are negative])
-fi
-])
-
-dnl
-dnl Checks the definition of gethostbyname_r and gethostbyaddr_r
-dnl which are different for glibc, solaris and assorted other operating
-dnl systems
-dnl
-dnl Note that this test is executed too early to see if we have all of
-dnl the headers.
-AC_DEFUN([APR_CHECK_GETHOSTBYNAME_R_STYLE], [
-
-dnl Try and compile a glibc2 gethostbyname_r piece of code, and set the
-dnl style of the routines to glibc2 on success
-AC_CACHE_CHECK([style of gethostbyname_r routine], ac_cv_gethostbyname_r_style,
-APR_TRY_COMPILE_NO_WARNING([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-],[
-int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0, 
-                          (char *) 0, 0, (struct hostent **) 0, &tmp);
-/* use tmp to suppress the warning */
-tmp=0;
-], ac_cv_gethostbyname_r_style=glibc2, ac_cv_gethostbyname_r_style=none))
-
-if test "$ac_cv_gethostbyname_r_style" = "glibc2"; then
-    AC_DEFINE(GETHOSTBYNAME_R_GLIBC2, 1, [Define if gethostbyname_r has the glibc style])
-fi
-
-AC_CACHE_CHECK([3rd argument to the gethostbyname_r routines], ac_cv_gethostbyname_r_arg,
-APR_TRY_COMPILE_NO_WARNING([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-],[
-int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0, 
-                          (struct hostent_data *) 0);
-/* use tmp to suppress the warning */
-tmp=0;
-], ac_cv_gethostbyname_r_arg=hostent_data, ac_cv_gethostbyname_r_arg=char))
-
-if test "$ac_cv_gethostbyname_r_arg" = "hostent_data"; then
-    AC_DEFINE(GETHOSTBYNAME_R_HOSTENT_DATA, 1, [Define if gethostbyname_r has the hostent_data for the third argument])
-fi
-])
-
-dnl
-dnl Checks the definition of getservbyname_r
-dnl which are different for glibc, solaris and assorted other operating
-dnl systems
-dnl
-dnl Note that this test is executed too early to see if we have all of
-dnl the headers.
-AC_DEFUN([APR_CHECK_GETSERVBYNAME_R_STYLE], [
-
-dnl Try and compile a glibc2 getservbyname_r piece of code, and set the
-dnl style of the routines to glibc2 on success
-AC_CACHE_CHECK([style of getservbyname_r routine], ac_cv_getservbyname_r_style, [
-APR_TRY_COMPILE_NO_WARNING([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-],[
-int tmp = getservbyname_r((const char *) 0, (const char *) 0,
-                          (struct servent *) 0, (char *) 0, 0,
-                          (struct servent **) 0);
-/* use tmp to suppress the warning */
-tmp=0;
-], ac_cv_getservbyname_r_style=glibc2, ac_cv_getservbyname_r_style=none)
-
-if test "$ac_cv_getservbyname_r_style" = "none"; then
-    dnl Try and compile a Solaris getservbyname_r piece of code, and set the
-    dnl style of the routines to solaris on success
-    APR_TRY_COMPILE_NO_WARNING([
-    #ifdef HAVE_SYS_TYPES_H
-    #include <sys/types.h>
-    #endif
-    #ifdef HAVE_NETINET_IN_H
-    #include <netinet/in.h>
-    #endif
-    #ifdef HAVE_ARPA_INET_H
-    #include <arpa/inet.h>
-    #endif
-    #ifdef HAVE_NETDB_H
-    #include <netdb.h>
-    #endif
-    #ifdef HAVE_STDLIB_H
-    #include <stdlib.h>
-    #endif
-    ],[
-    struct servent *tmp = getservbyname_r((const char *) 0, (const char *) 0,
-                                          (struct servent *) 0, (char *) 0, 0);
-    /* use tmp to suppress the warning */
-    tmp=NULL;
-    ], ac_cv_getservbyname_r_style=solaris, ac_cv_getservbyname_r_style=none)
-fi
-
-if test "$ac_cv_getservbyname_r_style" = "none"; then
-    dnl Try and compile a OSF/1 getservbyname_r piece of code, and set the
-    dnl style of the routines to osf1 on success
-    APR_TRY_COMPILE_NO_WARNING([
-    #ifdef HAVE_SYS_TYPES_H
-    #include <sys/types.h>
-    #endif
-    #ifdef HAVE_NETINET_IN_H
-    #include <netinet/in.h>
-    #endif
-    #ifdef HAVE_ARPA_INET_H
-    #include <arpa/inet.h>
-    #endif
-    #ifdef HAVE_NETDB_H
-    #include <netdb.h>
-    #endif
-    #ifdef HAVE_STDLIB_H
-    #include <stdlib.h>
-    #endif
-    ],[
-    int tmp = getservbyname_r((const char *) 0, (const char *) 0,
-                              (struct servent *) 0, (struct servent_data *) 0);
-    /* use tmp to suppress the warning */
-    tmp=0;
-    ], ac_cv_getservbyname_r_style=osf1, ac_cv_getservbyname_r_style=none)
-fi
-])
-
-if test "$ac_cv_getservbyname_r_style" = "glibc2"; then
-    AC_DEFINE(GETSERVBYNAME_R_GLIBC2, 1, [Define if getservbyname_r has the glibc style])
-elif test "$ac_cv_getservbyname_r_style" = "solaris"; then
-    AC_DEFINE(GETSERVBYNAME_R_SOLARIS, 1, [Define if getservbyname_r has the Solaris style])
-elif test "$ac_cv_getservbyname_r_style" = "osf1"; then
-    AC_DEFINE(GETSERVBYNAME_R_OSF1, 1, [Define if getservbyname_r has the OSF/1 style])
-fi
-])
-
-dnl
-dnl see if TCP_NODELAY setting is inherited from listening sockets
-dnl
-AC_DEFUN([APR_CHECK_TCP_NODELAY_INHERITED], [
-  AC_CACHE_CHECK(if TCP_NODELAY setting is inherited from listening sockets, ac_cv_tcp_nodelay_inherited,[
-  AC_TRY_RUN( [
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#ifndef HAVE_SOCKLEN_T
-typedef int socklen_t;
-#endif
-int main(void) {
-    int listen_s, connected_s, client_s;
-    int listen_port, rc;
-    struct sockaddr_in sa;
-    socklen_t sa_len;
-    socklen_t option_len;
-    int option;
-
-    listen_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (listen_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    option = 1;
-    rc = setsockopt(listen_s, IPPROTO_TCP, TCP_NODELAY, &option, sizeof option);
-    if (rc < 0) {
-        perror("setsockopt TCP_NODELAY");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave port 0 to get ephemeral */
-    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("bind for ephemeral port");
-        exit(1);
-    }
-    /* find ephemeral port */
-    sa_len = sizeof(sa);
-    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (rc < 0) {
-        perror("getsockname");
-        exit(1);
-    }
-    listen_port = sa.sin_port;
-    rc = listen(listen_s, 5);
-    if (rc < 0) {
-        perror("listen");
-        exit(1);
-    }
-    client_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (client_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-    sa.sin_port   = listen_port;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave sin_addr all zeros to use loopback */
-    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("connect");
-        exit(1);
-    }
-    sa_len = sizeof sa;
-    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (connected_s < 0) {
-        perror("accept");
-        exit(1);
-    }
-    option_len = sizeof option;
-    rc = getsockopt(connected_s, IPPROTO_TCP, TCP_NODELAY, &option, &option_len);
-    if (rc < 0) {
-        perror("getsockopt");
-        exit(1);
-    }
-    if (!option) {
-        fprintf(stderr, "TCP_NODELAY is not set in the child.\n");
-        exit(1);
-    }
-    return 0;
-}
-],[
-    ac_cv_tcp_nodelay_inherited="yes"
-],[
-    ac_cv_tcp_nodelay_inherited="no"
-],[
-    ac_cv_tcp_nodelay_inherited="yes"
-])])
-if test "$ac_cv_tcp_nodelay_inherited" = "yes"; then
-    tcp_nodelay_inherited=1
-else
-    tcp_nodelay_inherited=0
-fi
-])
-
-dnl
-dnl Determine whether TCP_NODELAY and TCP_CORK can both be set
-dnl on a TCP socket.
-dnl
-AC_DEFUN([APR_CHECK_TCP_NODELAY_WITH_CORK], [
-AC_CACHE_CHECK([whether TCP_NODELAY and TCP_CORK can both be enabled],
-[apr_cv_tcp_nodelay_with_cork],
-[AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-]], [[
-    int fd, flag, rc;
-
-    fd = socket(AF_INET, SOCK_STREAM, 0);
-    if (fd < 0) {
-       exit(1);
-    }
-
-    flag = 1;
-    rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof flag);
-    if (rc < 0) {
-        perror("setsockopt TCP_NODELAY");
-        exit(2);
-    }
-
-    flag = 1;
-    rc = setsockopt(fd, IPPROTO_TCP, TCP_CORK, &flag, sizeof flag);
-    if (rc < 0) {
-        perror("setsockopt TCP_CORK");
-        exit(3);
-    }
-
-    exit(0);
-]])], [apr_cv_tcp_nodelay_with_cork=yes], [apr_cv_tcp_nodelay_with_cork=no])])
-
-if test "$apr_cv_tcp_nodelay_with_cork" = "yes"; then
-  AC_DEFINE([HAVE_TCP_NODELAY_WITH_CORK], 1,
-            [Define if TCP_NODELAY and TCP_CORK can be enabled at the same time])
-fi
-])
-
-
-dnl
-dnl see if O_NONBLOCK setting is inherited from listening sockets
-dnl
-AC_DEFUN([APR_CHECK_O_NONBLOCK_INHERITED], [
-  AC_CACHE_CHECK(if O_NONBLOCK setting is inherited from listening sockets, ac_cv_o_nonblock_inherited,[
-  AC_TRY_RUN( [
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#ifndef HAVE_SOCKLEN_T
-typedef int socklen_t;
-#endif
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-int main(void) {
-    int listen_s, connected_s, client_s;
-    int listen_port, rc;
-    struct sockaddr_in sa;
-    socklen_t sa_len;
-
-    listen_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (listen_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave port 0 to get ephemeral */
-    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("bind for ephemeral port");
-        exit(1);
-    }
-    /* find ephemeral port */
-    sa_len = sizeof(sa);
-    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (rc < 0) {
-        perror("getsockname");
-        exit(1);
-    }
-    listen_port = sa.sin_port;
-    rc = listen(listen_s, 5);
-    if (rc < 0) {
-        perror("listen");
-        exit(1);
-    }
-    rc = fcntl(listen_s, F_SETFL, O_NONBLOCK);
-    if (rc < 0) {
-        perror("fcntl(F_SETFL)");
-        exit(1);
-    }
-    client_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (client_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-    sa.sin_port   = listen_port;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave sin_addr all zeros to use loopback */
-    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("connect");
-        exit(1);
-    }
-    sa_len = sizeof sa;
-    /* 1 second select timeout */
-    tv.tv_sec = 1;
-    tv.tv_usec = 0;
-    /* Set up fd set */
-    FD_ZERO(&fds);
-    FD_SET(listen_s, &fds);
-    /* Wait for socket to become readable */
-    rc = select(listen_s + 1, &fds, NULL, NULL, &tv);
-    if (rc < 0) {
-        perror("select");
-        exit(1);
-    }
-    if (rc == 0) {
-        fprintf(stderr, "Socket failed to become readable (timeout)\n");
-        exit(1);
-    }
-    if (!FD_ISSET(listen_s, &fds)) {
-        fprintf(stderr, "Socket failed to become readable (selected another fd)\n");
-        exit(1);
-    }
-    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (connected_s < 0) {
-        perror("accept");
-        exit(1);
-    }
-    rc = fcntl(connected_s, F_GETFL, 0);
-    if (rc < 0) {
-        perror("fcntl(F_GETFL)");
-        exit(1);
-    }
-    if (!(rc & O_NONBLOCK)) {
-        fprintf(stderr, "O_NONBLOCK is not set in the child.\n");
-        exit(1);
-    }
-    return 0;
-}
-],[
-    ac_cv_o_nonblock_inherited="yes"
-],[
-    ac_cv_o_nonblock_inherited="no"
-],[
-    ac_cv_o_nonblock_inherited="yes"
-])])
-if test "$ac_cv_o_nonblock_inherited" = "yes"; then
-    o_nonblock_inherited=1
-else
-    o_nonblock_inherited=0
-fi
-])
-
-dnl 
-dnl check for socklen_t, fall back to unsigned int
-dnl
-AC_DEFUN([APR_CHECK_SOCKLEN_T], [
-AC_CACHE_CHECK(for socklen_t, ac_cv_socklen_t,[
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-],[
-socklen_t foo = (socklen_t) 0;
-],[
-    ac_cv_socklen_t=yes
-],[
-    ac_cv_socklen_t=no
-])
-])
-
-if test "$ac_cv_socklen_t" = "yes"; then
-  AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t])
-fi
-])
-
-
-AC_DEFUN([APR_CHECK_INET_ADDR], [
-AC_CACHE_CHECK(for inet_addr, ac_cv_func_inet_addr,[
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-],[
-inet_addr("127.0.0.1");
-],[
-    ac_cv_func_inet_addr=yes
-],[
-    ac_cv_func_inet_addr=no
-])
-])
-
-if test "$ac_cv_func_inet_addr" = "yes"; then
-  have_inet_addr=1
-else
-  have_inet_addr=0
-fi
-])
-
-
-AC_DEFUN([APR_CHECK_INET_NETWORK], [
-AC_CACHE_CHECK(for inet_network, ac_cv_func_inet_network,[
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-],[
-inet_network("127.0.0.1");
-],[
-    ac_cv_func_inet_network=yes
-],[
-    ac_cv_func_inet_network=no
-])
-])
-
-if test "$ac_cv_func_inet_network" = "yes"; then
-  have_inet_network=1
-else
-  have_inet_network=0
-fi
-])
-
-dnl Check for presence of struct sockaddr_storage.
-AC_DEFUN([APR_CHECK_SOCKADDR_STORAGE], [
-AC_CACHE_CHECK(for sockaddr_storage, apr_cv_define_sockaddr_storage,[
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-],[struct sockaddr_storage sa;],
-[apr_cv_define_sockaddr_storage=yes],
-[apr_cv_define_sockaddr_storage=no])])
-
-if test "$apr_cv_define_sockaddr_storage" = "yes"; then
-  have_sa_storage=1
-else
-  have_sa_storage=0
-fi
-AC_SUBST(have_sa_storage)
-])
-
-dnl Check for presence of struct sockaddr_in6.
-AC_DEFUN([APR_CHECK_SOCKADDR_IN6], [
-AC_CACHE_CHECK(for sockaddr_in6, ac_cv_define_sockaddr_in6,[
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-],[
-struct sockaddr_in6 sa;
-],[
-    ac_cv_define_sockaddr_in6=yes
-],[
-    ac_cv_define_sockaddr_in6=no
-])
-])
-
-if test "$ac_cv_define_sockaddr_in6" = "yes"; then
-  have_sockaddr_in6=1
-else
-  have_sockaddr_in6=0
-fi
-])
-
-dnl
-dnl APR_H_ERRNO_COMPILE_CHECK
-dnl
-AC_DEFUN([APR_H_ERRNO_COMPILE_CHECK], [
-  if test x$1 != x; then
-    CPPFLAGS="-D$1 $CPPFLAGS"
-  fi
-  AC_TRY_COMPILE([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-],[
-int h_e = h_errno;
-],[
-  if test x$1 != x; then
-    ac_cv_h_errno_cppflags="$1"
-  else
-    ac_cv_h_errno_cppflags=yes
-  fi
-],[
-  ac_cv_h_errno_cppflags=no
-])])
-
-
-dnl
-dnl APR_CHECK_SCTP
-dnl
-dnl check for presence of SCTP protocol support
-dnl
-AC_DEFUN([APR_CHECK_SCTP],
-[
-  AC_CACHE_CHECK([whether SCTP is supported], [apr_cv_sctp], [
-  AC_TRY_RUN([
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_SCTP_H
-#include <netinet/sctp.h>
-#endif
-#ifdef HAVE_NETINET_SCTP_UIO_H
-#include <netinet/sctp_uio.h>
-#endif
-#include <stdlib.h>
-int main(void) {
-    int s, opt = 1;
-    if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)) < 0)
-       exit(1);
-    if (setsockopt(s, IPPROTO_SCTP, SCTP_NODELAY, &opt, sizeof(int)) < 0)
-       exit(2);
-    exit(0);
-}], [apr_cv_sctp=yes], [apr_cv_sctp=no], [apr_cv_sctp=no])])
-
-if test "$apr_cv_sctp" = "yes"; then
-    have_sctp=1
-else
-    have_sctp=0
-fi
-])
-
-dnl APR_CHECK_MCAST: check for multicast interfaces
-AC_DEFUN([APR_CHECK_MCAST], [
-AC_CACHE_CHECK([for struct ip_mreq], [apr_cv_struct_ipmreq], [
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <netinet/in.h>
-], [
-    struct ip_mreq mip;
-    mip.imr_interface.s_addr = INADDR_ANY;
-], [apr_cv_struct_ipmreq=yes], [apr_cv_struct_ipmreq=no], [apr_cv_struct_ipmreq=yes])])
-
-if test $apr_cv_struct_ipmreq = yes; then
-   AC_DEFINE([HAVE_STRUCT_IPMREQ], 1, [Define if struct impreq was found])
-fi
-])
-
-dnl
-dnl APR_CHECK_H_ERRNO_FLAG
-dnl
-dnl checks which flags are necessary for <netdb.h> to define h_errno
-dnl
-AC_DEFUN([APR_CHECK_H_ERRNO_FLAG], [
-  AC_MSG_CHECKING([for h_errno in netdb.h])
-  AC_CACHE_VAL(ac_cv_h_errno_cppflags,[
-    APR_H_ERRNO_COMPILE_CHECK
-    if test "$ac_cv_h_errno_cppflags" = "no"; then
-      ac_save="$CPPFLAGS"
-      for flag in _XOPEN_SOURCE_EXTENDED; do
-        APR_H_ERRNO_COMPILE_CHECK($flag)
-        if test "$ac_cv_h_errno_cppflags" != "no"; then
-          break
-        fi
-      done
-      CPPFLAGS="$ac_save"
-    fi
-  ])
-  if test "$ac_cv_h_errno_cppflags" != "no"; then
-    if test "$ac_cv_h_errno_cppflags" != "yes"; then
-      CPPFLAGS="-D$ac_cv_h_errno_cppflags $CPPFLAGS"
-      AC_MSG_RESULT([yes, with -D$ac_cv_h_errno_cppflags])
-    else
-      AC_MSG_RESULT([$ac_cv_h_errno_cppflags])
-    fi
-  else
-    AC_MSG_RESULT([$ac_cv_h_errno_cppflags])
-  fi
-])
-
-
-AC_DEFUN([APR_EBCDIC], [
-  AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[
-  AC_TRY_RUN( [
-int main(void) { 
-  return (unsigned char)'A' != (unsigned char)0xC1; 
-} 
-],[
-  ac_cv_ebcdic="yes"
-],[
-  ac_cv_ebcdic="no"
-],[
-  ac_cv_ebcdic="no"
-])])
-  if test "$ac_cv_ebcdic" = "yes"; then
-    apr_charset_ebcdic=1
-  else
-    apr_charset_ebcdic=0
-  fi
-  AC_SUBST(apr_charset_ebcdic)
-])
-

Copied: vendor/apache/apr/1.5.2/build/apr_network.m4 (from rev 9273, vendor/apache/apr/dist/build/apr_network.m4)
===================================================================
--- vendor/apache/apr/1.5.2/build/apr_network.m4	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/apr_network.m4	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,964 @@
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Licensed to the Apache Software Foundation (ASF) under one or more
+dnl contributor license agreements.  See the NOTICE file distributed with
+dnl this work for additional information regarding copyright ownership.
+dnl The ASF licenses this file to You under the Apache License, Version 2.0
+dnl (the "License"); you may not use this file except in compliance with
+dnl the License.  You may obtain a copy of the License at
+dnl
+dnl     http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
+dnl -----------------------------------------------------------------
+dnl apr_network.m4: APR's autoconf macros for testing network support
+dnl
+
+dnl
+dnl check for type in_addr
+dnl
+AC_DEFUN(APR_TYPE_IN_ADDR,[
+  AC_CACHE_CHECK(for type in_addr, ac_cv_type_in_addr,[
+  AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+],[
+ struct in_addr arg;
+ arg.s_addr = htonl(INADDR_ANY);
+], [ ac_cv_type_in_addr="yes"] , [
+ac_cv_type_in_addr="no"])
+])
+])
+
+dnl
+dnl check for working getaddrinfo()
+dnl
+dnl Note that if the system doesn't have gai_strerror(), we
+dnl can't use getaddrinfo() because we can't get strings
+dnl describing the error codes.
+dnl
+AC_DEFUN([APR_CHECK_WORKING_GETADDRINFO], [
+  AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,[
+  AC_TRY_RUN( [
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+int main(void) {
+    struct addrinfo hints, *ai;
+    int error;
+
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_socktype = SOCK_STREAM;
+    error = getaddrinfo("127.0.0.1", NULL, &hints, &ai);
+    if (error) {
+        exit(1);
+    }
+    if (ai->ai_addr->sa_family != AF_INET) {
+        exit(1);
+    }
+    exit(0);
+}
+],[
+  ac_cv_working_getaddrinfo="yes"
+],[
+  ac_cv_working_getaddrinfo="no"
+],[
+  ac_cv_working_getaddrinfo="yes"
+])])
+if test "$ac_cv_working_getaddrinfo" = "yes"; then
+  if test "$ac_cv_func_gai_strerror" != "yes"; then
+    ac_cv_working_getaddrinfo="no"
+  else
+    AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if getaddrinfo exists and works well enough for APR])
+  fi
+fi
+])
+
+dnl Check whether the AI_ADDRCONFIG flag can be used with getaddrinfo
+AC_DEFUN([APR_CHECK_GETADDRINFO_ADDRCONFIG], [
+  AC_CACHE_CHECK(for working AI_ADDRCONFIG, apr_cv_gai_addrconfig, [
+  AC_TRY_RUN([
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+int main(int argc, char **argv) {
+    struct addrinfo hints, *ai;
+
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_socktype = SOCK_STREAM;
+    hints.ai_flags = AI_ADDRCONFIG;
+    return getaddrinfo("localhost", NULL, &hints, &ai) != 0;
+}], [apr_cv_gai_addrconfig=yes], 
+    [apr_cv_gai_addrconfig=no],
+    [apr_cv_gai_addrconfig=no])])
+
+if test $apr_cv_gai_addrconfig = yes; then
+   AC_DEFINE(HAVE_GAI_ADDRCONFIG, 1, [Define if getaddrinfo accepts the AI_ADDRCONFIG flag])
+fi
+])
+
+dnl
+dnl check for working getnameinfo()
+dnl
+AC_DEFUN([APR_CHECK_WORKING_GETNAMEINFO], [
+  AC_CACHE_CHECK(for working getnameinfo, ac_cv_working_getnameinfo,[
+  AC_TRY_RUN( [
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+int main(void) {
+    struct sockaddr_in sa;
+    char hbuf[256];
+    int error;
+
+    sa.sin_family = AF_INET;
+    sa.sin_port = 0;
+    sa.sin_addr.s_addr = inet_addr("127.0.0.1");
+#ifdef SIN6_LEN
+    sa.sin_len = sizeof(sa);
+#endif
+
+    error = getnameinfo((const struct sockaddr *)&sa, sizeof(sa),
+                        hbuf, 256, NULL, 0,
+                        NI_NUMERICHOST);
+    if (error) {
+        exit(1);
+    } else {
+        exit(0);
+    }
+}
+],[
+  ac_cv_working_getnameinfo="yes"
+],[
+  ac_cv_working_getnameinfo="no"
+],[
+  ac_cv_working_getnameinfo="yes"
+])])
+if test "$ac_cv_working_getnameinfo" = "yes"; then
+  AC_DEFINE(HAVE_GETNAMEINFO, 1, [Define if getnameinfo exists])
+fi
+])
+
+dnl
+dnl check for negative error codes for getaddrinfo()
+dnl
+AC_DEFUN([APR_CHECK_NEGATIVE_EAI], [
+  AC_CACHE_CHECK(for negative error codes for getaddrinfo, ac_cv_negative_eai,[
+  AC_TRY_RUN( [
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+int main(void) {
+    if (EAI_ADDRFAMILY < 0) {
+        exit(0);
+    }
+    exit(1);
+}
+],[
+  ac_cv_negative_eai="yes"
+],[
+  ac_cv_negative_eai="no"
+],[
+  ac_cv_negative_eai="no"
+])])
+if test "$ac_cv_negative_eai" = "yes"; then
+  AC_DEFINE(NEGATIVE_EAI, 1, [Define if EAI_ error codes from getaddrinfo are negative])
+fi
+])
+
+dnl
+dnl Checks the definition of gethostbyname_r and gethostbyaddr_r
+dnl which are different for glibc, solaris and assorted other operating
+dnl systems
+dnl
+dnl Note that this test is executed too early to see if we have all of
+dnl the headers.
+AC_DEFUN([APR_CHECK_GETHOSTBYNAME_R_STYLE], [
+
+dnl Try and compile a glibc2 gethostbyname_r piece of code, and set the
+dnl style of the routines to glibc2 on success
+AC_CACHE_CHECK([style of gethostbyname_r routine], ac_cv_gethostbyname_r_style,
+APR_TRY_COMPILE_NO_WARNING([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+],[
+int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0, 
+                          (char *) 0, 0, (struct hostent **) 0, &tmp);
+/* use tmp to suppress the warning */
+tmp=0;
+], ac_cv_gethostbyname_r_style=glibc2, ac_cv_gethostbyname_r_style=none))
+
+if test "$ac_cv_gethostbyname_r_style" = "glibc2"; then
+    AC_DEFINE(GETHOSTBYNAME_R_GLIBC2, 1, [Define if gethostbyname_r has the glibc style])
+fi
+
+AC_CACHE_CHECK([3rd argument to the gethostbyname_r routines], ac_cv_gethostbyname_r_arg,
+APR_TRY_COMPILE_NO_WARNING([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+],[
+int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0, 
+                          (struct hostent_data *) 0);
+/* use tmp to suppress the warning */
+tmp=0;
+], ac_cv_gethostbyname_r_arg=hostent_data, ac_cv_gethostbyname_r_arg=char))
+
+if test "$ac_cv_gethostbyname_r_arg" = "hostent_data"; then
+    AC_DEFINE(GETHOSTBYNAME_R_HOSTENT_DATA, 1, [Define if gethostbyname_r has the hostent_data for the third argument])
+fi
+])
+
+dnl
+dnl Checks the definition of getservbyname_r
+dnl which are different for glibc, solaris and assorted other operating
+dnl systems
+dnl
+dnl Note that this test is executed too early to see if we have all of
+dnl the headers.
+AC_DEFUN([APR_CHECK_GETSERVBYNAME_R_STYLE], [
+
+dnl Try and compile a glibc2 getservbyname_r piece of code, and set the
+dnl style of the routines to glibc2 on success
+AC_CACHE_CHECK([style of getservbyname_r routine], ac_cv_getservbyname_r_style, [
+APR_TRY_COMPILE_NO_WARNING([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+],[
+int tmp = getservbyname_r((const char *) 0, (const char *) 0,
+                          (struct servent *) 0, (char *) 0, 0,
+                          (struct servent **) 0);
+/* use tmp to suppress the warning */
+tmp=0;
+], ac_cv_getservbyname_r_style=glibc2, ac_cv_getservbyname_r_style=none)
+
+if test "$ac_cv_getservbyname_r_style" = "none"; then
+    dnl Try and compile a Solaris getservbyname_r piece of code, and set the
+    dnl style of the routines to solaris on success
+    APR_TRY_COMPILE_NO_WARNING([
+    #ifdef HAVE_SYS_TYPES_H
+    #include <sys/types.h>
+    #endif
+    #ifdef HAVE_NETINET_IN_H
+    #include <netinet/in.h>
+    #endif
+    #ifdef HAVE_ARPA_INET_H
+    #include <arpa/inet.h>
+    #endif
+    #ifdef HAVE_NETDB_H
+    #include <netdb.h>
+    #endif
+    #ifdef HAVE_STDLIB_H
+    #include <stdlib.h>
+    #endif
+    ],[
+    struct servent *tmp = getservbyname_r((const char *) 0, (const char *) 0,
+                                          (struct servent *) 0, (char *) 0, 0);
+    /* use tmp to suppress the warning */
+    tmp=NULL;
+    ], ac_cv_getservbyname_r_style=solaris, ac_cv_getservbyname_r_style=none)
+fi
+
+if test "$ac_cv_getservbyname_r_style" = "none"; then
+    dnl Try and compile a OSF/1 getservbyname_r piece of code, and set the
+    dnl style of the routines to osf1 on success
+    APR_TRY_COMPILE_NO_WARNING([
+    #ifdef HAVE_SYS_TYPES_H
+    #include <sys/types.h>
+    #endif
+    #ifdef HAVE_NETINET_IN_H
+    #include <netinet/in.h>
+    #endif
+    #ifdef HAVE_ARPA_INET_H
+    #include <arpa/inet.h>
+    #endif
+    #ifdef HAVE_NETDB_H
+    #include <netdb.h>
+    #endif
+    #ifdef HAVE_STDLIB_H
+    #include <stdlib.h>
+    #endif
+    ],[
+    int tmp = getservbyname_r((const char *) 0, (const char *) 0,
+                              (struct servent *) 0, (struct servent_data *) 0);
+    /* use tmp to suppress the warning */
+    tmp=0;
+    ], ac_cv_getservbyname_r_style=osf1, ac_cv_getservbyname_r_style=none)
+fi
+])
+
+if test "$ac_cv_getservbyname_r_style" = "glibc2"; then
+    AC_DEFINE(GETSERVBYNAME_R_GLIBC2, 1, [Define if getservbyname_r has the glibc style])
+elif test "$ac_cv_getservbyname_r_style" = "solaris"; then
+    AC_DEFINE(GETSERVBYNAME_R_SOLARIS, 1, [Define if getservbyname_r has the Solaris style])
+elif test "$ac_cv_getservbyname_r_style" = "osf1"; then
+    AC_DEFINE(GETSERVBYNAME_R_OSF1, 1, [Define if getservbyname_r has the OSF/1 style])
+fi
+])
+
+dnl
+dnl see if TCP_NODELAY setting is inherited from listening sockets
+dnl
+AC_DEFUN([APR_CHECK_TCP_NODELAY_INHERITED], [
+  AC_CACHE_CHECK(if TCP_NODELAY setting is inherited from listening sockets, ac_cv_tcp_nodelay_inherited,[
+  AC_TRY_RUN( [
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+int main(void) {
+    int listen_s, connected_s, client_s;
+    int listen_port, rc;
+    struct sockaddr_in sa;
+    socklen_t sa_len;
+    socklen_t option_len;
+    int option;
+
+    listen_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (listen_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    option = 1;
+    rc = setsockopt(listen_s, IPPROTO_TCP, TCP_NODELAY, &option, sizeof option);
+    if (rc < 0) {
+        perror("setsockopt TCP_NODELAY");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave port 0 to get ephemeral */
+    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("bind for ephemeral port");
+        exit(1);
+    }
+    /* find ephemeral port */
+    sa_len = sizeof(sa);
+    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (rc < 0) {
+        perror("getsockname");
+        exit(1);
+    }
+    listen_port = sa.sin_port;
+    rc = listen(listen_s, 5);
+    if (rc < 0) {
+        perror("listen");
+        exit(1);
+    }
+    client_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (client_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+    sa.sin_port   = listen_port;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave sin_addr all zeros to use loopback */
+    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("connect");
+        exit(1);
+    }
+    sa_len = sizeof sa;
+    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (connected_s < 0) {
+        perror("accept");
+        exit(1);
+    }
+    option_len = sizeof option;
+    rc = getsockopt(connected_s, IPPROTO_TCP, TCP_NODELAY, &option, &option_len);
+    if (rc < 0) {
+        perror("getsockopt");
+        exit(1);
+    }
+    if (!option) {
+        fprintf(stderr, "TCP_NODELAY is not set in the child.\n");
+        exit(1);
+    }
+    return 0;
+}
+],[
+    ac_cv_tcp_nodelay_inherited="yes"
+],[
+    ac_cv_tcp_nodelay_inherited="no"
+],[
+    ac_cv_tcp_nodelay_inherited="yes"
+])])
+if test "$ac_cv_tcp_nodelay_inherited" = "yes"; then
+    tcp_nodelay_inherited=1
+else
+    tcp_nodelay_inherited=0
+fi
+])
+
+dnl
+dnl Determine whether TCP_NODELAY and TCP_CORK can both be set
+dnl on a TCP socket.
+dnl
+AC_DEFUN([APR_CHECK_TCP_NODELAY_WITH_CORK], [
+AC_CACHE_CHECK([whether TCP_NODELAY and TCP_CORK can both be enabled],
+[apr_cv_tcp_nodelay_with_cork],
+[AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+]], [[
+    int fd, flag, rc;
+
+    fd = socket(AF_INET, SOCK_STREAM, 0);
+    if (fd < 0) {
+       exit(1);
+    }
+
+    flag = 1;
+    rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof flag);
+    if (rc < 0) {
+        perror("setsockopt TCP_NODELAY");
+        exit(2);
+    }
+
+    flag = 1;
+    rc = setsockopt(fd, IPPROTO_TCP, TCP_CORK, &flag, sizeof flag);
+    if (rc < 0) {
+        perror("setsockopt TCP_CORK");
+        exit(3);
+    }
+
+    exit(0);
+]])], [apr_cv_tcp_nodelay_with_cork=yes], [apr_cv_tcp_nodelay_with_cork=no])])
+
+if test "$apr_cv_tcp_nodelay_with_cork" = "yes"; then
+  AC_DEFINE([HAVE_TCP_NODELAY_WITH_CORK], 1,
+            [Define if TCP_NODELAY and TCP_CORK can be enabled at the same time])
+fi
+])
+
+
+dnl
+dnl see if O_NONBLOCK setting is inherited from listening sockets
+dnl
+AC_DEFUN([APR_CHECK_O_NONBLOCK_INHERITED], [
+  AC_CACHE_CHECK(if O_NONBLOCK setting is inherited from listening sockets, ac_cv_o_nonblock_inherited,[
+  AC_TRY_RUN( [
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+int main(void) {
+    int listen_s, connected_s, client_s;
+    int listen_port, rc;
+    struct sockaddr_in sa;
+    socklen_t sa_len;
+    fd_set fds;
+    struct timeval tv;
+
+    listen_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (listen_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave port 0 to get ephemeral */
+    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("bind for ephemeral port");
+        exit(1);
+    }
+    /* find ephemeral port */
+    sa_len = sizeof(sa);
+    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (rc < 0) {
+        perror("getsockname");
+        exit(1);
+    }
+    listen_port = sa.sin_port;
+    rc = listen(listen_s, 5);
+    if (rc < 0) {
+        perror("listen");
+        exit(1);
+    }
+    rc = fcntl(listen_s, F_SETFL, O_NONBLOCK);
+    if (rc < 0) {
+        perror("fcntl(F_SETFL)");
+        exit(1);
+    }
+    client_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (client_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+    sa.sin_port   = listen_port;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave sin_addr all zeros to use loopback */
+    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("connect");
+        exit(1);
+    }
+    sa_len = sizeof sa;
+    /* 1 second select timeout */
+    tv.tv_sec = 1;
+    tv.tv_usec = 0;
+    /* Set up fd set */
+    FD_ZERO(&fds);
+    FD_SET(listen_s, &fds);
+    /* Wait for socket to become readable */
+    rc = select(listen_s + 1, &fds, NULL, NULL, &tv);
+    if (rc < 0) {
+        perror("select");
+        exit(1);
+    }
+    if (rc == 0) {
+        fprintf(stderr, "Socket failed to become readable (timeout)\n");
+        exit(1);
+    }
+    if (!FD_ISSET(listen_s, &fds)) {
+        fprintf(stderr, "Socket failed to become readable (selected another fd)\n");
+        exit(1);
+    }
+    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (connected_s < 0) {
+        perror("accept");
+        exit(1);
+    }
+    rc = fcntl(connected_s, F_GETFL, 0);
+    if (rc < 0) {
+        perror("fcntl(F_GETFL)");
+        exit(1);
+    }
+    if (!(rc & O_NONBLOCK)) {
+        fprintf(stderr, "O_NONBLOCK is not set in the child.\n");
+        exit(1);
+    }
+    return 0;
+}
+],[
+    ac_cv_o_nonblock_inherited="yes"
+],[
+    ac_cv_o_nonblock_inherited="no"
+],[
+    ac_cv_o_nonblock_inherited="yes"
+])])
+if test "$ac_cv_o_nonblock_inherited" = "yes"; then
+    o_nonblock_inherited=1
+else
+    o_nonblock_inherited=0
+fi
+])
+
+dnl 
+dnl check for socklen_t, fall back to unsigned int
+dnl
+AC_DEFUN([APR_CHECK_SOCKLEN_T], [
+AC_CACHE_CHECK(for socklen_t, ac_cv_socklen_t,[
+AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+],[
+socklen_t foo = (socklen_t) 0;
+],[
+    ac_cv_socklen_t=yes
+],[
+    ac_cv_socklen_t=no
+])
+])
+
+if test "$ac_cv_socklen_t" = "yes"; then
+  AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t])
+fi
+])
+
+
+AC_DEFUN([APR_CHECK_INET_ADDR], [
+AC_CACHE_CHECK(for inet_addr, ac_cv_func_inet_addr,[
+AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+],[
+inet_addr("127.0.0.1");
+],[
+    ac_cv_func_inet_addr=yes
+],[
+    ac_cv_func_inet_addr=no
+])
+])
+
+if test "$ac_cv_func_inet_addr" = "yes"; then
+  have_inet_addr=1
+else
+  have_inet_addr=0
+fi
+])
+
+
+AC_DEFUN([APR_CHECK_INET_NETWORK], [
+AC_CACHE_CHECK(for inet_network, ac_cv_func_inet_network,[
+AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+],[
+inet_network("127.0.0.1");
+],[
+    ac_cv_func_inet_network=yes
+],[
+    ac_cv_func_inet_network=no
+])
+])
+
+if test "$ac_cv_func_inet_network" = "yes"; then
+  have_inet_network=1
+else
+  have_inet_network=0
+fi
+])
+
+dnl Check for presence of struct sockaddr_storage.
+AC_DEFUN([APR_CHECK_SOCKADDR_STORAGE], [
+AC_CACHE_CHECK(for sockaddr_storage, apr_cv_define_sockaddr_storage,[
+AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+],[struct sockaddr_storage sa;],
+[apr_cv_define_sockaddr_storage=yes],
+[apr_cv_define_sockaddr_storage=no])])
+
+if test "$apr_cv_define_sockaddr_storage" = "yes"; then
+  have_sa_storage=1
+else
+  have_sa_storage=0
+fi
+AC_SUBST(have_sa_storage)
+])
+
+dnl Check for presence of struct sockaddr_in6.
+AC_DEFUN([APR_CHECK_SOCKADDR_IN6], [
+AC_CACHE_CHECK(for sockaddr_in6, ac_cv_define_sockaddr_in6,[
+AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+],[
+struct sockaddr_in6 sa;
+],[
+    ac_cv_define_sockaddr_in6=yes
+],[
+    ac_cv_define_sockaddr_in6=no
+])
+])
+
+if test "$ac_cv_define_sockaddr_in6" = "yes"; then
+  have_sockaddr_in6=1
+else
+  have_sockaddr_in6=0
+fi
+])
+
+dnl
+dnl APR_H_ERRNO_COMPILE_CHECK
+dnl
+AC_DEFUN([APR_H_ERRNO_COMPILE_CHECK], [
+  if test x$1 != x; then
+    CPPFLAGS="-D$1 $CPPFLAGS"
+  fi
+  AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+],[
+int h_e = h_errno;
+],[
+  if test x$1 != x; then
+    ac_cv_h_errno_cppflags="$1"
+  else
+    ac_cv_h_errno_cppflags=yes
+  fi
+],[
+  ac_cv_h_errno_cppflags=no
+])])
+
+
+dnl
+dnl APR_CHECK_SCTP
+dnl
+dnl check for presence of SCTP protocol support
+dnl
+AC_DEFUN([APR_CHECK_SCTP],
+[
+  AC_CACHE_CHECK([whether SCTP is supported], [apr_cv_sctp], [
+  AC_TRY_RUN([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_SCTP_H
+#include <netinet/sctp.h>
+#endif
+#ifdef HAVE_NETINET_SCTP_UIO_H
+#include <netinet/sctp_uio.h>
+#endif
+#include <stdlib.h>
+int main(void) {
+    int s, opt = 1;
+    if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)) < 0)
+       exit(1);
+    if (setsockopt(s, IPPROTO_SCTP, SCTP_NODELAY, &opt, sizeof(int)) < 0)
+       exit(2);
+    exit(0);
+}], [apr_cv_sctp=yes], [apr_cv_sctp=no], [apr_cv_sctp=no])])
+
+if test "$apr_cv_sctp" = "yes"; then
+    have_sctp=1
+else
+    have_sctp=0
+fi
+])
+
+dnl APR_CHECK_MCAST: check for multicast interfaces
+AC_DEFUN([APR_CHECK_MCAST], [
+AC_CACHE_CHECK([for struct ip_mreq], [apr_cv_struct_ipmreq], [
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <netinet/in.h>
+], [
+    struct ip_mreq mip;
+    mip.imr_interface.s_addr = INADDR_ANY;
+], [apr_cv_struct_ipmreq=yes], [apr_cv_struct_ipmreq=no], [apr_cv_struct_ipmreq=yes])])
+
+if test $apr_cv_struct_ipmreq = yes; then
+   AC_DEFINE([HAVE_STRUCT_IPMREQ], 1, [Define if struct impreq was found])
+fi
+])
+
+dnl
+dnl APR_CHECK_H_ERRNO_FLAG
+dnl
+dnl checks which flags are necessary for <netdb.h> to define h_errno
+dnl
+AC_DEFUN([APR_CHECK_H_ERRNO_FLAG], [
+  AC_MSG_CHECKING([for h_errno in netdb.h])
+  AC_CACHE_VAL(ac_cv_h_errno_cppflags,[
+    APR_H_ERRNO_COMPILE_CHECK
+    if test "$ac_cv_h_errno_cppflags" = "no"; then
+      ac_save="$CPPFLAGS"
+      for flag in _XOPEN_SOURCE_EXTENDED; do
+        APR_H_ERRNO_COMPILE_CHECK($flag)
+        if test "$ac_cv_h_errno_cppflags" != "no"; then
+          break
+        fi
+      done
+      CPPFLAGS="$ac_save"
+    fi
+  ])
+  if test "$ac_cv_h_errno_cppflags" != "no"; then
+    if test "$ac_cv_h_errno_cppflags" != "yes"; then
+      CPPFLAGS="-D$ac_cv_h_errno_cppflags $CPPFLAGS"
+      AC_MSG_RESULT([yes, with -D$ac_cv_h_errno_cppflags])
+    else
+      AC_MSG_RESULT([$ac_cv_h_errno_cppflags])
+    fi
+  else
+    AC_MSG_RESULT([$ac_cv_h_errno_cppflags])
+  fi
+])
+
+
+AC_DEFUN([APR_EBCDIC], [
+  AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[
+  AC_TRY_RUN( [
+int main(void) { 
+  return (unsigned char)'A' != (unsigned char)0xC1; 
+} 
+],[
+  ac_cv_ebcdic="yes"
+],[
+  ac_cv_ebcdic="no"
+],[
+  ac_cv_ebcdic="no"
+])])
+  if test "$ac_cv_ebcdic" = "yes"; then
+    apr_charset_ebcdic=1
+  else
+    apr_charset_ebcdic=0
+  fi
+  AC_SUBST(apr_charset_ebcdic)
+])
+

Deleted: vendor/apache/apr/1.5.2/build/apr_rules.mk.in
===================================================================
--- vendor/apache/apr/dist/build/apr_rules.mk.in	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/apr_rules.mk.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,208 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-#
-# rules.mk: standard rules for APR
-#
-
- at SET_MAKE@
-
-#
-# Configuration variables
-#
-apr_builddir=@apr_builddir@
-apr_builders=@apr_builders@
-top_builddir=@apr_builddir@
-
-# Some layouts require knowing what version we are at.
-APR_MAJOR_VERSION=@APR_MAJOR_VERSION@
-APR_DOTTED_VERSION=@APR_DOTTED_VERSION@
-
-CC=@CC@
-RM=@RM@
-AWK=@AWK@
-SHELL=@SHELL@
-LIBTOOL=@LIBTOOL@
-
-# compilation and linking flags that are supposed to be set only by the user.
-# configure adds to them for tests, but we restore them at the end.
-#
-CFLAGS=@CFLAGS@
-CPPFLAGS=@CPPFLAGS@
-LDFLAGS=@LDFLAGS@
-LIBS=@LIBS@
-DEFS=@DEFS@
-
-# anything added to the standard flags by configure is moved to EXTRA_*
-# at the end of the process.
-#
-EXTRA_CFLAGS=@EXTRA_CFLAGS@
-EXTRA_CPPFLAGS=@EXTRA_CPPFLAGS@
-EXTRA_LDFLAGS=@EXTRA_LDFLAGS@
-EXTRA_LIBS=@EXTRA_LIBS@
-EXTRA_INCLUDES=@EXTRA_INCLUDES@
-
-# NOTEST_* are flags and libraries that can be added by the user without
-# causing them to be used in configure tests (necessary for things like
-# -Werror and other strict warnings that maintainers like to use).
-#
-NOTEST_CFLAGS=@NOTEST_CFLAGS@
-NOTEST_CPPFLAGS=@NOTEST_CPPFLAGS@
-NOTEST_LDFLAGS=@NOTEST_LDFLAGS@
-NOTEST_LIBS=@NOTEST_LIBS@
-
-# Finally, combine all of the flags together in the proper order so that
-# the user-defined flags can always override the configure ones, if needed.
-# Note that includes are listed after the flags because -I options have
-# left-to-right precedence and CPPFLAGS may include user-defined overrides.
-#
-ALL_CFLAGS   = $(EXTRA_CFLAGS) $(NOTEST_CFLAGS) $(CFLAGS)
-ALL_CPPFLAGS = $(DEFS) $(EXTRA_CPPFLAGS) $(NOTEST_CPPFLAGS) $(CPPFLAGS)
-ALL_LDFLAGS  = $(EXTRA_LDFLAGS) $(NOTEST_LDFLAGS) $(LDFLAGS)
-ALL_LIBS     = $(LIBS) $(NOTEST_LIBS) $(EXTRA_LIBS)
-ALL_INCLUDES = $(INCLUDES) $(EXTRA_INCLUDES)
-
-LTFLAGS      = @LTFLAGS@
-LT_LDFLAGS   = @LT_LDFLAGS@
-
-# The set of object files that will be linked into the target library.
-# The build-outputs.mk specifies a different set for each platform. The
-# configure script will select the appropriate set.
-#
-OBJECTS      = @OBJECTS_PLATFORM@
-
-#
-# Basic macro setup
-#
-COMPILE      = $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(ALL_INCLUDES)
-LT_COMPILE   = @lt_compile@
-
-LINK         = @link@
-
-APR_MKDIR        = $(apr_builders)/mkdir.sh
-APR_MKEXPORT     = $(AWK) -f $(apr_builders)/make_exports.awk
-APR_MKVAREXPORT  = $(AWK) -f $(apr_builders)/make_var_export.awk
-MKDEP            = @MKDEP@
-
-#
-# Standard build rules
-#
-all: all-recursive
-depend: depend-recursive
-clean: clean-recursive
-distclean: distclean-recursive
-extraclean: extraclean-recursive
-
-install: all-recursive
-
-
-all-recursive depend-recursive:
-	@otarget=`echo $@ | sed s/-recursive//`; \
-	list='$(SOURCE_DIRS)'; \
-	for i in $$list; do \
-	    if test -f "$$i/Makefile"; then \
-		target="$$otarget"; \
-		echo "Making $$target in $$i"; \
-		if test "$$i" = "."; then \
-		    made_local=yes; \
-		    target="local-$$target"; \
-		fi; \
-		(cd $$i && $(MAKE) $$target) || exit 1; \
-	    fi; \
-	done; \
-        if test "$$otarget" = "all" && test -z "$(TARGETS)"; then \
-	    made_local=yes; \
-	fi; \
-	if test "$$made_local" != "yes"; then \
-	    $(MAKE) "local-$$otarget" || exit 1; \
-	fi
-
-clean-recursive distclean-recursive extraclean-recursive:
-	@otarget=`echo $@ | sed s/-recursive//`; \
-	list='$(CLEAN_SUBDIRS)'; \
-	for i in $$list; do \
-	    if test -f "$$i/Makefile"; then \
-		target="$$otarget"; \
-		echo "Making $$target in $$i"; \
-		if test "$$i" = "."; then \
-		    made_local=yes; \
-		    target="local-$$target"; \
-		fi; \
-		(cd $$i && $(MAKE) $$target); \
-	    fi; \
-	done; \
-        if test "$$otarget" = "all" && test -z "$(TARGETS)"; then \
-	    made_local=yes; \
-	fi; \
-	if test "$$made_local" != "yes"; then \
-	    $(MAKE) "local-$$otarget"; \
-	fi
-
-# autoconf 2.5x is creating a 'autom4te.cache' directory
-# In case someone ran autoconf by hand, get rid of that directory
-# as well.
-local-clean: x-local-clean
-	@list='. $(SOURCE_DIRS)'; \
-	for i in $$list; do \
-	    echo $(RM) -f $$i/*.o $$i/*.lo $$i/*.a $$i/*.la $$i/*.so $$i/*.obj; \
-	    $(RM) -f $$i/*.o $$i/*.lo $$i/*.a $$i/*.la $$i/*.so $$i/*.obj; \
-	    echo $(RM) -rf $$i/.libs; \
-	    $(RM) -rf $$i/.libs; \
-        done
-	$(RM) -f $(CLEAN_TARGETS) $(PROGRAMS)
-	$(RM) -rf autom4te.cache
-
-local-distclean: local-clean x-local-distclean
-	$(RM) -f Makefile $(DISTCLEAN_TARGETS)
-
-local-extraclean: local-distclean x-local-extraclean
-	@if test -n "$(EXTRACLEAN_TARGETS)"; then \
-	    echo $(RM) -f $(EXTRACLEAN_TARGETS) ; \
-	    $(RM) -f $(EXTRACLEAN_TARGETS) ; \
-	fi
-
-local-all: $(TARGETS)
-
-local-depend: x-local-depend
-	@if test -n "`ls $(srcdir)/*.c 2> /dev/null`"; then \
-		$(RM) -f .deps; \
-		list='$(srcdir)/*.c'; \
-		for i in $$list; do \
-			$(MKDEP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) $$i | sed 's/\.o:/.lo:/' >> .deps; \
-		done; \
-	fi
-
-# to be filled in by the actual Makefile
-x-local-depend x-local-clean x-local-distclean x-local-extraclean:
-
-#
-# Implicit rules for creating outputs from input files
-#
-.SUFFIXES:
-.SUFFIXES: .c .lo .o
-
-.c.o:
-	$(COMPILE) -c $<
-
-.c.lo:
-	$(LT_COMPILE)
-
-.PHONY: all all-recursive local-all install \
-	depend depend-recursive local-depend x-local-depend \
-	clean clean-recursive local-clean x-local-clean \
-	distclean distclean-recursive local-distclean x-local-distclean \
-	extraclean extraclean-recursive local-extraclean x-local-extraclean

Copied: vendor/apache/apr/1.5.2/build/apr_rules.mk.in (from rev 9273, vendor/apache/apr/dist/build/apr_rules.mk.in)
===================================================================
--- vendor/apache/apr/1.5.2/build/apr_rules.mk.in	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/apr_rules.mk.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,212 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+#
+# rules.mk: standard rules for APR
+#
+
+ at SET_MAKE@
+
+#
+# Configuration variables
+#
+apr_builddir=@apr_builddir@
+apr_builders=@apr_builders@
+top_builddir=@apr_builddir@
+
+# Some layouts require knowing what version we are at.
+APR_MAJOR_VERSION=@APR_MAJOR_VERSION@
+APR_DOTTED_VERSION=@APR_DOTTED_VERSION@
+
+CC=@CC@
+RM=@RM@
+AWK=@AWK@
+SHELL=@SHELL@
+LIBTOOL=@LIBTOOL@
+
+# compilation and linking flags that are supposed to be set only by the user.
+# configure adds to them for tests, but we restore them at the end.
+#
+CFLAGS=@CFLAGS@
+CPPFLAGS=@CPPFLAGS@
+LDFLAGS=@LDFLAGS@
+LIBS=@LIBS@
+DEFS=@DEFS@
+
+# anything added to the standard flags by configure is moved to EXTRA_*
+# at the end of the process.
+#
+EXTRA_CFLAGS=@EXTRA_CFLAGS@
+EXTRA_CPPFLAGS=@EXTRA_CPPFLAGS@
+EXTRA_LDFLAGS=@EXTRA_LDFLAGS@
+EXTRA_LIBS=@EXTRA_LIBS@
+EXTRA_INCLUDES=@EXTRA_INCLUDES@
+
+# CPPFLAGS which are used only while building APR itself
+#
+INTERNAL_CPPFLAGS=@INTERNAL_CPPFLAGS@
+
+# NOTEST_* are flags and libraries that can be added by the user without
+# causing them to be used in configure tests (necessary for things like
+# -Werror and other strict warnings that maintainers like to use).
+#
+NOTEST_CFLAGS=@NOTEST_CFLAGS@
+NOTEST_CPPFLAGS=@NOTEST_CPPFLAGS@
+NOTEST_LDFLAGS=@NOTEST_LDFLAGS@
+NOTEST_LIBS=@NOTEST_LIBS@
+
+# Finally, combine all of the flags together in the proper order so that
+# the user-defined flags can always override the configure ones, if needed.
+# Note that includes are listed after the flags because -I options have
+# left-to-right precedence and CPPFLAGS may include user-defined overrides.
+#
+ALL_CFLAGS   = $(EXTRA_CFLAGS) $(NOTEST_CFLAGS) $(CFLAGS)
+ALL_CPPFLAGS = $(DEFS) $(INTERNAL_CPPFLAGS) $(EXTRA_CPPFLAGS) $(NOTEST_CPPFLAGS) $(CPPFLAGS)
+ALL_LDFLAGS  = $(EXTRA_LDFLAGS) $(NOTEST_LDFLAGS) $(LDFLAGS)
+ALL_LIBS     = $(LIBS) $(NOTEST_LIBS) $(EXTRA_LIBS)
+ALL_INCLUDES = $(INCLUDES) $(EXTRA_INCLUDES)
+
+LTFLAGS      = @LTFLAGS@
+LT_LDFLAGS   = @LT_LDFLAGS@
+
+# The set of object files that will be linked into the target library.
+# The build-outputs.mk specifies a different set for each platform. The
+# configure script will select the appropriate set.
+#
+OBJECTS      = @OBJECTS_PLATFORM@
+
+#
+# Basic macro setup
+#
+COMPILE      = $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(ALL_INCLUDES)
+LT_COMPILE   = @lt_compile@
+
+LINK         = @link@
+
+APR_MKDIR        = $(apr_builders)/mkdir.sh
+APR_MKEXPORT     = $(AWK) -f $(apr_builders)/make_exports.awk
+APR_MKVAREXPORT  = $(AWK) -f $(apr_builders)/make_var_export.awk
+MKDEP            = @MKDEP@
+
+#
+# Standard build rules
+#
+all: all-recursive
+depend: depend-recursive
+clean: clean-recursive
+distclean: distclean-recursive
+extraclean: extraclean-recursive
+
+install: all-recursive
+
+
+all-recursive depend-recursive:
+	@otarget=`echo $@ | sed s/-recursive//`; \
+	list='$(SOURCE_DIRS)'; \
+	for i in $$list; do \
+	    if test -f "$$i/Makefile"; then \
+		target="$$otarget"; \
+		echo "Making $$target in $$i"; \
+		if test "$$i" = "."; then \
+		    made_local=yes; \
+		    target="local-$$target"; \
+		fi; \
+		(cd $$i && $(MAKE) $$target) || exit 1; \
+	    fi; \
+	done; \
+        if test "$$otarget" = "all" && test -z "$(TARGETS)"; then \
+	    made_local=yes; \
+	fi; \
+	if test "$$made_local" != "yes"; then \
+	    $(MAKE) "local-$$otarget" || exit 1; \
+	fi
+
+clean-recursive distclean-recursive extraclean-recursive:
+	@otarget=`echo $@ | sed s/-recursive//`; \
+	list='$(CLEAN_SUBDIRS)'; \
+	for i in $$list; do \
+	    if test -f "$$i/Makefile"; then \
+		target="$$otarget"; \
+		echo "Making $$target in $$i"; \
+		if test "$$i" = "."; then \
+		    made_local=yes; \
+		    target="local-$$target"; \
+		fi; \
+		(cd $$i && $(MAKE) $$target); \
+	    fi; \
+	done; \
+        if test "$$otarget" = "all" && test -z "$(TARGETS)"; then \
+	    made_local=yes; \
+	fi; \
+	if test "$$made_local" != "yes"; then \
+	    $(MAKE) "local-$$otarget"; \
+	fi
+
+# autoconf 2.5x is creating a 'autom4te.cache' directory
+# In case someone ran autoconf by hand, get rid of that directory
+# as well.
+local-clean: x-local-clean
+	@list='. $(SOURCE_DIRS)'; \
+	for i in $$list; do \
+	    echo $(RM) -f $$i/*.o $$i/*.lo $$i/*.a $$i/*.la $$i/*.so $$i/*.obj; \
+	    $(RM) -f $$i/*.o $$i/*.lo $$i/*.a $$i/*.la $$i/*.so $$i/*.obj; \
+	    echo $(RM) -rf $$i/.libs; \
+	    $(RM) -rf $$i/.libs; \
+        done
+	$(RM) -f $(CLEAN_TARGETS) $(PROGRAMS)
+	$(RM) -rf autom4te.cache
+
+local-distclean: local-clean x-local-distclean
+	$(RM) -f Makefile $(DISTCLEAN_TARGETS)
+
+local-extraclean: local-distclean x-local-extraclean
+	@if test -n "$(EXTRACLEAN_TARGETS)"; then \
+	    echo $(RM) -f $(EXTRACLEAN_TARGETS) ; \
+	    $(RM) -f $(EXTRACLEAN_TARGETS) ; \
+	fi
+
+local-all: $(TARGETS)
+
+local-depend: x-local-depend
+	@if test -n "`ls $(srcdir)/*.c 2> /dev/null`"; then \
+		$(RM) -f .deps; \
+		list='$(srcdir)/*.c'; \
+		for i in $$list; do \
+			$(MKDEP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) $$i | sed 's/\.o:/.lo:/' >> .deps; \
+		done; \
+	fi
+
+# to be filled in by the actual Makefile
+x-local-depend x-local-clean x-local-distclean x-local-extraclean:
+
+#
+# Implicit rules for creating outputs from input files
+#
+.SUFFIXES:
+.SUFFIXES: .c .lo .o
+
+.c.o:
+	$(COMPILE) -c $<
+
+.c.lo:
+	$(LT_COMPILE)
+
+.PHONY: all all-recursive local-all install \
+	depend depend-recursive local-depend x-local-depend \
+	clean clean-recursive local-clean x-local-clean \
+	distclean distclean-recursive local-distclean x-local-distclean \
+	extraclean extraclean-recursive local-extraclean x-local-extraclean

Deleted: vendor/apache/apr/1.5.2/build/aprapp.dep
===================================================================
--- vendor/apache/apr/dist/build/aprapp.dep	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/aprapp.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,10 +0,0 @@
-# Microsoft Developer Studio Generated Dependency File, included by aprapp.mak
-
-..\misc\win32\apr_app.c : \
-	"..\include\apr_getopt.h"\
-	"..\include\apr_lib.h"\
-	"..\include\apr_poll.h"\
-	"..\include\apr_portable.h"\
-	"..\include\arch\win32\apr_arch_file_io.h"\
-	"..\include\arch\win32\apr_arch_utf8.h"\
-	

Copied: vendor/apache/apr/1.5.2/build/aprapp.dep (from rev 9273, vendor/apache/apr/dist/build/aprapp.dep)
===================================================================
--- vendor/apache/apr/1.5.2/build/aprapp.dep	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/aprapp.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,32 @@
+# Microsoft Developer Studio Generated Dependency File, included by aprapp.mak
+
+..\misc\win32\apr_app.c : \
+	"..\include\apr.h"\
+	"..\include\apr_allocator.h"\
+	"..\include\apr_dso.h"\
+	"..\include\apr_errno.h"\
+	"..\include\apr_file_info.h"\
+	"..\include\apr_file_io.h"\
+	"..\include\apr_general.h"\
+	"..\include\apr_getopt.h"\
+	"..\include\apr_global_mutex.h"\
+	"..\include\apr_inherit.h"\
+	"..\include\apr_lib.h"\
+	"..\include\apr_network_io.h"\
+	"..\include\apr_poll.h"\
+	"..\include\apr_pools.h"\
+	"..\include\apr_portable.h"\
+	"..\include\apr_proc_mutex.h"\
+	"..\include\apr_shm.h"\
+	"..\include\apr_tables.h"\
+	"..\include\apr_thread_mutex.h"\
+	"..\include\apr_thread_proc.h"\
+	"..\include\apr_time.h"\
+	"..\include\apr_user.h"\
+	"..\include\apr_want.h"\
+	"..\include\arch\apr_private_common.h"\
+	"..\include\arch\win32\apr_arch_file_io.h"\
+	"..\include\arch\win32\apr_arch_misc.h"\
+	"..\include\arch\win32\apr_arch_utf8.h"\
+	"..\include\arch\win32\apr_private.h"\
+	

Deleted: vendor/apache/apr/1.5.2/build/aprapp.mak
===================================================================
--- vendor/apache/apr/dist/build/aprapp.mak	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/aprapp.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,614 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on aprapp.dsp
-!IF "$(CFG)" == ""
-CFG=aprapp - Win32 Release
-!MESSAGE No configuration specified. Defaulting to aprapp - Win32 Release.
-!ENDIF 
-
-!IF "$(CFG)" != "aprapp - Win32 Release" && "$(CFG)" != "aprapp - Win32 Debug" && "$(CFG)" != "aprapp - Win32 Release9x" && "$(CFG)" != "aprapp - Win32 Debug9x" && "$(CFG)" != "aprapp - x64 Release" && "$(CFG)" != "aprapp - x64 Debug"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "aprapp.mak" CFG="aprapp - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "aprapp - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "aprapp - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "aprapp - Win32 Release9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "aprapp - Win32 Debug9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "aprapp - x64 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "aprapp - x64 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-!ERROR An invalid configuration is specified.
-!ENDIF 
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-!IF  "$(CFG)" == "aprapp - Win32 Release"
-
-OUTDIR=.\..\LibR
-INTDIR=.\LibR
-# Begin Custom Macros
-OutDir=.\..\LibR
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\aprapp-1.lib"
-
-!ELSE 
-
-ALL : "preaprapp - Win32 Release" "$(OUTDIR)\aprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"preaprapp - Win32 ReleaseCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(OUTDIR)\aprapp-1.lib"
-	- at erase "..\LibR\aprapp-1.idb"
-	- at erase "..\LibR\aprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj"
-
-"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug"
-
-OUTDIR=.\..\LibD
-INTDIR=.\LibD
-# Begin Custom Macros
-OutDir=.\..\LibD
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\aprapp-1.lib"
-
-!ELSE 
-
-ALL : "preaprapp - Win32 Debug" "$(OUTDIR)\aprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"preaprapp - Win32 DebugCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(OUTDIR)\aprapp-1.lib"
-	- at erase "..\LibD\aprapp-1.idb"
-	- at erase "..\LibD\aprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj"
-
-"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "aprapp - Win32 Release9x"
-
-OUTDIR=.\..\9x\LibR
-INTDIR=.\9x\LibR
-# Begin Custom Macros
-OutDir=.\..\9x\LibR
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\aprapp-1.lib"
-
-!ELSE 
-
-ALL : "preaprapp - Win32 Release9x" "$(OUTDIR)\aprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"preaprapp - Win32 Release9xCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(OUTDIR)\aprapp-1.lib"
-	- at erase "..\9x\LibR\aprapp-1.idb"
-	- at erase "..\9x\LibR\aprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj"
-
-"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug9x"
-
-OUTDIR=.\..\9x\LibD
-INTDIR=.\9x\LibD
-# Begin Custom Macros
-OutDir=.\..\9x\LibD
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\aprapp-1.lib"
-
-!ELSE 
-
-ALL : "preaprapp - Win32 Debug9x" "$(OUTDIR)\aprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"preaprapp - Win32 Debug9xCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(OUTDIR)\aprapp-1.lib"
-	- at erase "..\9x\LibD\aprapp-1.idb"
-	- at erase "..\9x\LibD\aprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj"
-
-"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "aprapp - x64 Release"
-
-OUTDIR=.\..\x64\LibR
-INTDIR=.\x64\LibR
-# Begin Custom Macros
-OutDir=.\..\x64\LibR
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\aprapp-1.lib"
-
-!ELSE 
-
-ALL : "preaprapp - x64 Release" "$(OUTDIR)\aprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"preaprapp - x64 ReleaseCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(OUTDIR)\aprapp-1.lib"
-	- at erase "..\x64\LibR\aprapp-1.idb"
-	- at erase "..\x64\LibR\aprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj"
-
-"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "aprapp - x64 Debug"
-
-OUTDIR=.\..\x64\LibD
-INTDIR=.\x64\LibD
-# Begin Custom Macros
-OutDir=.\..\x64\LibD
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\aprapp-1.lib"
-
-!ELSE 
-
-ALL : "preaprapp - x64 Debug" "$(OUTDIR)\aprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"preaprapp - x64 DebugCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(OUTDIR)\aprapp-1.lib"
-	- at erase "..\x64\LibD\aprapp-1.idb"
-	- at erase "..\x64\LibD\aprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj"
-
-"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF 
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("aprapp.dep")
-!INCLUDE "aprapp.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "aprapp.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "aprapp - Win32 Release" || "$(CFG)" == "aprapp - Win32 Debug" || "$(CFG)" == "aprapp - Win32 Release9x" || "$(CFG)" == "aprapp - Win32 Debug9x" || "$(CFG)" == "aprapp - x64 Release" || "$(CFG)" == "aprapp - x64 Debug"
-
-!IF  "$(CFG)" == "aprapp - Win32 Release"
-
-"preaprapp - Win32 Release" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"preaprapp - Win32 ReleaseCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug"
-
-"preaprapp - Win32 Debug" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"preaprapp - Win32 DebugCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "aprapp - Win32 Release9x"
-
-"preaprapp - Win32 Release9x" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"preaprapp - Win32 Release9xCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug9x"
-
-"preaprapp - Win32 Debug9x" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"preaprapp - Win32 Debug9xCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "aprapp - x64 Release"
-
-"preaprapp - x64 Release" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"preaprapp - x64 ReleaseCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "aprapp - x64 Debug"
-
-"preaprapp - x64 Debug" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"preaprapp - x64 DebugCLEAN" : 
-   cd "."
-   cd "."
-
-!ENDIF 
-
-SOURCE=..\misc\win32\apr_app.c
-
-"$(INTDIR)\apr_app.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-
-!ENDIF 
-

Copied: vendor/apache/apr/1.5.2/build/aprapp.mak (from rev 9273, vendor/apache/apr/dist/build/aprapp.mak)
===================================================================
--- vendor/apache/apr/1.5.2/build/aprapp.mak	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/aprapp.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,614 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on aprapp.dsp
+!IF "$(CFG)" == ""
+CFG=aprapp - Win32 Release
+!MESSAGE No configuration specified. Defaulting to aprapp - Win32 Release.
+!ENDIF 
+
+!IF "$(CFG)" != "aprapp - Win32 Release" && "$(CFG)" != "aprapp - Win32 Debug" && "$(CFG)" != "aprapp - Win32 Release9x" && "$(CFG)" != "aprapp - Win32 Debug9x" && "$(CFG)" != "aprapp - x64 Release" && "$(CFG)" != "aprapp - x64 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "aprapp.mak" CFG="aprapp - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "aprapp - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "aprapp - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "aprapp - Win32 Release9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "aprapp - Win32 Debug9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "aprapp - x64 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "aprapp - x64 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "aprapp - Win32 Release"
+
+OUTDIR=.\..\LibR
+INTDIR=.\LibR
+# Begin Custom Macros
+OutDir=.\..\LibR
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\aprapp-1.lib"
+
+!ELSE 
+
+ALL : "preaprapp - Win32 Release" "$(OUTDIR)\aprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"preaprapp - Win32 ReleaseCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(OUTDIR)\aprapp-1.lib"
+	- at erase "..\LibR\aprapp-1.idb"
+	- at erase "..\LibR\aprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj"
+
+"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug"
+
+OUTDIR=.\..\LibD
+INTDIR=.\LibD
+# Begin Custom Macros
+OutDir=.\..\LibD
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\aprapp-1.lib"
+
+!ELSE 
+
+ALL : "preaprapp - Win32 Debug" "$(OUTDIR)\aprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"preaprapp - Win32 DebugCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(OUTDIR)\aprapp-1.lib"
+	- at erase "..\LibD\aprapp-1.idb"
+	- at erase "..\LibD\aprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj"
+
+"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "aprapp - Win32 Release9x"
+
+OUTDIR=.\..\9x\LibR
+INTDIR=.\9x\LibR
+# Begin Custom Macros
+OutDir=.\..\9x\LibR
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\aprapp-1.lib"
+
+!ELSE 
+
+ALL : "preaprapp - Win32 Release9x" "$(OUTDIR)\aprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"preaprapp - Win32 Release9xCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(OUTDIR)\aprapp-1.lib"
+	- at erase "..\9x\LibR\aprapp-1.idb"
+	- at erase "..\9x\LibR\aprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj"
+
+"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug9x"
+
+OUTDIR=.\..\9x\LibD
+INTDIR=.\9x\LibD
+# Begin Custom Macros
+OutDir=.\..\9x\LibD
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\aprapp-1.lib"
+
+!ELSE 
+
+ALL : "preaprapp - Win32 Debug9x" "$(OUTDIR)\aprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"preaprapp - Win32 Debug9xCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(OUTDIR)\aprapp-1.lib"
+	- at erase "..\9x\LibD\aprapp-1.idb"
+	- at erase "..\9x\LibD\aprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj"
+
+"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "aprapp - x64 Release"
+
+OUTDIR=.\..\x64\LibR
+INTDIR=.\x64\LibR
+# Begin Custom Macros
+OutDir=.\..\x64\LibR
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\aprapp-1.lib"
+
+!ELSE 
+
+ALL : "preaprapp - x64 Release" "$(OUTDIR)\aprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"preaprapp - x64 ReleaseCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(OUTDIR)\aprapp-1.lib"
+	- at erase "..\x64\LibR\aprapp-1.idb"
+	- at erase "..\x64\LibR\aprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj"
+
+"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "aprapp - x64 Debug"
+
+OUTDIR=.\..\x64\LibD
+INTDIR=.\x64\LibD
+# Begin Custom Macros
+OutDir=.\..\x64\LibD
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\aprapp-1.lib"
+
+!ELSE 
+
+ALL : "preaprapp - x64 Debug" "$(OUTDIR)\aprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"preaprapp - x64 DebugCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(OUTDIR)\aprapp-1.lib"
+	- at erase "..\x64\LibD\aprapp-1.idb"
+	- at erase "..\x64\LibD\aprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /D "APR_DECLARE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\aprapp-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\aprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\aprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj"
+
+"$(OUTDIR)\aprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("aprapp.dep")
+!INCLUDE "aprapp.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "aprapp.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "aprapp - Win32 Release" || "$(CFG)" == "aprapp - Win32 Debug" || "$(CFG)" == "aprapp - Win32 Release9x" || "$(CFG)" == "aprapp - Win32 Debug9x" || "$(CFG)" == "aprapp - x64 Release" || "$(CFG)" == "aprapp - x64 Debug"
+
+!IF  "$(CFG)" == "aprapp - Win32 Release"
+
+"preaprapp - Win32 Release" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"preaprapp - Win32 ReleaseCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug"
+
+"preaprapp - Win32 Debug" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"preaprapp - Win32 DebugCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "aprapp - Win32 Release9x"
+
+"preaprapp - Win32 Release9x" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"preaprapp - Win32 Release9xCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "aprapp - Win32 Debug9x"
+
+"preaprapp - Win32 Debug9x" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"preaprapp - Win32 Debug9xCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "aprapp - x64 Release"
+
+"preaprapp - x64 Release" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"preaprapp - x64 ReleaseCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "aprapp - x64 Debug"
+
+"preaprapp - x64 Debug" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"preaprapp - x64 DebugCLEAN" : 
+   cd "."
+   cd "."
+
+!ENDIF 
+
+SOURCE=..\misc\win32\apr_app.c
+
+"$(INTDIR)\apr_app.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF 
+

Deleted: vendor/apache/apr/1.5.2/build/buildcheck.sh
===================================================================
--- vendor/apache/apr/dist/build/buildcheck.sh	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/buildcheck.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,66 +0,0 @@
-#! /bin/sh
-
-echo "buildconf: checking installation..."
-
-# any python
-python=`build/PrintPath python`
-if test -z "$python"; then
-echo "buildconf: python not found."
-echo "           You need python installed"
-echo "           to build APR from SVN."
-exit 1
-else
-py_version=`python -c 'import sys; print sys.version' 2>&1|sed 's/ .*//;q'`
-echo "buildconf: python version $py_version (ok)"
-fi
-
-# autoconf 2.59 or newer
-ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;q'`
-if test -z "$ac_version"; then
-echo "buildconf: autoconf not found."
-echo "           You need autoconf version 2.59 or newer installed"
-echo "           to build APR from SVN."
-exit 1
-fi
-IFS=.; set $ac_version; IFS=' '
-if test "$1" = "2" -a "$2" -lt "59" || test "$1" -lt "2"; then
-echo "buildconf: autoconf version $ac_version found."
-echo "           You need autoconf version 2.59 or newer installed"
-echo "           to build APR from SVN."
-exit 1
-else
-echo "buildconf: autoconf version $ac_version (ok)"
-fi
-
-# Sample libtool --version outputs:
-# ltmain.sh (GNU libtool) 1.3.3 (1.385.2.181 1999/07/02 15:49:11)
-# ltmain.sh (GNU libtool 1.1361 2004/01/02 23:10:52) 1.5a
-# output is multiline from 1.5 onwards
-
-# Require libtool 1.4 or newer
-libtool=`build/PrintPath glibtool1 glibtool libtool libtool15 libtool14`
-lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
-if test -z "$lt_pversion"; then
-echo "buildconf: libtool not found."
-echo "           You need libtool version 1.4 or newer installed"
-echo "           to build APR from SVN."
-exit 1
-fi
-lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'`
-IFS=.; set $lt_version; IFS=' '
-lt_status="good"
-if test "$1" = "1"; then
-   if test "$2" -lt "4"; then
-      lt_status="bad"
-   fi
-fi
-if test $lt_status = "good"; then
-   echo "buildconf: libtool version $lt_pversion (ok)"
-   exit 0
-fi
-
-echo "buildconf: libtool version $lt_pversion found."
-echo "           You need libtool version 1.4 or newer installed"
-echo "           to build APR from SVN."
-
-exit 1

Copied: vendor/apache/apr/1.5.2/build/buildcheck.sh (from rev 9273, vendor/apache/apr/dist/build/buildcheck.sh)
===================================================================
--- vendor/apache/apr/1.5.2/build/buildcheck.sh	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/buildcheck.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,66 @@
+#! /bin/sh
+
+echo "buildconf: checking installation..."
+
+# any python
+python=`build/PrintPath python`
+if test -z "$python"; then
+echo "buildconf: python not found."
+echo "           You need python installed"
+echo "           to build APR from SVN."
+exit 1
+else
+py_version=`python -c 'import sys; print sys.version' 2>&1|sed 's/ .*//;q'`
+echo "buildconf: python version $py_version (ok)"
+fi
+
+# autoconf 2.59 or newer
+ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;q'`
+if test -z "$ac_version"; then
+echo "buildconf: autoconf not found."
+echo "           You need autoconf version 2.59 or newer installed"
+echo "           to build APR from SVN."
+exit 1
+fi
+IFS=.; set $ac_version; IFS=' '
+if test "$1" = "2" -a "$2" -lt "59" || test "$1" -lt "2"; then
+echo "buildconf: autoconf version $ac_version found."
+echo "           You need autoconf version 2.59 or newer installed"
+echo "           to build APR from SVN."
+exit 1
+else
+echo "buildconf: autoconf version $ac_version (ok)"
+fi
+
+# Sample libtool --version outputs:
+# ltmain.sh (GNU libtool) 1.3.3 (1.385.2.181 1999/07/02 15:49:11)
+# ltmain.sh (GNU libtool 1.1361 2004/01/02 23:10:52) 1.5a
+# output is multiline from 1.5 onwards
+
+# Require libtool 1.4 or newer
+libtool=`build/PrintPath glibtool1 glibtool libtool libtool15 libtool14`
+lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
+if test -z "$lt_pversion"; then
+echo "buildconf: libtool not found."
+echo "           You need libtool version 1.4 or newer installed"
+echo "           to build APR from SVN."
+exit 1
+fi
+lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'`
+IFS=.; set $lt_version; IFS=' '
+lt_status="good"
+if test "$1" = "1"; then
+   if test "$2" -lt "4"; then
+      lt_status="bad"
+   fi
+fi
+if test $lt_status = "good"; then
+   echo "buildconf: libtool version $lt_pversion (ok)"
+   exit 0
+fi
+
+echo "buildconf: libtool version $lt_pversion found."
+echo "           You need libtool version 1.4 or newer installed"
+echo "           to build APR from SVN."
+
+exit 1

Deleted: vendor/apache/apr/1.5.2/build/config.guess
===================================================================
--- vendor/apache/apr/dist/build/config.guess	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/config.guess	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1544 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-04-24'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi at noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-		os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint${UNAME_RELEASE}
-	exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint${UNAME_RELEASE}
-	exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint${UNAME_RELEASE}
-	exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
-	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[4567])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-		      532)                      # CPU_PA_RISC2_0
-			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-			esac ;;
-		    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^		//' << EOF >$dummy.c
-
-		#define _HPUX_SOURCE
-		#include <stdlib.h>
-		#include <unistd.h>
-
-		int main ()
-		{
-		#if defined(_SC_KERNEL_BITS)
-		    long bits = sysconf(_SC_KERNEL_BITS);
-		#endif
-		    long cpu  = sysconf (_SC_CPU_VERSION);
-
-		    switch (cpu)
-			{
-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-			case CPU_PA_RISC2_0:
-		#if defined(_SC_KERNEL_BITS)
-			    switch (bits)
-				{
-				case 64: puts ("hppa2.0w"); break;
-				case 32: puts ("hppa2.0n"); break;
-				default: puts ("hppa2.0"); break;
-				} break;
-		#else  /* !defined(_SC_KERNEL_BITS) */
-			    puts ("hppa2.0"); break;
-		#endif
-			default: puts ("hppa1.0"); break;
-			}
-		    exit (0);
-		}
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case ${UNAME_PROCESSOR} in
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW64*:*)
-	echo ${UNAME_MACHINE}-pc-mingw64
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:MSYS*:*)
-	echo ${UNAME_MACHINE}-pc-msys
-	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:*)
-	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    aarch64_be:Linux:*:*)
-	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-	esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
-	else
-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-		| grep -q __ARM_PCS_VFP
-	    then
-		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-	    else
-		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-	    fi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    cris:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    i*86:Linux:*:*)
-	LIBC=gnu
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-	#else
-	#include <features.h>
-	#ifdef __UCLIBC__
-	LIBC=uclibc
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    or1k:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    or32:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-unknown-linux-gnu
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
-    sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	LIBC=gnu
-	test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-	# Unixware is an offshoot of SVR4, but it has its own version
-	# number series starting with 2...
-	# I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-	# Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-	# the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-			# says <Richard.M.Bartel at ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes at openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf at swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv${UNAME_RELEASE}
-	else
-		echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-	exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    x86_64:Haiku:*:*)
-	echo x86_64-unknown-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    i386)
-		eval $set_cc_for_build
-		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		      grep IS_64BIT_ARCH >/dev/null
-		  then
-		      UNAME_PROCESSOR="x86_64"
-		  fi
-		fi ;;
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-	echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-    x86_64:VMkernel:*:*)
-	echo ${UNAME_MACHINE}-unknown-esx
-	exit ;;
-esac
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-	"4"
-#else
-	""
-#endif
-	); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches at gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:

Copied: vendor/apache/apr/1.5.2/build/config.guess (from rev 9273, vendor/apache/apr/dist/build/config.guess)
===================================================================
--- vendor/apache/apr/1.5.2/build/config.guess	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/config.guess	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1420 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
+
+timestamp='2014-03-23'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2014 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+		os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^		//' << EOF >$dummy.c
+
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
+
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
+
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    *:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    cris:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    crisv32:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    frv:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	;;
+    openrisc*:Linux:*:*)
+	echo or1k-unknown-linux-${LIBC}
+	exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-${LIBC}
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-${LIBC}
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	exit ;;
+    x86_64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel at ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+		echo mips-nec-sysv${UNAME_RELEASE}
+	else
+		echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    grep IS_64BIT_ARCH >/dev/null
+		then
+		    case $UNAME_PROCESSOR in
+			i386) UNAME_PROCESSOR=x86_64 ;;
+			powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		    esac
+		fi
+	    fi
+	elif test "$UNAME_PROCESSOR" = i386 ; then
+	    # Avoid executing cc on OS X 10.9, as it ships with a stub
+	    # that puts up a graphical alert prompting to install
+	    # developer tools.  Any system running Mac OS X 10.7 or
+	    # later (Darwin 11 and later) is required to have a 64-bit
+	    # processor. This is not true of the ARM version of Darwin
+	    # that Apple uses in portable devices.
+	    UNAME_PROCESSOR=x86_64
+	fi
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
+esac
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:

Deleted: vendor/apache/apr/1.5.2/build/config.sub
===================================================================
--- vendor/apache/apr/dist/build/config.sub	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/config.sub	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1788 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-04-24'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze*)
-		os=
-		basic_machine=$1
-		;;
-	-bluegene*)
-		os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
-	-chorusrdb)
-		os=-chorusrdb
-		basic_machine=$1
-		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| aarch64 | aarch64_be \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arceb \
-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-	| avr | avr32 \
-	| be32 | be64 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| hexagon \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| le32 | le64 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipsr5900 | mipsr5900el \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nds32 | nds32le | nds32be \
-	| nios | nios2 | nios2eb | nios2el \
-	| ns16k | ns32k \
-	| open8 \
-	| or1k | or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle \
-	| pyramid \
-	| rl78 | rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu \
-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-	| we32k \
-	| x86 | xc16x | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	c54x)
-		basic_machine=tic54x-unknown
-		;;
-	c55x)
-		basic_machine=tic55x-unknown
-		;;
-	c6x)
-		basic_machine=tic6x-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	strongarm | thumb | xscale)
-		basic_machine=arm-unknown
-		;;
-	xgate)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	xscaleeb)
-		basic_machine=armeb-unknown
-		;;
-
-	xscaleel)
-		basic_machine=armel-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| aarch64-* | aarch64_be-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| be32-* | be64-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| le32-* | le64-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| microblaze-* | microblazeel-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipsr5900-* | mipsr5900el-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| open8-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-	| pyramid-* \
-	| rl78-* | romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-	| tahoe-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile*-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-	| vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c54x-*)
-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c55x-*)
-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c6x-*)
-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16 | cr16-*)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	microblaze*)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw64)
-		basic_machine=x86_64-pc
-		os=-mingw64
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	msys)
-		basic_machine=i386-pc
-		os=-msys
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	nacl)
-		basic_machine=le32-unknown
-		os=-nacl
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	neo-tandem)
-		basic_machine=neo-tandem
-		;;
-	nse-tandem)
-		basic_machine=nse-tandem
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc | ppcbe)	basic_machine=powerpc-unknown
-		;;
-	ppc-* | ppcbe-*)
-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos | rdos64)
-		basic_machine=x86_64-pc
-		os=-rdos
-		;;
-	rdos32)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	strongarm-* | thumb-*)
-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tile*)
-		basic_machine=$basic_machine-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	xscale-* | xscalee[bl]-*)
-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-auroraux)
-		os=-auroraux
-		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* | -plan9* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-	-os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-	-tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-nacl*)
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	score-*)
-		os=-elf
-		;;
-	spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-	c4x-* | tic4x-*)
-		os=-coff
-		;;
-	hexagon-*)
-		os=-elf
-		;;
-	tic54x-*)
-		os=-coff
-		;;
-	tic55x-*)
-		os=-coff
-		;;
-	tic6x-*)
-		os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or1k-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:

Copied: vendor/apache/apr/1.5.2/build/config.sub (from rev 9273, vendor/apache/apr/dist/build/config.sub)
===================================================================
--- vendor/apache/apr/1.5.2/build/config.sub	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/config.sub	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1799 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
+
+timestamp='2014-09-11'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2014 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray | -microblaze*)
+		os=
+		basic_machine=$1
+		;;
+	-bluegene*)
+		os=-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+	-chorusrdb)
+		os=-chorusrdb
+		basic_machine=$1
+		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| aarch64 | aarch64_be \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| be32 | be64 \
+	| bfin \
+	| c4x | c8051 | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| k1om \
+	| le32 | le64 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa32r6 | mipsisa32r6el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64r6 | mipsisa64r6el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
+	| ns16k | ns32k \
+	| open8 | or1k | or1knd | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| riscv32 | riscv64 \
+	| rl78 | rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| we32k \
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| aarch64-* | aarch64_be-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| be32-* | be64-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| k1om-* \
+	| le32-* | le64-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| microblaze-* | microblazeel-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa32r6-* | mipsisa32r6el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64r6-* | mipsisa64r6el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| or1k*-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16 | cr16-*)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	microblaze*)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw64)
+		basic_machine=x86_64-pc
+		os=-mingw64
+		;;
+	mingw32)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	moxiebox)
+		basic_machine=moxie-unknown
+		os=-moxiebox
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc | ppcbe)	basic_machine=powerpc-unknown
+		;;
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tile*)
+		basic_machine=$basic_machine-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+	# First match some system type aliases
+	# that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=-auroraux
+		;;
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	score-*)
+		os=-elf
+		;;
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-cnk*|-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:

Deleted: vendor/apache/apr/1.5.2/build/gen-build.py
===================================================================
--- vendor/apache/apr/dist/build/gen-build.py	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/gen-build.py	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,230 +0,0 @@
-#!/usr/bin/env python
-#
-# USAGE: gen-build.py TYPE
-#
-# where TYPE is one of: make, dsp, vcproj
-#
-# It reads build.conf from the current directory, and produces its output
-# into the current directory.
-#
-
-
-import os
-import ConfigParser
-import getopt
-import string
-import glob
-import re
-
-#import ezt
-
-#
-# legal platforms: aix, beos, netware, os2, os390, unix, win32
-# 'make' users: aix, beos, os2, os390, unix, win32 (mingw)
-#
-PLATFORMS = [ 'aix', 'beos', 'netware', 'os2', 'os390', 'unix', 'win32' ]
-MAKE_PLATFORMS = [
-  ('unix', None),
-  ('aix', 'unix'),
-  ('beos', 'unix'),
-  ('os2', 'unix'),
-  ('os390', 'unix'),
-  ('win32', 'unix'),
-  ]
-# note: MAKE_PLATFORMS is an ordered set. we want to generate unix symbols
-#       first, so that the later platforms can reference them.
-
-
-def main():
-  parser = ConfigParser.ConfigParser()
-  parser.read('build.conf')
-
-  if parser.has_option('options', 'dsp'):
-    dsp_file = parser.get('options', 'dsp')
-  else:
-    dsp_file = None
-
-  headers = get_files(parser.get('options', 'headers'))
-
-  # compute the relevant headers, along with the implied includes
-  legal_deps = { }
-  for fname in headers:
-    legal_deps[os.path.basename(fname)] = fname
-
-  h_deps = { }
-  for fname in headers:
-    h_deps[os.path.basename(fname)] = extract_deps(fname, legal_deps)
-  resolve_deps(h_deps)
-
-  f = open('build-outputs.mk', 'w')
-  f.write('# DO NOT EDIT. AUTOMATICALLY GENERATED.\n\n')
-
-  # write out the platform-independent files
-  files = get_files(parser.get('options', 'paths'))
-  objects, dirs = write_objects(f, legal_deps, h_deps, files)
-  f.write('\nOBJECTS_all = %s\n\n' % string.join(objects))
-
-  # for each platform and each subdirectory holding platform-specific files,
-  # write out their compilation rules, and an OBJECT_<subdir>_<plat> symbol.
-  for platform, parent in MAKE_PLATFORMS:
-
-    # record the object symbols to build for each platform
-    group = [ '$(OBJECTS_all)' ]
-
-    # If we're doing win32, we're going to look in the libapr.dsp file
-    # for those files that we have to manually add to our list.
-    inherit_parent = { }
-    if platform == 'win32' and dsp_file:
-      for line in open(dsp_file).readlines():
-        if line[:7] != 'SOURCE=':
-          continue
-        if line[7:].find('unix') != -1:
-          # skip the leading .\ and split it out
-          inherit_files = line[9:].strip().split('\\')
-          # change the .c to .lo
-          assert inherit_files[-1][-2:] == '.c'
-          inherit_files[-1] = inherit_files[-1][:-2] + '.lo'
-          # replace the \\'s with /'s
-          inherit_line = '/'.join(inherit_files)
-          if not inherit_parent.has_key(inherit_files[0]):
-            inherit_parent[inherit_files[0]] = []
-          inherit_parent[inherit_files[0]].append(inherit_line)
-
-    for subdir in string.split(parser.get('options', 'platform_dirs')):
-      path = '%s/%s' % (subdir, platform)
-      if not os.path.exists(path):
-        # this subdir doesn't have a subdir for this platform, so we'll
-        # use the parent-platform's set of symbols
-        if parent:
-          group.append('$(OBJECTS_%s_%s)' % (subdir, parent))
-        continue
-
-      # remember that this directory has files/objects
-      dirs[path] = None
-
-      # write out the compilation lines for this subdir
-      files = get_files(path + '/*.c')
-      objects, _unused = write_objects(f, legal_deps, h_deps, files)
-
-      if inherit_parent.has_key(subdir):
-        objects = objects + inherit_parent[subdir]
-
-      symname = 'OBJECTS_%s_%s' % (subdir, platform)
-
-      objects.sort()
-
-      # and write the symbol for the whole group
-      f.write('\n%s = %s\n\n' % (symname, string.join(objects)))
-
-      # and include that symbol in the group
-      group.append('$(%s)' % symname)
-
-    group.sort()
-
-    # write out a symbol which contains the necessary files
-    f.write('OBJECTS_%s = %s\n\n' % (platform, string.join(group)))
-
-  f.write('HEADERS = $(top_srcdir)/%s\n\n' % string.join(headers, ' $(top_srcdir)/'))
-  f.write('SOURCE_DIRS = %s $(EXTRA_SOURCE_DIRS)\n\n' % string.join(dirs.keys()))
-
-  if parser.has_option('options', 'modules'):
-    modules = parser.get('options', 'modules')
-
-    for mod in string.split(modules):
-      files = get_files(parser.get(mod, 'paths'))
-      objects, _unused = write_objects(f, legal_deps, h_deps, files)
-      flat_objects = string.join(objects)
-      f.write('OBJECTS_%s = %s\n' % (mod, flat_objects))
-
-      if parser.has_option(mod, 'target'):
-        target = parser.get(mod, 'target')
-        f.write('MODULE_%s = %s\n' % (mod, target))
-        f.write('%s: %s\n' % (target, flat_objects))
-        f.write('\t$(LINK_MODULE) -o $@ $(OBJECTS_%s) $(LDADD_%s)\n' % (mod, mod))
-
-      f.write('\n')
-
-  # Build a list of all necessary directories in build tree
-  alldirs = { }
-  for dir in dirs.keys():
-    d = dir
-    while d:
-      alldirs[d] = None
-      d = os.path.dirname(d)
-
-  # Sort so 'foo' is before 'foo/bar'
-  keys = alldirs.keys()
-  keys.sort()
-  f.write('BUILD_DIRS = %s\n\n' % string.join(keys))
-
-  f.write('.make.dirs: $(srcdir)/build-outputs.mk\n' \
-          '\t at for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done\n' \
-          '\t at echo timestamp > $@\n')
-
-
-def write_objects(f, legal_deps, h_deps, files):
-  dirs = { }
-  objects = [ ]
-
-  for file in files:
-    if file[-10:] == '/apr_app.c':
-      continue
-    assert file[-2:] == '.c'
-    obj = file[:-2] + '.lo'
-    objects.append(obj)
-
-    dirs[os.path.dirname(file)] = None
-
-    # what headers does this file include, along with the implied headers
-    deps = extract_deps(file, legal_deps)
-    for hdr in deps.keys():
-      deps.update(h_deps.get(hdr, {}))
-
-    vals = deps.values()
-    vals.sort()
-    f.write('%s: %s .make.dirs %s\n' % (obj, file, string.join(vals)))
-
-  objects.sort()
-
-  return objects, dirs
-
-
-def extract_deps(fname, legal_deps):
-  "Extract the headers this file includes."
-  deps = { }
-  for line in open(fname).readlines():
-    if line[:8] != '#include':
-      continue
-    inc = _re_include.match(line).group(1)
-    if inc in legal_deps.keys():
-      deps[inc] = legal_deps[inc]
-  return deps
-_re_include = re.compile('#include *["<](.*)[">]')
-
-
-def resolve_deps(header_deps):
-  "Alter the provided dictionary to flatten includes-of-includes."
-  altered = 1
-  while altered:
-    altered = 0
-    for hdr, deps in header_deps.items():
-      # print hdr, deps
-      start = len(deps)
-      for dep in deps.keys():
-        deps.update(header_deps.get(dep, {}))
-      if len(deps) != start:
-        altered = 1
-
-def clean_path(path):
-    return path.replace("\\", "/")
-
-def get_files(patterns):
-  files = [ ]
-  for pat in string.split(patterns):
-    files.extend(map(clean_path, glob.glob(pat)))
-  files.sort()
-  return files
-
-
-if __name__ == '__main__':
-  main()

Copied: vendor/apache/apr/1.5.2/build/gen-build.py (from rev 9273, vendor/apache/apr/dist/build/gen-build.py)
===================================================================
--- vendor/apache/apr/1.5.2/build/gen-build.py	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/gen-build.py	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,230 @@
+#!/usr/bin/env python
+#
+# USAGE: gen-build.py TYPE
+#
+# where TYPE is one of: make, dsp, vcproj
+#
+# It reads build.conf from the current directory, and produces its output
+# into the current directory.
+#
+
+
+import os
+import ConfigParser
+import getopt
+import string
+import glob
+import re
+
+#import ezt
+
+#
+# legal platforms: aix, beos, netware, os2, os390, unix, win32
+# 'make' users: aix, beos, os2, os390, unix, win32 (mingw)
+#
+PLATFORMS = [ 'aix', 'beos', 'netware', 'os2', 'os390', 'unix', 'win32' ]
+MAKE_PLATFORMS = [
+  ('unix', None),
+  ('aix', 'unix'),
+  ('beos', 'unix'),
+  ('os2', 'unix'),
+  ('os390', 'unix'),
+  ('win32', 'unix'),
+  ]
+# note: MAKE_PLATFORMS is an ordered set. we want to generate unix symbols
+#       first, so that the later platforms can reference them.
+
+
+def main():
+  parser = ConfigParser.ConfigParser()
+  parser.read('build.conf')
+
+  if parser.has_option('options', 'dsp'):
+    dsp_file = parser.get('options', 'dsp')
+  else:
+    dsp_file = None
+
+  headers = get_files(parser.get('options', 'headers'))
+
+  # compute the relevant headers, along with the implied includes
+  legal_deps = { }
+  for fname in headers:
+    legal_deps[os.path.basename(fname)] = fname
+
+  h_deps = { }
+  for fname in headers:
+    h_deps[os.path.basename(fname)] = extract_deps(fname, legal_deps)
+  resolve_deps(h_deps)
+
+  f = open('build-outputs.mk', 'w')
+  f.write('# DO NOT EDIT. AUTOMATICALLY GENERATED.\n\n')
+
+  # write out the platform-independent files
+  files = get_files(parser.get('options', 'paths'))
+  objects, dirs = write_objects(f, legal_deps, h_deps, files)
+  f.write('\nOBJECTS_all = %s\n\n' % string.join(objects))
+
+  # for each platform and each subdirectory holding platform-specific files,
+  # write out their compilation rules, and an OBJECT_<subdir>_<plat> symbol.
+  for platform, parent in MAKE_PLATFORMS:
+
+    # record the object symbols to build for each platform
+    group = [ '$(OBJECTS_all)' ]
+
+    # If we're doing win32, we're going to look in the libapr.dsp file
+    # for those files that we have to manually add to our list.
+    inherit_parent = { }
+    if platform == 'win32' and dsp_file:
+      for line in open(dsp_file).readlines():
+        if line[:7] != 'SOURCE=':
+          continue
+        if line[7:].find('unix') != -1:
+          # skip the leading .\ and split it out
+          inherit_files = line[9:].strip().split('\\')
+          # change the .c to .lo
+          assert inherit_files[-1][-2:] == '.c'
+          inherit_files[-1] = inherit_files[-1][:-2] + '.lo'
+          # replace the \\'s with /'s
+          inherit_line = '/'.join(inherit_files)
+          if not inherit_parent.has_key(inherit_files[0]):
+            inherit_parent[inherit_files[0]] = []
+          inherit_parent[inherit_files[0]].append(inherit_line)
+
+    for subdir in string.split(parser.get('options', 'platform_dirs')):
+      path = '%s/%s' % (subdir, platform)
+      if not os.path.exists(path):
+        # this subdir doesn't have a subdir for this platform, so we'll
+        # use the parent-platform's set of symbols
+        if parent:
+          group.append('$(OBJECTS_%s_%s)' % (subdir, parent))
+        continue
+
+      # remember that this directory has files/objects
+      dirs[path] = None
+
+      # write out the compilation lines for this subdir
+      files = get_files(path + '/*.c')
+      objects, _unused = write_objects(f, legal_deps, h_deps, files)
+
+      if inherit_parent.has_key(subdir):
+        objects = objects + inherit_parent[subdir]
+
+      symname = 'OBJECTS_%s_%s' % (subdir, platform)
+
+      objects.sort()
+
+      # and write the symbol for the whole group
+      f.write('\n%s = %s\n\n' % (symname, string.join(objects)))
+
+      # and include that symbol in the group
+      group.append('$(%s)' % symname)
+
+    group.sort()
+
+    # write out a symbol which contains the necessary files
+    f.write('OBJECTS_%s = %s\n\n' % (platform, string.join(group)))
+
+  f.write('HEADERS = $(top_srcdir)/%s\n\n' % string.join(headers, ' $(top_srcdir)/'))
+  f.write('SOURCE_DIRS = %s $(EXTRA_SOURCE_DIRS)\n\n' % string.join(dirs.keys()))
+
+  if parser.has_option('options', 'modules'):
+    modules = parser.get('options', 'modules')
+
+    for mod in string.split(modules):
+      files = get_files(parser.get(mod, 'paths'))
+      objects, _unused = write_objects(f, legal_deps, h_deps, files)
+      flat_objects = string.join(objects)
+      f.write('OBJECTS_%s = %s\n' % (mod, flat_objects))
+
+      if parser.has_option(mod, 'target'):
+        target = parser.get(mod, 'target')
+        f.write('MODULE_%s = %s\n' % (mod, target))
+        f.write('%s: %s\n' % (target, flat_objects))
+        f.write('\t$(LINK_MODULE) -o $@ $(OBJECTS_%s) $(LDADD_%s)\n' % (mod, mod))
+
+      f.write('\n')
+
+  # Build a list of all necessary directories in build tree
+  alldirs = { }
+  for dir in dirs.keys():
+    d = dir
+    while d:
+      alldirs[d] = None
+      d = os.path.dirname(d)
+
+  # Sort so 'foo' is before 'foo/bar'
+  keys = alldirs.keys()
+  keys.sort()
+  f.write('BUILD_DIRS = %s\n\n' % string.join(keys))
+
+  f.write('.make.dirs: $(srcdir)/build-outputs.mk\n' \
+          '\t at for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done\n' \
+          '\t at echo timestamp > $@\n')
+
+
+def write_objects(f, legal_deps, h_deps, files):
+  dirs = { }
+  objects = [ ]
+
+  for file in files:
+    if file[-10:] == '/apr_app.c':
+      continue
+    assert file[-2:] == '.c'
+    obj = file[:-2] + '.lo'
+    objects.append(obj)
+
+    dirs[os.path.dirname(file)] = None
+
+    # what headers does this file include, along with the implied headers
+    deps = extract_deps(file, legal_deps)
+    for hdr in deps.keys():
+      deps.update(h_deps.get(hdr, {}))
+
+    vals = deps.values()
+    vals.sort()
+    f.write('%s: %s .make.dirs %s\n' % (obj, file, string.join(vals)))
+
+  objects.sort()
+
+  return objects, dirs
+
+
+def extract_deps(fname, legal_deps):
+  "Extract the headers this file includes."
+  deps = { }
+  for line in open(fname).readlines():
+    if line[:8] != '#include':
+      continue
+    inc = _re_include.match(line).group(1)
+    if inc in legal_deps.keys():
+      deps[inc] = legal_deps[inc]
+  return deps
+_re_include = re.compile('#include *["<](.*)[">]')
+
+
+def resolve_deps(header_deps):
+  "Alter the provided dictionary to flatten includes-of-includes."
+  altered = 1
+  while altered:
+    altered = 0
+    for hdr, deps in header_deps.items():
+      # print hdr, deps
+      start = len(deps)
+      for dep in deps.keys():
+        deps.update(header_deps.get(dep, {}))
+      if len(deps) != start:
+        altered = 1
+
+def clean_path(path):
+    return path.replace("\\", "/")
+
+def get_files(patterns):
+  files = [ ]
+  for pat in string.split(patterns):
+    files.extend(map(clean_path, glob.glob(pat)))
+  files.sort()
+  return files
+
+
+if __name__ == '__main__':
+  main()

Deleted: vendor/apache/apr/1.5.2/build/get-version.sh
===================================================================
--- vendor/apache/apr/dist/build/get-version.sh	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/get-version.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,37 +0,0 @@
-#!/bin/sh
-#
-# extract version numbers from a header file
-#
-# USAGE: get-version.sh CMD VERSION_HEADER PREFIX
-#   where CMD is one of: all, major, libtool
-#   where PREFIX is the prefix to {MAJOR|MINOR|PATCH}_VERSION defines
-#
-#   get-version.sh all returns a dotted version number
-#   get-version.sh major returns just the major version number
-#   get-version.sh libtool returns a version "libtool -version-info" format
-#
-
-if test $# != 3; then
-  echo "USAGE: $0 CMD VERSION_HEADER PREFIX"
-  echo "  where CMD is one of: all, major, libtool"
-  exit 1
-fi
-
-major_sed="/#define.*$3_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p"
-minor_sed="/#define.*$3_MINOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p"
-patch_sed="/#define.*$3_PATCH_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p"
-major="`sed -n $major_sed $2`"
-minor="`sed -n $minor_sed $2`"
-patch="`sed -n $patch_sed $2`"
-
-if test "$1" = "all"; then
-  echo ${major}.${minor}.${patch}
-elif test "$1" = "major"; then
-  echo ${major}
-elif test "$1" = "libtool"; then
-  # Yes, ${minor}:${patch}:${minor} is correct due to libtool idiocy.
-  echo ${minor}:${patch}:${minor}
-else
-  echo "ERROR: unknown version CMD ($1)"
-  exit 1
-fi

Copied: vendor/apache/apr/1.5.2/build/get-version.sh (from rev 9273, vendor/apache/apr/dist/build/get-version.sh)
===================================================================
--- vendor/apache/apr/1.5.2/build/get-version.sh	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/get-version.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# extract version numbers from a header file
+#
+# USAGE: get-version.sh CMD VERSION_HEADER PREFIX
+#   where CMD is one of: all, major, libtool
+#   where PREFIX is the prefix to {MAJOR|MINOR|PATCH}_VERSION defines
+#
+#   get-version.sh all returns a dotted version number
+#   get-version.sh major returns just the major version number
+#   get-version.sh libtool returns a version "libtool -version-info" format
+#
+
+if test $# != 3; then
+  echo "USAGE: $0 CMD VERSION_HEADER PREFIX"
+  echo "  where CMD is one of: all, major, libtool"
+  exit 1
+fi
+
+major_sed="/#define.*$3_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p"
+minor_sed="/#define.*$3_MINOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p"
+patch_sed="/#define.*$3_PATCH_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p"
+major="`sed -n $major_sed $2`"
+minor="`sed -n $minor_sed $2`"
+patch="`sed -n $patch_sed $2`"
+
+if test "$1" = "all"; then
+  echo ${major}.${minor}.${patch}
+elif test "$1" = "major"; then
+  echo ${major}
+elif test "$1" = "libtool"; then
+  # Yes, ${minor}:${patch}:${minor} is correct due to libtool idiocy.
+  echo ${minor}:${patch}:${minor}
+else
+  echo "ERROR: unknown version CMD ($1)"
+  exit 1
+fi

Deleted: vendor/apache/apr/1.5.2/build/install.sh
===================================================================
--- vendor/apache/apr/dist/build/install.sh	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/install.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,112 +0,0 @@
-#!/bin/sh
-##
-##  install.sh -- install a program, script or datafile
-##
-##  Based on `install-sh' from the X Consortium's X11R5 distribution
-##  as of 89/12/18 which is freely available.
-##  Cleaned up for Apache's Autoconf-style Interface (APACI)
-##  by Ralf S. Engelschall <rse at apache.org>
-##
-#
-# This script falls under the Apache License.
-# See http://www.apache.org/docs/LICENSE
-
-
-#
-#   put in absolute paths if you don't have them in your path; 
-#   or use env. vars.
-#
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-
-#
-#   parse argument line
-#
-instcmd="$mvprog"
-chmodcmd=""
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-ext=""
-src=""
-dst=""
-while [ "x$1" != "x" ]; do
-    case $1 in
-        -c) instcmd="$cpprog"
-            shift; continue
-            ;;
-        -m) chmodcmd="$chmodprog $2"
-            shift; shift; continue
-            ;;
-        -o) chowncmd="$chownprog $2"
-            shift; shift; continue
-            ;;
-        -g) chgrpcmd="$chgrpprog $2"
-            shift; shift; continue
-            ;;
-        -s) stripcmd="$stripprog"
-            shift; continue
-            ;;
-        -S) stripcmd="$stripprog $2"
-            shift; shift; continue
-            ;;
-        -e) ext="$2"
-            shift; shift; continue
-            ;;
-        *)  if [ "x$src" = "x" ]; then
-                src=$1
-            else
-                dst=$1
-            fi
-            shift; continue
-            ;;
-    esac
-done
-if [ "x$src" = "x" ]; then
-     echo "install.sh: no input file specified"
-     exit 1
-fi
-if [ "x$dst" = "x" ]; then
-     echo "install.sh: no destination specified"
-     exit 1
-fi
-
-#
-#  If destination is a directory, append the input filename; if
-#  your system does not like double slashes in filenames, you may
-#  need to add some logic
-#
-if [ -d $dst ]; then
-    dst="$dst/`basename $src`"
-fi
-
-#  Add a possible extension (such as ".exe") to src and dst
-src="$src$ext"
-dst="$dst$ext"
-
-#  Make a temp file name in the proper directory.
-dstdir=`dirname $dst`
-dsttmp=$dstdir/#inst.$$#
-
-#  Move or copy the file name to the temp name
-$instcmd $src $dsttmp
-
-#  And set any options; do chmod last to preserve setuid bits
-if [ "x$chowncmd" != "x" ]; then $chowncmd $dsttmp; fi
-if [ "x$chgrpcmd" != "x" ]; then $chgrpcmd $dsttmp; fi
-if [ "x$stripcmd" != "x" ]; then $stripcmd $dsttmp; fi
-if [ "x$chmodcmd" != "x" ]; then $chmodcmd $dsttmp; fi
-
-#  Now rename the file to the real destination.
-$rmcmd $dst
-$mvcmd $dsttmp $dst
-
-exit 0
-

Copied: vendor/apache/apr/1.5.2/build/install.sh (from rev 9273, vendor/apache/apr/dist/build/install.sh)
===================================================================
--- vendor/apache/apr/1.5.2/build/install.sh	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/install.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,112 @@
+#!/bin/sh
+##
+##  install.sh -- install a program, script or datafile
+##
+##  Based on `install-sh' from the X Consortium's X11R5 distribution
+##  as of 89/12/18 which is freely available.
+##  Cleaned up for Apache's Autoconf-style Interface (APACI)
+##  by Ralf S. Engelschall <rse at apache.org>
+##
+#
+# This script falls under the Apache License.
+# See http://www.apache.org/docs/LICENSE
+
+
+#
+#   put in absolute paths if you don't have them in your path; 
+#   or use env. vars.
+#
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+
+#
+#   parse argument line
+#
+instcmd="$mvprog"
+chmodcmd=""
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+ext=""
+src=""
+dst=""
+while [ "x$1" != "x" ]; do
+    case $1 in
+        -c) instcmd="$cpprog"
+            shift; continue
+            ;;
+        -m) chmodcmd="$chmodprog $2"
+            shift; shift; continue
+            ;;
+        -o) chowncmd="$chownprog $2"
+            shift; shift; continue
+            ;;
+        -g) chgrpcmd="$chgrpprog $2"
+            shift; shift; continue
+            ;;
+        -s) stripcmd="$stripprog"
+            shift; continue
+            ;;
+        -S) stripcmd="$stripprog $2"
+            shift; shift; continue
+            ;;
+        -e) ext="$2"
+            shift; shift; continue
+            ;;
+        *)  if [ "x$src" = "x" ]; then
+                src=$1
+            else
+                dst=$1
+            fi
+            shift; continue
+            ;;
+    esac
+done
+if [ "x$src" = "x" ]; then
+     echo "install.sh: no input file specified"
+     exit 1
+fi
+if [ "x$dst" = "x" ]; then
+     echo "install.sh: no destination specified"
+     exit 1
+fi
+
+#
+#  If destination is a directory, append the input filename; if
+#  your system does not like double slashes in filenames, you may
+#  need to add some logic
+#
+if [ -d $dst ]; then
+    dst="$dst/`basename $src`"
+fi
+
+#  Add a possible extension (such as ".exe") to src and dst
+src="$src$ext"
+dst="$dst$ext"
+
+#  Make a temp file name in the proper directory.
+dstdir=`dirname $dst`
+dsttmp=$dstdir/#inst.$$#
+
+#  Move or copy the file name to the temp name
+$instcmd $src $dsttmp
+
+#  And set any options; do chmod last to preserve setuid bits
+if [ "x$chowncmd" != "x" ]; then $chowncmd $dsttmp; fi
+if [ "x$chgrpcmd" != "x" ]; then $chgrpcmd $dsttmp; fi
+if [ "x$stripcmd" != "x" ]; then $stripcmd $dsttmp; fi
+if [ "x$chmodcmd" != "x" ]; then $chmodcmd $dsttmp; fi
+
+#  Now rename the file to the real destination.
+$rmcmd $dst
+$mvcmd $dsttmp $dst
+
+exit 0
+

Deleted: vendor/apache/apr/1.5.2/build/jlibtool.c
===================================================================
--- vendor/apache/apr/dist/build/jlibtool.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/jlibtool.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,2056 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#if !defined(__MINGW32__)
-#include <sys/wait.h>
-#endif
-#include <unistd.h>
-#include <dirent.h>
-#include <errno.h>
-#include <assert.h>
-
-#ifdef __EMX__
-#  define SHELL_CMD  "sh"
-#  define GEN_EXPORTS "emxexp"
-#  define DEF2IMPLIB_CMD "emximp"
-#  define SHARE_SW   "-Zdll -Zmtd"
-#  define USE_OMF 1
-#  define TRUNCATE_DLL_NAME
-#  define DYNAMIC_LIB_EXT "dll"
-#  define EXE_EXT ".exe"
-
-#  if USE_OMF
-     /* OMF is the native format under OS/2 */
-#    define STATIC_LIB_EXT "lib"
-#    define OBJECT_EXT     "obj"
-#    define LIBRARIAN      "emxomfar"
-#    define LIBRARIAN_OPTS "cr"
-#  else
-     /* but the alternative, a.out, can fork() which is sometimes necessary */
-#    define STATIC_LIB_EXT "a"
-#    define OBJECT_EXT     "o"
-#    define LIBRARIAN      "ar"
-#    define LIBRARIAN_OPTS "cr"
-#  endif
-#endif
-
-#if defined(__APPLE__)
-#  define SHELL_CMD  "/bin/sh"
-#  define DYNAMIC_LIB_EXT "dylib"
-#  define MODULE_LIB_EXT  "bundle"
-#  define STATIC_LIB_EXT "a"
-#  define OBJECT_EXT     "o"
-#  define LIBRARIAN      "ar"
-#  define LIBRARIAN_OPTS "cr"
-/* man libtool(1) documents ranlib option of -c.  */
-#  define RANLIB "ranlib"
-#  define PIC_FLAG "-fPIC -fno-common"
-#  define SHARED_OPTS "-dynamiclib"
-#  define MODULE_OPTS "-bundle -dynamic"
-#  define DYNAMIC_LINK_OPTS "-flat_namespace"
-#  define DYNAMIC_LINK_UNDEFINED "-undefined suppress"
-#  define dynamic_link_version_func darwin_dynamic_link_function
-#  define DYNAMIC_INSTALL_NAME "-install_name"
-#  define DYNAMIC_LINK_NO_INSTALL "-dylib_file"
-#  define HAS_REALPATH
-/*-install_name  /Users/jerenk/apache-2.0-cvs/lib/libapr.0.dylib -compatibility_version 1 -current_version 1.0 */
-#  define LD_LIBRARY_PATH "DYLD_LIBRARY_PATH"
-#endif
-
-#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
-#  define SHELL_CMD  "/bin/sh"
-#  define DYNAMIC_LIB_EXT "so"
-#  define MODULE_LIB_EXT  "so"
-#  define STATIC_LIB_EXT "a"
-#  define OBJECT_EXT     "o"
-#  define LIBRARIAN      "ar"
-#  define LIBRARIAN_OPTS "cr"
-#  define RANLIB "ranlib"
-#  define PIC_FLAG "-fPIC"
-#  define RPATH "-rpath"
-#  define SHARED_OPTS "-shared"
-#  define MODULE_OPTS "-shared"
-#  define DYNAMIC_LINK_OPTS "-export-dynamic"
-#  define LINKER_FLAG_PREFIX "-Wl,"
-#  define ADD_MINUS_L
-#  define LD_RUN_PATH "LD_RUN_PATH"
-#  define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
-#endif
-
-#if defined(sun)
-#  define SHELL_CMD  "/bin/sh"
-#  define DYNAMIC_LIB_EXT "so"
-#  define MODULE_LIB_EXT  "so"
-#  define STATIC_LIB_EXT "a"
-#  define OBJECT_EXT     "o"
-#  define LIBRARIAN      "ar"
-#  define LIBRARIAN_OPTS "cr"
-#  define RANLIB "ranlib"
-#  define PIC_FLAG "-KPIC"
-#  define RPATH "-R"
-#  define SHARED_OPTS "-G"
-#  define MODULE_OPTS "-G"
-#  define DYNAMIC_LINK_OPTS ""
-#  define LINKER_FLAG_NO_EQUALS
-#  define ADD_MINUS_L
-#  define HAS_REALPATH
-#  define LD_RUN_PATH "LD_RUN_PATH"
-#  define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
-#endif
-
-#if defined(_OSD_POSIX)
-#  define SHELL_CMD  "/usr/bin/sh"
-#  define DYNAMIC_LIB_EXT "so"
-#  define MODULE_LIB_EXT  "so"
-#  define STATIC_LIB_EXT "a"
-#  define OBJECT_EXT     "o"
-#  define LIBRARIAN      "ar"
-#  define LIBRARIAN_OPTS "cr"
-#  define SHARED_OPTS "-G"
-#  define MODULE_OPTS "-G"
-#  define LINKER_FLAG_PREFIX "-Wl,"
-#  define NEED_SNPRINTF
-#endif
-
-#if defined(sinix) && defined(mips) && defined(__SNI_TARG_UNIX)
-#  define SHELL_CMD  "/usr/bin/sh"
-#  define DYNAMIC_LIB_EXT "so"
-#  define MODULE_LIB_EXT  "so"
-#  define STATIC_LIB_EXT "a"
-#  define OBJECT_EXT     "o"
-#  define LIBRARIAN      "ar"
-#  define LIBRARIAN_OPTS "cr"
-#  define RPATH "-Brpath"
-#  define SHARED_OPTS "-G"
-#  define MODULE_OPTS "-G"
-#  define DYNAMIC_LINK_OPTS "-Wl,-Blargedynsym"
-#  define LINKER_FLAG_PREFIX "-Wl,"
-#  define NEED_SNPRINTF
-#  define LD_RUN_PATH "LD_RUN_PATH"
-#  define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
-#endif
-
-#if defined(__MINGW32__)
-#  define SHELL_CMD "sh"
-#  define DYNAMIC_LIB_EXT "dll"
-#  define MODULE_LIB_EXT  "dll"
-#  define STATIC_LIB_EXT "a"
-#  define OBJECT_EXT     "o"
-#  define LIBRARIAN      "ar"
-#  define LIBRARIAN_OPTS "cr"
-#  define RANLIB "ranlib"
-#  define LINKER_FLAG_PREFIX "-Wl,"
-#  define SHARED_OPTS "-shared"
-#  define MODULE_OPTS "-shared"
-#  define MKDIR_NO_UMASK
-#  define EXE_EXT ".exe"
-#endif
-
-#ifndef SHELL_CMD
-#error Unsupported platform: Please add defines for SHELL_CMD etc. for your platform.
-#endif
-
-#ifdef NEED_SNPRINTF
-#include <stdarg.h>
-#endif
-
-#ifdef __EMX__
-#include <process.h>
-#endif
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-
-/* We want to say we are libtool 1.4 for shlibtool compatibility. */
-#define VERSION "1.4"
-
-enum tool_mode_t {
-    mUnknown,
-    mCompile,
-    mLink,
-    mInstall,
-};
-
-enum output_t {
-    otGeneral,
-    otObject,
-    otProgram,
-    otLibrary,
-    otStaticLibraryOnly,
-    otDynamicLibraryOnly,
-    otModule,
-};
-
-enum pic_mode_e {
-    pic_UNKNOWN,
-    pic_PREFER,
-    pic_AVOID,
-};
-
-enum shared_mode_e {
-    share_UNSET,
-    share_STATIC,
-    share_SHARED,
-};
-
-enum lib_type {
-    type_UNKNOWN,
-    type_DYNAMIC_LIB,
-    type_STATIC_LIB,
-    type_MODULE_LIB,
-    type_OBJECT,
-};
-
-typedef struct {
-    const char **vals;
-    int num; 
-} count_chars;
-
-typedef struct {
-    const char *normal;
-    const char *install;
-} library_name;
-
-typedef struct {
-    count_chars *normal;
-    count_chars *install;
-    count_chars *dependencies;
-} library_opts;
-
-typedef struct {
-    int silent;
-    enum shared_mode_e shared;
-    int export_all;
-    int dry_run;
-    enum pic_mode_e pic_mode;
-    int export_dynamic;
-    int no_install;
-} options_t;
-
-typedef struct {
-    enum tool_mode_t mode;
-    enum output_t output;
-    options_t options;
-
-    char *output_name;
-    char *fake_output_name;
-    char *basename;
-
-    const char *install_path;
-    const char *compiler;
-    const char *program;
-    count_chars *program_opts;
-
-    count_chars *arglist;
-    count_chars *tmp_dirs;
-    count_chars *obj_files;
-    count_chars *dep_rpaths;
-    count_chars *rpaths;
-
-    library_name static_name;
-    library_name shared_name;
-    library_name module_name;
-
-    library_opts static_opts;
-    library_opts shared_opts;
-
-    const char *version_info;
-    const char *undefined_flag;
-} command_t;
-
-#ifdef RPATH
-void add_rpath(count_chars *cc, const char *path);
-#endif
-
-#if defined(NEED_SNPRINTF)
-/* Write at most n characters to the buffer in str, return the
- * number of chars written or -1 if the buffer would have been
- * overflowed.
- *
- * This is portable to any POSIX-compliant system has /dev/null
- */
-static FILE *f=NULL;
-static int vsnprintf( char *str, size_t n, const char *fmt, va_list ap )
-{
-       int res;
-
-       if (f == NULL)
-               f = fopen("/dev/null","w");
-       if (f == NULL)
-               return -1;
-
-       setvbuf( f, str, _IOFBF, n );
-
-       res = vfprintf( f, fmt, ap );
-
-       if ( res > 0 && res < n ) {
-               res = vsprintf( str, fmt, ap );
-       }
-       return res;
-}
-static int snprintf( char *str, size_t n, const char *fmt, ... )
-{
-        va_list ap;
-        int res;
- 
-        va_start( ap, fmt );
-        res = vsnprintf( str, n, fmt, ap );
-        va_end( ap );
-        return res;
-}
-#endif
-
-void init_count_chars(count_chars *cc)
-{
-    cc->vals = (const char**)malloc(PATH_MAX*sizeof(char*));
-    cc->num = 0;
-}
-
-void clear_count_chars(count_chars *cc)
-{
-    int i;
-    for (i = 0; i < cc->num; i++) {
-        cc->vals[i] = 0;
-    }
-
-    cc->num = 0;
-}
-
-void push_count_chars(count_chars *cc, const char *newval)
-{
-    cc->vals[cc->num++] = newval;
-}
-
-void pop_count_chars(count_chars *cc)
-{
-    cc->num--;
-}
-
-void insert_count_chars(count_chars *cc, const char *newval, int position)
-{
-    int i;
-
-    for (i = cc->num; i > position; i--) {
-        cc->vals[i] = cc->vals[i-1];
-    }
-
-    cc->vals[position] = newval;
-    cc->num++;
-}
-
-void append_count_chars(count_chars *cc, count_chars *cctoadd)
-{
-    int i;
-    for (i = 0; i < cctoadd->num; i++) {
-        if (cctoadd->vals[i]) {
-            push_count_chars(cc, cctoadd->vals[i]);
-        }
-    }
-}
-
-const char *flatten_count_chars(count_chars *cc, int space)
-{
-    int i, size;
-    char *newval;
-
-    size = 0;
-    for (i = 0; i < cc->num; i++) {
-        if (cc->vals[i]) {
-            size += strlen(cc->vals[i]) + 1;
-            if (space) {
-              size++;
-            }
-        }
-    }
-
-    newval = (char*)malloc(size + 1);
-    newval[0] = 0;
-
-    for (i = 0; i < cc->num; i++) {
-        if (cc->vals[i]) {
-            strcat(newval, cc->vals[i]);
-            if (space) {
-                strcat(newval, " ");
-            }
-        }
-    }
-
-    return newval;
-}
-
-char *shell_esc(const char *str)
-{
-    int in_quote = 0;
-    char *cmd;
-    unsigned char *d;
-    const unsigned char *s;
-
-    cmd = (char *)malloc(2 * strlen(str) + 3);
-    d = (unsigned char *)cmd;
-    s = (const unsigned char *)str;
-
-#ifdef __MINGW32__
-    *d++ = '\"';
-#endif
-
-    for (; *s; ++s) {
-        if (*s == '"') {
-            *d++ = '\\';
-            in_quote++;
-        }
-        else if (*s == '\\' || (*s == ' ' && (in_quote % 2))) {
-            *d++ = '\\';
-        }
-        *d++ = *s;
-    }
-
-#ifdef __MINGW32__
-    *d++ = '\"';
-#endif
-
-    *d = '\0';
-    return cmd;
-}
-
-int external_spawn(command_t *cmd, const char *file, const char **argv)
-{
-    if (!cmd->options.silent) {
-        const char **argument = argv;
-        printf("Executing: ");
-        while (*argument) {
-            printf("%s ", *argument);
-            argument++;
-        }
-        puts("");
-    }
-
-    if (cmd->options.dry_run) {
-        return 0;
-    }
-#if defined(__EMX__) || defined(__MINGW32__)
-    return spawnvp(P_WAIT, argv[0], argv);
-#else
-    {
-        pid_t pid;
-        pid = fork();
-        if (pid == 0) {
-            return execvp(argv[0], (char**)argv);
-        }
-        else {
-            int statuscode;
-            waitpid(pid, &statuscode, 0);
-            if (WIFEXITED(statuscode)) {
-                return WEXITSTATUS(statuscode);
-            }
-            return 0;
-        }
-    }
-#endif
-}
-
-int run_command(command_t *cmd_data, count_chars *cc)
-{
-    char *command;
-    const char *spawn_args[4];
-    count_chars tmpcc;
-
-    init_count_chars(&tmpcc);
-
-    if (cmd_data->program) {
-        push_count_chars(&tmpcc, cmd_data->program);
-    }
-
-    append_count_chars(&tmpcc, cmd_data->program_opts);
-
-    append_count_chars(&tmpcc, cc);
-
-    command = shell_esc(flatten_count_chars(&tmpcc, 1));
-
-    spawn_args[0] = SHELL_CMD;
-    spawn_args[1] = "-c";
-    spawn_args[2] = command;
-    spawn_args[3] = NULL;
-    return external_spawn(cmd_data, spawn_args[0], (const char**)spawn_args);
-}
-
-/*
- * print configuration
- * shlibpath_var is used in configure.
- */
-void print_config()
-{
-#ifdef LD_RUN_PATH
-    printf("runpath_var=%s\n", LD_RUN_PATH);
-#endif
-#ifdef LD_LIBRARY_PATH
-    printf("shlibpath_var=%s\n", LD_LIBRARY_PATH);
-#endif
-#ifdef SHELL_CMD
-    printf("SHELL=\"%s\"\n", SHELL_CMD);
-#endif
-}
-/*
- * Add a directory to the runtime library search path.
- */
-void add_runtimedirlib(char *arg, command_t *cmd_data)
-{
-#ifdef RPATH
-    add_rpath(cmd_data->shared_opts.dependencies, arg);
-#else
-#endif
-}
-
-int parse_long_opt(char *arg, command_t *cmd_data)
-{
-    char *equal_pos = strchr(arg, '=');
-    char var[50];
-    char value[500];
-
-    if (equal_pos) {
-        strncpy(var, arg, equal_pos - arg);
-        var[equal_pos - arg] = 0;
-        strcpy(value, equal_pos + 1);
-    } else {
-        strcpy(var, arg);
-    }
-
-    if (strcmp(var, "silent") == 0) {
-        cmd_data->options.silent = 1;
-    } else if (strcmp(var, "mode") == 0) {
-        if (strcmp(value, "compile") == 0) {
-            cmd_data->mode = mCompile;
-            cmd_data->output = otObject;
-        }
-
-        if (strcmp(value, "link") == 0) {
-            cmd_data->mode = mLink;
-            cmd_data->output = otLibrary;
-        }
-
-        if (strcmp(value, "install") == 0) {
-            cmd_data->mode = mInstall;
-        }
-    } else if (strcmp(var, "shared") == 0) {
-        if (cmd_data->mode == mLink) {
-            cmd_data->output = otDynamicLibraryOnly;
-        }
-        cmd_data->options.shared = share_SHARED;
-    } else if (strcmp(var, "export-all") == 0) {
-        cmd_data->options.export_all = 1;
-    } else if (strcmp(var, "dry-run") == 0) {
-        printf("Dry-run mode on!\n");
-        cmd_data->options.dry_run = 1;
-    } else if (strcmp(var, "version") == 0) {
-        printf("Version " VERSION "\n");
-    } else if (strcmp(var, "help") == 0) {
-        printf("Sorry.  No help available.\n");
-    } else if (strcmp(var, "config") == 0) {
-        print_config();
-    } else if (strcmp(var, "tag") == 0) {
-        if (strcmp(value, "CC") == 0) {
-            /* Do nothing. */
-        }
-        if (strcmp(value, "CXX") == 0) {
-            /* Do nothing. */
-        }
-    } else {
-        return 0;
-    }
-
-    return 1;
-}
-
-/* Return 1 if we eat it. */
-int parse_short_opt(char *arg, command_t *cmd_data)
-{
-    if (strcmp(arg, "export-dynamic") == 0) {
-        cmd_data->options.export_dynamic = 1;
-        return 1;
-    }
-
-    if (strcmp(arg, "module") == 0) {
-        cmd_data->output = otModule;
-        return 1;
-    }
-
-    if (strcmp(arg, "shared") == 0) {
-        if (cmd_data->mode == mLink) {
-            cmd_data->output = otDynamicLibraryOnly;
-        }
-        cmd_data->options.shared = share_SHARED;
-        return 1;
-    }
-
-    if (strcmp(arg, "Zexe") == 0) {
-        return 1;
-    }
-
-    if (strcmp(arg, "avoid-version") == 0) {
-        return 1;
-    }
-
-    if (strcmp(arg, "prefer-pic") == 0) {
-        cmd_data->options.pic_mode = pic_PREFER;
-        return 1;
-    }
-
-    if (strcmp(arg, "prefer-non-pic") == 0) {
-        cmd_data->options.pic_mode = pic_AVOID;
-        return 1;
-    }
-
-    if (strcmp(arg, "static") == 0) {
-        cmd_data->options.shared = share_STATIC;
-        return 1;
-    }
-
-    if (cmd_data->mode == mLink) {
-        if (strcmp(arg, "no-install") == 0) {
-            cmd_data->options.no_install = 1;
-            return 1;
-        }
-        if (arg[0] == 'L' || arg[0] == 'l') {
-            /* Hack... */
-            arg--;
-            push_count_chars(cmd_data->shared_opts.dependencies, arg);
-            return 1;
-        } else if (arg[0] == 'R' && arg[1]) {
-            /* -Rdir Add dir to runtime library search path. */
-            add_runtimedirlib(&arg[1], cmd_data);
-            return 1;
-        }
-    }
-    return 0;
-}
-
-char *truncate_dll_name(char *path)
-{
-    /* Cut DLL name down to 8 characters after removing any mod_ prefix */
-    char *tmppath = strdup(path);
-    char *newname = strrchr(tmppath, '/') + 1;
-    char *ext = strrchr(tmppath, '.');
-    int len;
-
-    if (ext == NULL)
-        return tmppath;
-
-    len = ext - newname;
-
-    if (strncmp(newname, "mod_", 4) == 0) {
-        strcpy(newname, newname + 4);
-        len -= 4;
-    }
-
-    if (len > 8) {
-        strcpy(newname + 8, strchr(newname, '.'));
-    }
-
-    return tmppath;
-}
-
-long safe_strtol(const char *nptr, const char **endptr, int base)
-{
-    long rv;
-
-    errno = 0;
-
-    rv = strtol(nptr, (char**)endptr, 10);
-
-    if (errno == ERANGE) {
-        return 0;
-    }
-
-    return rv; 
-}
-
-void safe_mkdir(const char *path)
-{
-    mode_t old_umask;
-
-    old_umask = umask(0);
-    umask(old_umask);
-
-#ifdef MKDIR_NO_UMASK
-    mkdir(path);
-#else
-    mkdir(path, ~old_umask);
-#endif
-}
-
-/* returns just a file's name without the path */
-const char *jlibtool_basename(const char *fullpath)
-{
-    const char *name = strrchr(fullpath, '/');
-
-    if (name == NULL) {
-        name = strrchr(fullpath, '\\');
-    }
-
-    if (name == NULL) {
-        name = fullpath;
-    } else {
-        name++;
-    }
-
-    return name;
-}
-
-/* returns just a file's name without path or extension */
-const char *nameof(const char *fullpath)
-{
-    const char *name;
-    const char *ext;
-
-    name = jlibtool_basename(fullpath);
-    ext = strrchr(name, '.');
-
-    if (ext) {
-        char *trimmed;
-        trimmed = malloc(ext - name + 1);
-        strncpy(trimmed, name, ext - name);
-        trimmed[ext-name] = 0;
-        return trimmed;
-    }
-
-    return name;
-}
-
-/* version_info is in the form of MAJOR:MINOR:PATCH */
-const char *darwin_dynamic_link_function(const char *version_info)
-{
-    char *newarg;
-    long major, minor, patch;
-
-    major = 0;
-    minor = 0;
-    patch = 0;
-
-    if (version_info) {
-        major = safe_strtol(version_info, &version_info, 10);
-
-        if (version_info) {
-            if (version_info[0] == ':') {
-                version_info++;
-            }
-
-            minor = safe_strtol(version_info, &version_info, 10);
-
-            if (version_info) {
-                if (version_info[0] == ':') {
-                    version_info++;
-                }
-
-                patch = safe_strtol(version_info, &version_info, 10);
-
-            }
-        }
-    }
-
-    /* Avoid -dylib_compatibility_version must be greater than zero errors. */
-    if (major == 0) {
-        major = 1;
-    }
-    newarg = (char*)malloc(100);
-    snprintf(newarg, 99,
-             "-compatibility_version %ld -current_version %ld.%ld",
-             major, major, minor);
-
-    return newarg;
-}
-
-/* genlib values
- * 0 - static
- * 1 - dynamic
- * 2 - module
- */
-char *gen_library_name(const char *name, int genlib)
-{
-    char *newarg, *newext;
-
-    newarg = (char *)malloc(strlen(name) + 11);
-    strcpy(newarg, ".libs/");
-
-    if (genlib == 2 && strncmp(name, "lib", 3) == 0) {
-        name += 3;
-    }
-
-    if (genlib == 2) {
-        strcat(newarg, jlibtool_basename(name));
-    }
-    else {
-        strcat(newarg, name);
-    }
-
-    newext = strrchr(newarg, '.') + 1;
-
-    switch (genlib) {
-    case 0:
-        strcpy(newext, STATIC_LIB_EXT);
-        break;
-    case 1:
-        strcpy(newext, DYNAMIC_LIB_EXT);
-        break;
-    case 2:
-        strcpy(newext, MODULE_LIB_EXT);
-        break;
-    }
-
-    return newarg;
-}
-
-/* genlib values
- * 0 - static
- * 1 - dynamic
- * 2 - module
- */
-char *gen_install_name(const char *name, int genlib)
-{
-    struct stat sb;
-    char *newname;
-    int rv;
-
-    newname = gen_library_name(name, genlib);
-
-    /* Check if it exists. If not, return NULL.  */
-    rv = stat(newname, &sb);
-
-    if (rv) {
-        return NULL;
-    }
-
-    return newname;
-}
-
-char *check_object_exists(command_t *cmd, const char *arg, int arglen)
-{
-    char *newarg, *ext;
-    int pass, rv;
-
-    newarg = (char *)malloc(arglen + 10);
-    memcpy(newarg, arg, arglen);
-    newarg[arglen] = 0;
-    ext = newarg + arglen;
-
-    pass = 0;
-
-    do {
-        struct stat sb;
-
-        switch (pass) {
-        case 0:
-            strcpy(ext, OBJECT_EXT);
-            break;
-/*
-        case 1:
-            strcpy(ext, NO_PIC_EXT);
-            break;
-*/
-        default:
-            break;
-        } 
-
-        if (!cmd->options.silent) {
-            printf("Checking (obj): %s\n", newarg);
-        }
-        rv = stat(newarg, &sb);
-    }
-    while (rv != 0 && ++pass < 1);
-
-    if (rv == 0) {
-        if (pass == 1) {
-            cmd->options.pic_mode = pic_AVOID;
-        }
-        return newarg;
-    }
-
-    return NULL;
-}
-
-/* libdircheck values:
- * 0 - no .libs suffix
- * 1 - .libs suffix
- */
-char *check_library_exists(command_t *cmd, const char *arg, int pathlen,
-                           int libdircheck, enum lib_type *libtype)
-{
-    char *newarg, *ext;
-    int pass, rv, newpathlen;
-
-    newarg = (char *)malloc(strlen(arg) + 10);
-    strcpy(newarg, arg);
-    newarg[pathlen] = 0;
-
-    newpathlen = pathlen;
-    if (libdircheck) {
-        strcat(newarg, ".libs/");
-        newpathlen += sizeof(".libs/") - 1;
-    }
-
-    strcpy(newarg+newpathlen, arg+pathlen);
-    ext = strrchr(newarg, '.') + 1;
-
-    pass = 0;
-
-    do {
-        struct stat sb;
-
-        switch (pass) {
-        case 0:
-            if (cmd->options.pic_mode != pic_AVOID &&
-                cmd->options.shared != share_STATIC) {
-                strcpy(ext, DYNAMIC_LIB_EXT);
-                *libtype = type_DYNAMIC_LIB;
-                break;
-            }
-            pass = 1;
-            /* Fall through */
-        case 1:
-            strcpy(ext, STATIC_LIB_EXT);
-            *libtype = type_STATIC_LIB;
-            break;
-        case 2:
-            strcpy(ext, MODULE_LIB_EXT);
-            *libtype = type_MODULE_LIB;
-            break;
-        case 3:
-            strcpy(ext, OBJECT_EXT);
-            *libtype = type_OBJECT;
-            break;
-        default:
-            *libtype = type_UNKNOWN;
-            break;
-        } 
-
-        if (!cmd->options.silent) {
-            printf("Checking (lib): %s\n", newarg);
-        }
-        rv = stat(newarg, &sb);
-    }
-    while (rv != 0 && ++pass < 4);
-
-    if (rv == 0) {
-        return newarg;
-    }
-
-    return NULL;
-}
-
-char * load_install_path(const char *arg)
-{
-    FILE *f;
-    char *path;
-
-    path = malloc(PATH_MAX);
-
-    f = fopen(arg,"r");
-    if (f == NULL) {
-        return NULL;
-    }
-    fgets(path, PATH_MAX, f);
-    fclose(f);
-    if (path[strlen(path)-1] == '\n') {
-        path[strlen(path)-1] = '\0';
-    }
-    /* Check that we have an absolute path.
-     * Otherwise the file could be a GNU libtool file.
-     */
-    if (path[0] != '/') {
-        return NULL;
-    }
-    return path;
-}
-
-char * load_noinstall_path(const char *arg, int pathlen)
-{
-    char *newarg, *expanded_path;
-    int newpathlen;
-
-    newarg = (char *)malloc(strlen(arg) + 10);
-    strcpy(newarg, arg);
-    newarg[pathlen] = 0;
-
-    newpathlen = pathlen;
-    strcat(newarg, ".libs");
-    newpathlen += sizeof(".libs") - 1;
-    newarg[newpathlen] = 0;
-
-#ifdef HAS_REALPATH
-    expanded_path = malloc(PATH_MAX);
-    expanded_path = realpath(newarg, expanded_path);
-    /* Uh, oh.  There was an error.  Fall back on our first guess. */
-    if (!expanded_path) {
-        expanded_path = newarg;
-    }
-#else
-    /* We might get ../ or something goofy.  Oh, well. */
-    expanded_path = newarg;
-#endif
-
-    return expanded_path;
-}
-
-void add_dynamic_link_opts(command_t *cmd_data, count_chars *args)
-{
-#ifdef DYNAMIC_LINK_OPTS
-    if (cmd_data->options.pic_mode != pic_AVOID) {
-        if (!cmd_data->options.silent) {
-           printf("Adding: %s\n", DYNAMIC_LINK_OPTS);
-        }
-        push_count_chars(args, DYNAMIC_LINK_OPTS);
-        if (cmd_data->undefined_flag) {
-            push_count_chars(args, "-undefined");
-#if defined(__APPLE__)
-            /* -undefined dynamic_lookup is used by the bundled Python in
-             * 10.4, but if we don't set MACOSX_DEPLOYMENT_TARGET to 10.3+,
-             * we'll get a linker error if we pass this flag.
-             */
-            if (strcasecmp(cmd_data->undefined_flag,
-                           "dynamic_lookup") == 0) {
-                insert_count_chars(cmd_data->program_opts,
-                                   "MACOSX_DEPLOYMENT_TARGET=10.3", 0);
-            }
-#endif
-            push_count_chars(args, cmd_data->undefined_flag);
-        }
-        else {
-#ifdef DYNAMIC_LINK_UNDEFINED
-            if (!cmd_data->options.silent) {
-                printf("Adding: %s\n", DYNAMIC_LINK_UNDEFINED);
-            }
-            push_count_chars(args, DYNAMIC_LINK_UNDEFINED);
-#endif
-        }
-    }
-#endif
-}
-
-/* Read the final install location and add it to runtime library search path. */
-#ifdef RPATH
-void add_rpath(count_chars *cc, const char *path)
-{
-    int size = 0;
-    char *tmp;
-
-#ifdef LINKER_FLAG_PREFIX
-    size = strlen(LINKER_FLAG_PREFIX);
-#endif
-    size = size + strlen(path) + strlen(RPATH) + 2;
-    tmp = malloc(size);
-    if (tmp == NULL) {
-        return;
-    }
-#ifdef LINKER_FLAG_PREFIX
-    strcpy(tmp, LINKER_FLAG_PREFIX);
-    strcat(tmp, RPATH);
-#else
-    strcpy(tmp, RPATH);
-#endif
-#ifndef LINKER_FLAG_NO_EQUALS
-    strcat(tmp, "=");
-#endif
-    strcat(tmp, path);
-
-    push_count_chars(cc, tmp);
-}
-
-void add_rpath_file(count_chars *cc, const char *arg)
-{
-    const char *path;
-
-    path = load_install_path(arg);
-    if (path) {
-        add_rpath(cc, path);
-    }
-}
-
-void add_rpath_noinstall(count_chars *cc, const char *arg, int pathlen)
-{
-    const char *path;
-
-    path = load_noinstall_path(arg, pathlen);
-    if (path) {
-        add_rpath(cc, path);
-    }
-}
-#endif
-
-#ifdef DYNAMIC_LINK_NO_INSTALL
-void add_dylink_noinstall(count_chars *cc, const char *arg, int pathlen,
-                          int extlen)
-{
-    const char *install_path, *current_path, *name;
-    char *exp_argument;
-    int i_p_len, c_p_len, name_len, dyext_len, cur_len;
-
-    install_path = load_install_path(arg);
-    current_path = load_noinstall_path(arg, pathlen);
-
-    if (!install_path || !current_path) {
-        return;
-    }
-
-    push_count_chars(cc, DYNAMIC_LINK_NO_INSTALL);
-
-    i_p_len = strlen(install_path);
-    c_p_len = strlen(current_path);
-
-    name = arg+pathlen;
-    name_len = extlen-pathlen;
-    dyext_len = sizeof(DYNAMIC_LIB_EXT) - 1;
-
-    /* No, we need to replace the extension. */
-    exp_argument = (char *)malloc(i_p_len + c_p_len + (name_len*2) +
-                                  (dyext_len*2) + 2);
-
-    cur_len = 0;
-    strcpy(exp_argument, install_path);
-    cur_len += i_p_len;
-    exp_argument[cur_len++] = '/';
-    strncpy(exp_argument+cur_len, name, extlen-pathlen);
-    cur_len += name_len;
-    strcpy(exp_argument+cur_len, DYNAMIC_LIB_EXT);
-    cur_len += dyext_len;
-    exp_argument[cur_len++] = ':';
-    strcpy(exp_argument+cur_len, current_path);
-    cur_len += c_p_len;
-    exp_argument[cur_len++] = '/';
-    strncpy(exp_argument+cur_len, name, extlen-pathlen);
-    cur_len += name_len;
-    strcpy(exp_argument+cur_len, DYNAMIC_LIB_EXT);
-    cur_len += dyext_len;
-
-    push_count_chars(cc, exp_argument);
-}
-#endif
-
-/* use -L -llibname to allow to use installed libraries */
-void add_minus_l(count_chars *cc, const char *arg)
-{
-    char *newarg;
-    char *name = strrchr(arg, '/');
-    char *file = strrchr(arg, '.');
-    char *lib  = strstr(name, "lib");
-
-    if (name !=NULL && file != NULL && lib == name+1) {
-        *name = '\0';
-        *file = '\0';
-        file = name;
-        file = file+4;
-        push_count_chars(cc, "-L");
-        push_count_chars(cc, arg);
-        /* we need one argument like -lapr-1 */
-        newarg = malloc(strlen(file) + 3);
-        strcpy(newarg, "-l");
-        strcat(newarg, file);
-        push_count_chars(cc, newarg);
-    } else {
-        push_count_chars(cc, arg);
-    }
-}
-
-void add_linker_flag_prefix(count_chars *cc, const char *arg)
-{
-#ifndef LINKER_FLAG_PREFIX
-    push_count_chars(cc, arg);
-#else
-    char *newarg;
-    newarg = (char*)malloc(strlen(arg) + sizeof(LINKER_FLAG_PREFIX) + 1);
-    strcpy(newarg, LINKER_FLAG_PREFIX);
-    strcat(newarg, arg);
-    push_count_chars(cc, newarg);
-#endif
-}
-
-int explode_static_lib(command_t *cmd_data, const char *lib)
-{
-    count_chars tmpdir_cc, libname_cc;
-    const char *tmpdir, *libname;
-    char savewd[PATH_MAX];
-    const char *name;
-    DIR *dir;
-    struct dirent *entry;
-    const char *lib_args[4];
-
-    /* Bah! */
-    if (cmd_data->options.dry_run) {
-        return 0;
-    }
-
-    name = jlibtool_basename(lib);
-
-    init_count_chars(&tmpdir_cc);
-    push_count_chars(&tmpdir_cc, ".libs/");
-    push_count_chars(&tmpdir_cc, name);
-    push_count_chars(&tmpdir_cc, ".exploded/");
-    tmpdir = flatten_count_chars(&tmpdir_cc, 0);
-
-    if (!cmd_data->options.silent) {
-        printf("Making: %s\n", tmpdir);
-    }
-    safe_mkdir(tmpdir);
-
-    push_count_chars(cmd_data->tmp_dirs, tmpdir);
-
-    getcwd(savewd, sizeof(savewd));
-
-    if (chdir(tmpdir) != 0) {
-        if (!cmd_data->options.silent) {
-            printf("Warning: could not explode %s\n", lib);
-        }
-        return 1;
-    }
-
-    if (lib[0] == '/') {
-        libname = lib;
-    }
-    else {
-        init_count_chars(&libname_cc);
-        push_count_chars(&libname_cc, "../../");
-        push_count_chars(&libname_cc, lib);
-        libname = flatten_count_chars(&libname_cc, 0);
-    }
-
-    lib_args[0] = LIBRARIAN;
-    lib_args[1] = "x";
-    lib_args[2] = libname;
-    lib_args[3] = NULL;
-
-    external_spawn(cmd_data, LIBRARIAN, lib_args);
-
-    chdir(savewd);
-    dir = opendir(tmpdir);
-
-    while ((entry = readdir(dir)) != NULL) {
-#if defined(__APPLE__) && defined(RANLIB)
-        /* Apple inserts __.SYMDEF which isn't needed.
-         * Leopard (10.5+) can also add '__.SYMDEF SORTED' which isn't
-         * much fun either.  Just skip them.
-         */
-        if (strstr(entry->d_name, "__.SYMDEF") != NULL) {
-            continue;
-        }
-#endif
-        if (entry->d_name[0] != '.') {
-            push_count_chars(&tmpdir_cc, entry->d_name);
-            name = flatten_count_chars(&tmpdir_cc, 0);
-            if (!cmd_data->options.silent) {
-                printf("Adding: %s\n", name);
-            }
-            push_count_chars(cmd_data->obj_files, name);
-            pop_count_chars(&tmpdir_cc);
-        }
-    }
-
-    closedir(dir);
-    return 0;
-}
-
-int parse_input_file_name(char *arg, command_t *cmd_data)
-{
-    char *ext = strrchr(arg, '.');
-    char *name = strrchr(arg, '/');
-    int pathlen;
-    enum lib_type libtype;
-    char *newarg;
-
-    if (!ext) {
-        return 0;
-    }
-
-    ext++;
-
-    if (name == NULL) {
-        name = strrchr(arg, '\\');
-
-        if (name == NULL) {
-            name = arg;
-        } else {
-            name++;
-        }
-    } else {
-        name++;
-    }
-
-    pathlen = name - arg;
-
-    if (strcmp(ext, "lo") == 0) {
-        newarg = check_object_exists(cmd_data, arg, ext - arg);
-        if (!newarg) {
-            printf("Can not find suitable object file for %s\n", arg);
-            exit(1);
-        }
-        if (cmd_data->mode != mLink) {
-            push_count_chars(cmd_data->arglist, newarg);
-        }
-        else {
-            push_count_chars(cmd_data->obj_files, newarg);
-        }
-        return 1;
-    }
-
-    if (strcmp(ext, "la") == 0) {
-        switch (cmd_data->mode) {
-        case mLink:
-            /* Try the .libs dir first! */
-            newarg = check_library_exists(cmd_data, arg, pathlen, 1, &libtype);
-            if (!newarg) {
-                /* Try the normal dir next. */
-                newarg = check_library_exists(cmd_data, arg, pathlen, 0, &libtype);
-                if (!newarg) {
-                    printf("Can not find suitable library for %s\n", arg);
-                    exit(1);
-                }
-            }
-
-            /* It is not ok to just add the file: a library may added with:
-               1 - -L path library_name. (For *.so in Linux).
-               2 - library_name.
-             */
-#ifdef ADD_MINUS_L
-            if (libtype == type_DYNAMIC_LIB) {
-                 add_minus_l(cmd_data->shared_opts.dependencies, newarg);
-            } else if (cmd_data->output == otLibrary &&
-                       libtype == type_STATIC_LIB) {
-                explode_static_lib(cmd_data, newarg);
-            } else {
-                 push_count_chars(cmd_data->shared_opts.dependencies, newarg);
-            }
-#else
-            if (cmd_data->output == otLibrary && libtype == type_STATIC_LIB) {
-                explode_static_lib(cmd_data, newarg);
-            }
-            else {
-                push_count_chars(cmd_data->shared_opts.dependencies, newarg);
-            }
-#endif
-            if (libtype == type_DYNAMIC_LIB) {
-                if (cmd_data->options.no_install) {
-#ifdef RPATH
-                    add_rpath_noinstall(cmd_data->shared_opts.dependencies,
-                                        arg, pathlen);
-#endif
-#ifdef DYNAMIC_LINK_NO_INSTALL
-                    /*
-                     * This doesn't work as Darwin's linker has no way to
-                     * override at link-time the search paths for a
-                     * non-installed library.
-                     */
-                    /*
-                    add_dylink_noinstall(cmd_data->shared_opts.dependencies,
-                                         arg, pathlen, ext - arg);
-                    */
-#endif
-                }
-                else {
-#ifdef RPATH
-                    add_rpath_file(cmd_data->shared_opts.dependencies, arg);
-#endif
-                }
-            }
-            break;
-        case mInstall:
-            /* If we've already recorded a library to install, we're most
-             * likely getting the .la file that we want to install as.
-             * The problem is that we need to add it as the directory,
-             * not the .la file itself.  Otherwise, we'll do odd things.
-             */
-            if (cmd_data->output == otLibrary) {
-                arg[pathlen] = '\0';
-                push_count_chars(cmd_data->arglist, arg);
-            }
-            else {
-                cmd_data->output = otLibrary;
-                cmd_data->output_name = arg;
-                cmd_data->static_name.install = gen_install_name(arg, 0);
-                cmd_data->shared_name.install = gen_install_name(arg, 1);
-                cmd_data->module_name.install = gen_install_name(arg, 2);
-            }
-            break;
-        default:
-            break;
-        }
-        return 1;
-    }
-
-    if (strcmp(ext, "c") == 0) {
-        /* If we don't already have an idea what our output name will be. */
-        if (cmd_data->basename == NULL) {
-            cmd_data->basename = (char *)malloc(strlen(arg) + 4);
-            strcpy(cmd_data->basename, arg);
-            strcpy(strrchr(cmd_data->basename, '.') + 1, "lo");
-
-            cmd_data->fake_output_name = strrchr(cmd_data->basename, '/');
-            if (cmd_data->fake_output_name) {
-                cmd_data->fake_output_name++;
-            }
-            else {
-                cmd_data->fake_output_name = cmd_data->basename;
-            }
-        }
-    }
-
-    return 0;
-}
-
-int parse_output_file_name(char *arg, command_t *cmd_data)
-{
-    char *name = strrchr(arg, '/');
-    char *ext = strrchr(arg, '.');
-    char *newarg = NULL;
-    int pathlen;
-
-    cmd_data->fake_output_name = arg;
-
-    if (name) {
-        name++;
-    }
-    else {
-        name = strrchr(arg, '\\');
-
-        if (name == NULL) {
-            name = arg;
-        }
-        else {
-            name++;
-        }
-    }
-
-#ifdef EXE_EXT
-    if (!ext || strcmp(ext, EXE_EXT) == 0) {
-#else
-    if (!ext) {
-#endif
-        cmd_data->basename = arg;
-        cmd_data->output = otProgram;
-#if defined(_OSD_POSIX)
-        cmd_data->options.pic_mode = pic_AVOID;
-#endif
-        newarg = (char *)malloc(strlen(arg) + 5);
-        strcpy(newarg, arg);
-#ifdef EXE_EXT
-	if (!ext) {
-        strcat(newarg, EXE_EXT);
-	}
-#endif
-        cmd_data->output_name = newarg;
-        return 1;
-    }
-
-    ext++;
-    pathlen = name - arg;
-
-    if (strcmp(ext, "la") == 0) {
-        assert(cmd_data->mode == mLink);
-
-        cmd_data->basename = arg;
-        cmd_data->static_name.normal = gen_library_name(arg, 0);
-        cmd_data->shared_name.normal = gen_library_name(arg, 1);
-        cmd_data->module_name.normal = gen_library_name(arg, 2);
-        cmd_data->static_name.install = gen_install_name(arg, 0);
-        cmd_data->shared_name.install = gen_install_name(arg, 1);
-        cmd_data->module_name.install = gen_install_name(arg, 2);
-
-#ifdef TRUNCATE_DLL_NAME
-        if (shared) {
-          arg = truncate_dll_name(arg);
-        }
-#endif
-
-        cmd_data->output_name = arg;
-        return 1;
-    }
-
-    if (strcmp(ext, "lo") == 0) {
-        cmd_data->basename = arg;
-        cmd_data->output = otObject;
-        newarg = (char *)malloc(strlen(arg) + 2);
-        strcpy(newarg, arg);
-        ext = strrchr(newarg, '.') + 1;
-        strcpy(ext, OBJECT_EXT);
-        cmd_data->output_name = newarg;
-        return 1;
-    }
-
-    return 0;
-}
-
-void parse_args(int argc, char *argv[], command_t *cmd_data)
-{
-    int a;
-    char *arg;
-    int argused;
-
-    for (a = 1; a < argc; a++) {
-        arg = argv[a];
-        argused = 1;
-
-        if (arg[0] == '-') {
-            if (arg[1] == '-') {
-                argused = parse_long_opt(arg + 2, cmd_data);
-            }
-            else {
-                argused = parse_short_opt(arg + 1, cmd_data);
-            }
-
-            /* We haven't done anything with it yet, try some of the
-             * more complicated short opts... */
-            if (argused == 0 && a + 1 < argc) {
-                if (arg[1] == 'o' && !arg[2]) {
-                    arg = argv[++a];
-                    argused = parse_output_file_name(arg, cmd_data);
-                } else if (strcmp(arg+1, "MT") == 0) {
-                    if (!cmd_data->options.silent) {
-                        printf("Adding: %s\n", arg);
-                    }
-                    push_count_chars(cmd_data->arglist, arg);
-                    arg = argv[++a];
-                    if (!cmd_data->options.silent) {
-                        printf(" %s\n", arg);
-                    }
-                    push_count_chars(cmd_data->arglist, arg);
-                    argused = 1;
-                } else if (strcmp(arg+1, "rpath") == 0) {
-                    /* Aha, we should try to link both! */
-                    cmd_data->install_path = argv[++a];
-                    argused = 1;
-                } else if (strcmp(arg+1, "release") == 0) {
-                    /* Store for later deciphering */
-                    cmd_data->version_info = argv[++a];
-                    argused = 1;
-                } else if (strcmp(arg+1, "version-info") == 0) {
-                    /* Store for later deciphering */
-                    cmd_data->version_info = argv[++a];
-                    argused = 1;
-                } else if (strcmp(arg+1, "export-symbols-regex") == 0) {
-                    /* Skip the argument. */
-                    ++a;
-                    argused = 1;
-                } else if (strcmp(arg+1, "release") == 0) {
-                    /* Skip the argument. */
-                    ++a;
-                    argused = 1;
-                } else if (strcmp(arg+1, "undefined") == 0) {
-                    cmd_data->undefined_flag = argv[++a];
-                    argused = 1;
-                } else if (arg[1] == 'R' && !arg[2]) {
-                    /* -R dir Add dir to runtime library search path. */
-                    add_runtimedirlib(argv[++a], cmd_data);
-                    argused = 1;
-                }
-            }
-        } else {
-            argused = parse_input_file_name(arg, cmd_data);
-        }
-
-        if (!argused) {
-            if (!cmd_data->options.silent) {
-                printf("Adding: %s\n", arg);
-            }
-            push_count_chars(cmd_data->arglist, arg);
-        }
-    }
-
-}
-
-#ifdef GEN_EXPORTS
-void generate_def_file(command_t *cmd_data)
-{
-    char def_file[1024];
-    char implib_file[1024];
-    char *ext;
-    FILE *hDef;
-    char *export_args[1024];
-    int num_export_args = 0;
-    char *cmd;
-    int cmd_size = 0;
-    int a;
-
-    if (cmd_data->output_name) {
-        strcpy(def_file, cmd_data->output_name);
-        strcat(def_file, ".def");
-        hDef = fopen(def_file, "w");
-
-        if (hDef != NULL) {
-            fprintf(hDef, "LIBRARY '%s' INITINSTANCE\n", nameof(cmd_data->output_name));
-            fprintf(hDef, "DATA NONSHARED\n");
-            fprintf(hDef, "EXPORTS\n");
-            fclose(hDef);
-
-            for (a = 0; a < cmd_data->num_obj_files; a++) {
-                cmd_size += strlen(cmd_data->obj_files[a]) + 1;
-            }
-
-            cmd_size += strlen(GEN_EXPORTS) + strlen(def_file) + 3;
-            cmd = (char *)malloc(cmd_size);
-            strcpy(cmd, GEN_EXPORTS);
-
-            for (a=0; a < cmd_data->num_obj_files; a++) {
-                strcat(cmd, " ");
-                strcat(cmd, cmd_data->obj_files[a] );
-            }
-
-            strcat(cmd, ">>");
-            strcat(cmd, def_file);
-            puts(cmd);
-            export_args[num_export_args++] = SHELL_CMD;
-            export_args[num_export_args++] = "-c";
-            export_args[num_export_args++] = cmd;
-            export_args[num_export_args++] = NULL;
-            external_spawn(cmd_data, export_args[0], (const char**)export_args);
-            cmd_data->arglist[cmd_data->num_args++] = strdup(def_file);
-
-            /* Now make an import library for the dll */
-            num_export_args = 0;
-            export_args[num_export_args++] = DEF2IMPLIB_CMD;
-            export_args[num_export_args++] = "-o";
-
-            strcpy(implib_file, ".libs/");
-            strcat(implib_file, cmd_data->basename);
-            ext = strrchr(implib_file, '.');
-
-            if (ext)
-                *ext = 0;
-
-            strcat(implib_file, ".");
-            strcat(implib_file, STATIC_LIB_EXT);
-
-            export_args[num_export_args++] = implib_file;
-            export_args[num_export_args++] = def_file;
-            export_args[num_export_args++] = NULL;
-            external_spawn(cmd_data, export_args[0], (const char**)export_args);
-
-        }
-    }
-}
-#endif
-
-const char* expand_path(const char *relpath)
-{
-    char foo[PATH_MAX], *newpath;
-
-    getcwd(foo, PATH_MAX-1);
-    newpath = (char*)malloc(strlen(foo)+strlen(relpath)+2);
-    strcpy(newpath, foo);
-    strcat(newpath, "/");
-    strcat(newpath, relpath);
-    return newpath;
-}
-
-void link_fixup(command_t *c)
-{
-    /* If we were passed an -rpath directive, we need to build
-     * shared objects too.  Otherwise, we should only create static
-     * libraries.
-     */
-    if (!c->install_path && (c->output == otDynamicLibraryOnly ||
-        c->output == otModule || c->output == otLibrary)) {
-        c->output = otStaticLibraryOnly;
-    }
-
-    if (c->output == otDynamicLibraryOnly ||
-        c->output == otModule ||
-        c->output == otLibrary) {
-
-        push_count_chars(c->shared_opts.normal, "-o");
-        if (c->output == otModule) {
-            push_count_chars(c->shared_opts.normal, c->module_name.normal);
-        }
-        else {
-            char *tmp;
-            push_count_chars(c->shared_opts.normal, c->shared_name.normal);
-#ifdef DYNAMIC_INSTALL_NAME
-            push_count_chars(c->shared_opts.normal, DYNAMIC_INSTALL_NAME);
-
-            tmp = (char*)malloc(PATH_MAX);
-            strcpy(tmp, c->install_path);
-            strcat(tmp, strrchr(c->shared_name.normal, '/'));
-            push_count_chars(c->shared_opts.normal, tmp);
-#endif
-        }
-
-        append_count_chars(c->shared_opts.normal, c->obj_files);
-        append_count_chars(c->shared_opts.normal, c->shared_opts.dependencies);
-
-        if (c->options.export_all) {
-#ifdef GEN_EXPORTS
-            generate_def_file(c);
-#endif
-        }
-    }
-
-    if (c->output == otLibrary || c->output == otStaticLibraryOnly) {
-        push_count_chars(c->static_opts.normal, "-o");
-        push_count_chars(c->static_opts.normal, c->output_name);
-    }
-
-    if (c->output == otProgram) {
-        if (c->output_name) {
-            push_count_chars(c->arglist, "-o");
-            push_count_chars(c->arglist, c->output_name);
-            append_count_chars(c->arglist, c->obj_files);
-            append_count_chars(c->arglist, c->shared_opts.dependencies);
-            add_dynamic_link_opts(c, c->arglist);
-        }
-    }
-}
-
-void post_parse_fixup(command_t *cmd_data)
-{
-    switch (cmd_data->mode)
-    {
-    case mCompile:
-#ifdef PIC_FLAG
-        if (cmd_data->options.pic_mode != pic_AVOID) {
-            push_count_chars(cmd_data->arglist, PIC_FLAG);
-        }
-#endif
-        if (cmd_data->output_name) {
-            push_count_chars(cmd_data->arglist, "-o");
-            push_count_chars(cmd_data->arglist, cmd_data->output_name);
-        }
-        break;
-    case mLink:
-        link_fixup(cmd_data);
-        break;
-    case mInstall:
-        if (cmd_data->output == otLibrary) {
-            link_fixup(cmd_data);
-        }
-    default:
-        break;
-    }
-
-#if USE_OMF
-    if (cmd_data->output == otObject ||
-        cmd_data->output == otProgram ||
-        cmd_data->output == otLibrary ||
-        cmd_data->output == otDynamicLibraryOnly) {
-        push_count_chars(cmd_data->arglist, "-Zomf");
-    }
-#endif
-
-    if (cmd_data->options.shared &&
-            (cmd_data->output == otObject ||
-             cmd_data->output == otLibrary ||
-             cmd_data->output == otDynamicLibraryOnly)) {
-#ifdef SHARE_SW
-        push_count_chars(cmd_data->arglist, SHARE_SW);
-#endif
-    }
-}
-
-int run_mode(command_t *cmd_data)
-{
-    int rv;
-    count_chars *cctemp;
-
-    cctemp = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cctemp);
-
-    switch (cmd_data->mode)
-    {
-    case mCompile:
-        rv = run_command(cmd_data, cmd_data->arglist);
-        if (rv) {
-            return rv;
-        }
-        break;
-    case mInstall:
-        /* Well, we'll assume it's a file going to a directory... */
-        /* For brain-dead install-sh based scripts, we have to repeat
-         * the command N-times.  install-sh should die.
-         */
-        if (!cmd_data->output_name) {
-            rv = run_command(cmd_data, cmd_data->arglist);
-            if (rv) {
-                return rv;
-            }
-        }
-        if (cmd_data->output_name) {
-            append_count_chars(cctemp, cmd_data->arglist);
-            insert_count_chars(cctemp,
-                               cmd_data->output_name,
-                               cctemp->num - 1);
-            rv = run_command(cmd_data, cctemp);
-            if (rv) {
-                return rv;
-            }
-            clear_count_chars(cctemp);
-        }
-        if (cmd_data->static_name.install) {
-            append_count_chars(cctemp, cmd_data->arglist);
-            insert_count_chars(cctemp,
-                               cmd_data->static_name.install,
-                               cctemp->num - 1);
-            rv = run_command(cmd_data, cctemp);
-            if (rv) {
-                return rv;
-            }
-#if defined(__APPLE__) && defined(RANLIB)
-            /* From the Apple libtool(1) manpage on Tiger/10.4:
-             * ----
-             * With  the way libraries used to be created, errors were possible
-             * if the library was modified with ar(1) and  the  table  of
-             * contents  was  not updated  by  rerunning ranlib(1).  Thus the
-             * link editor, ld, warns when the modification date of a library
-             * is more  recent  than  the  creation date  of its table of
-             * contents.  Unfortunately, this means that you get the warning
-             * even if you only copy the library.
-             * ----
-             *
-             * This means that when we install the static archive, we need to
-             * rerun ranlib afterwards.
-             */
-            const char *lib_args[3], *static_lib_name;
-            char *tmp;
-            size_t len1, len2;
-            len1 = strlen(cmd_data->arglist->vals[cmd_data->arglist->num - 1]);
-
-            static_lib_name = jlibtool_basename(cmd_data->static_name.install);
-            len2 = strlen(static_lib_name);
-
-            tmp = malloc(len1 + len2 + 2);
-
-            snprintf(tmp, len1 + len2 + 2, "%s/%s",
-                    cmd_data->arglist->vals[cmd_data->arglist->num - 1],
-                    static_lib_name);
-
-            lib_args[0] = RANLIB;
-            lib_args[1] = tmp;
-            lib_args[2] = NULL;
-            external_spawn(cmd_data, RANLIB, lib_args);
-            free(tmp);
-#endif
-            clear_count_chars(cctemp);
-        }
-        if (cmd_data->shared_name.install) {
-            append_count_chars(cctemp, cmd_data->arglist);
-            insert_count_chars(cctemp,
-                               cmd_data->shared_name.install,
-                               cctemp->num - 1);
-            rv = run_command(cmd_data, cctemp);
-            if (rv) {
-                return rv;
-            }
-            clear_count_chars(cctemp);
-        }
-        if (cmd_data->module_name.install) {
-            append_count_chars(cctemp, cmd_data->arglist);
-            insert_count_chars(cctemp,
-                               cmd_data->module_name.install,
-                               cctemp->num - 1);
-            rv = run_command(cmd_data, cctemp);
-            if (rv) {
-                return rv;
-            }
-            clear_count_chars(cctemp);
-        }
-        break;
-    case mLink:
-        if (!cmd_data->options.dry_run) {
-            /* Check first to see if the dir already exists! */
-            safe_mkdir(".libs");
-        }
-
-        if (cmd_data->output == otStaticLibraryOnly ||
-            cmd_data->output == otLibrary) {
-#ifdef RANLIB
-            const char *lib_args[3];
-#endif
-            /* Removes compiler! */
-            cmd_data->program = LIBRARIAN;
-            push_count_chars(cmd_data->program_opts, LIBRARIAN_OPTS);
-            push_count_chars(cmd_data->program_opts,
-                             cmd_data->static_name.normal);
-
-            rv = run_command(cmd_data, cmd_data->obj_files);
-            if (rv) {
-                return rv;
-            }
-
-#ifdef RANLIB
-            lib_args[0] = RANLIB;
-            lib_args[1] = cmd_data->static_name.normal;
-            lib_args[2] = NULL;
-            external_spawn(cmd_data, RANLIB, lib_args);
-#endif
-        }
-
-        if (cmd_data->output == otDynamicLibraryOnly ||
-            cmd_data->output == otModule ||
-            cmd_data->output == otLibrary) {
-            cmd_data->program = NULL;
-            clear_count_chars(cmd_data->program_opts);
-
-            append_count_chars(cmd_data->program_opts, cmd_data->arglist);
-            if (cmd_data->output == otModule) {
-#ifdef MODULE_OPTS
-                push_count_chars(cmd_data->program_opts, MODULE_OPTS);
-#endif
-            } else {
-#ifdef SHARED_OPTS
-                push_count_chars(cmd_data->program_opts, SHARED_OPTS);
-#endif
-#ifdef dynamic_link_version_func
-                push_count_chars(cmd_data->program_opts,
-                             dynamic_link_version_func(cmd_data->version_info));
-#endif
-            }
-            add_dynamic_link_opts(cmd_data, cmd_data->program_opts);
-
-            rv = run_command(cmd_data, cmd_data->shared_opts.normal);
-            if (rv) {
-                return rv;
-            }
-        }
-        if (cmd_data->output == otProgram) {
-            rv = run_command(cmd_data, cmd_data->arglist);
-            if (rv) {
-                return rv;
-            }
-        }
-        break;
-    default:
-        break;
-    } 
-
-    return 0;
-}
-
-void cleanup_tmp_dir(const char *dirname)
-{
-    DIR *dir;
-    struct dirent *entry;
-    char fullname[1024];
-
-    dir = opendir(dirname);
-
-    if (dir == NULL)
-        return;
-
-    while ((entry = readdir(dir)) != NULL) {
-        if (entry->d_name[0] != '.') {
-            strcpy(fullname, dirname);
-            strcat(fullname, "/");
-            strcat(fullname, entry->d_name);
-            remove(fullname);
-        }
-    }
-
-    rmdir(dirname);
-}
-
-void cleanup_tmp_dirs(command_t *cmd_data)
-{
-    int d;
-
-    for (d = 0; d < cmd_data->tmp_dirs->num; d++) {
-        cleanup_tmp_dir(cmd_data->tmp_dirs->vals[d]);
-    }
-}
-
-int ensure_fake_uptodate(command_t *cmd_data)
-{
-    /* FIXME: could do the stat/touch here, but nah... */
-    const char *touch_args[3];
-
-    if (cmd_data->mode == mInstall) {
-        return 0;
-    }
-    if (!cmd_data->fake_output_name) {
-        return 0;
-    }
-
-    touch_args[0] = "touch";
-    touch_args[1] = cmd_data->fake_output_name;
-    touch_args[2] = NULL;
-    return external_spawn(cmd_data, "touch", touch_args);
-}
-
-/* Store the install path in the *.la file */
-int add_for_runtime(command_t *cmd_data)
-{
-    if (cmd_data->mode == mInstall) {
-        return 0;
-    }
-    if (cmd_data->output == otDynamicLibraryOnly ||
-        cmd_data->output == otLibrary) {
-        FILE *f=fopen(cmd_data->fake_output_name,"w");
-        if (f == NULL) {
-            return -1;
-        }
-        fprintf(f,"%s\n", cmd_data->install_path);
-        fclose(f);
-        return(0);
-    } else {
-        return(ensure_fake_uptodate(cmd_data));
-    }
-}
-
-int main(int argc, char *argv[])
-{
-    int rc;
-    command_t cmd_data;
-
-    memset(&cmd_data, 0, sizeof(cmd_data));
-
-    cmd_data.options.pic_mode = pic_UNKNOWN;
-
-    cmd_data.program_opts = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.program_opts);
-    cmd_data.arglist = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.arglist);
-    cmd_data.tmp_dirs = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.tmp_dirs);
-    cmd_data.obj_files = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.obj_files);
-    cmd_data.dep_rpaths = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.dep_rpaths);
-    cmd_data.rpaths = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.rpaths);
-    cmd_data.static_opts.normal = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.static_opts.normal);
-    cmd_data.shared_opts.normal = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.shared_opts.normal);
-    cmd_data.shared_opts.dependencies = (count_chars*)malloc(sizeof(count_chars));
-    init_count_chars(cmd_data.shared_opts.dependencies);
-
-    cmd_data.mode = mUnknown;
-    cmd_data.output = otGeneral;
-
-    parse_args(argc, argv, &cmd_data);
-    post_parse_fixup(&cmd_data);
-
-    if (cmd_data.mode == mUnknown) {
-        exit(0);
-    }
-
-    rc = run_mode(&cmd_data);
-
-    if (!rc) {
-       add_for_runtime(&cmd_data); 
-    }
-
-    cleanup_tmp_dirs(&cmd_data);
-    return rc;
-}

Copied: vendor/apache/apr/1.5.2/build/jlibtool.c (from rev 9273, vendor/apache/apr/dist/build/jlibtool.c)
===================================================================
--- vendor/apache/apr/1.5.2/build/jlibtool.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/jlibtool.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,2056 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#if !defined(__MINGW32__)
+#include <sys/wait.h>
+#endif
+#include <unistd.h>
+#include <dirent.h>
+#include <errno.h>
+#include <assert.h>
+
+#ifdef __EMX__
+#  define SHELL_CMD  "sh"
+#  define GEN_EXPORTS "emxexp"
+#  define DEF2IMPLIB_CMD "emximp"
+#  define SHARE_SW   "-Zdll -Zmtd"
+#  define USE_OMF 1
+#  define TRUNCATE_DLL_NAME
+#  define DYNAMIC_LIB_EXT "dll"
+#  define EXE_EXT ".exe"
+
+#  if USE_OMF
+     /* OMF is the native format under OS/2 */
+#    define STATIC_LIB_EXT "lib"
+#    define OBJECT_EXT     "obj"
+#    define LIBRARIAN      "emxomfar"
+#    define LIBRARIAN_OPTS "cr"
+#  else
+     /* but the alternative, a.out, can fork() which is sometimes necessary */
+#    define STATIC_LIB_EXT "a"
+#    define OBJECT_EXT     "o"
+#    define LIBRARIAN      "ar"
+#    define LIBRARIAN_OPTS "cr"
+#  endif
+#endif
+
+#if defined(__APPLE__)
+#  define SHELL_CMD  "/bin/sh"
+#  define DYNAMIC_LIB_EXT "dylib"
+#  define MODULE_LIB_EXT  "bundle"
+#  define STATIC_LIB_EXT "a"
+#  define OBJECT_EXT     "o"
+#  define LIBRARIAN      "ar"
+#  define LIBRARIAN_OPTS "cr"
+/* man libtool(1) documents ranlib option of -c.  */
+#  define RANLIB "ranlib"
+#  define PIC_FLAG "-fPIC -fno-common"
+#  define SHARED_OPTS "-dynamiclib"
+#  define MODULE_OPTS "-bundle -dynamic"
+#  define DYNAMIC_LINK_OPTS "-flat_namespace"
+#  define DYNAMIC_LINK_UNDEFINED "-undefined suppress"
+#  define dynamic_link_version_func darwin_dynamic_link_function
+#  define DYNAMIC_INSTALL_NAME "-install_name"
+#  define DYNAMIC_LINK_NO_INSTALL "-dylib_file"
+#  define HAS_REALPATH
+/*-install_name  /Users/jerenk/apache-2.0-cvs/lib/libapr.0.dylib -compatibility_version 1 -current_version 1.0 */
+#  define LD_LIBRARY_PATH "DYLD_LIBRARY_PATH"
+#endif
+
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
+#  define SHELL_CMD  "/bin/sh"
+#  define DYNAMIC_LIB_EXT "so"
+#  define MODULE_LIB_EXT  "so"
+#  define STATIC_LIB_EXT "a"
+#  define OBJECT_EXT     "o"
+#  define LIBRARIAN      "ar"
+#  define LIBRARIAN_OPTS "cr"
+#  define RANLIB "ranlib"
+#  define PIC_FLAG "-fPIC"
+#  define RPATH "-rpath"
+#  define SHARED_OPTS "-shared"
+#  define MODULE_OPTS "-shared"
+#  define DYNAMIC_LINK_OPTS "-export-dynamic"
+#  define LINKER_FLAG_PREFIX "-Wl,"
+#  define ADD_MINUS_L
+#  define LD_RUN_PATH "LD_RUN_PATH"
+#  define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
+#endif
+
+#if defined(sun)
+#  define SHELL_CMD  "/bin/sh"
+#  define DYNAMIC_LIB_EXT "so"
+#  define MODULE_LIB_EXT  "so"
+#  define STATIC_LIB_EXT "a"
+#  define OBJECT_EXT     "o"
+#  define LIBRARIAN      "ar"
+#  define LIBRARIAN_OPTS "cr"
+#  define RANLIB "ranlib"
+#  define PIC_FLAG "-KPIC"
+#  define RPATH "-R"
+#  define SHARED_OPTS "-G"
+#  define MODULE_OPTS "-G"
+#  define DYNAMIC_LINK_OPTS ""
+#  define LINKER_FLAG_NO_EQUALS
+#  define ADD_MINUS_L
+#  define HAS_REALPATH
+#  define LD_RUN_PATH "LD_RUN_PATH"
+#  define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
+#endif
+
+#if defined(_OSD_POSIX)
+#  define SHELL_CMD  "/usr/bin/sh"
+#  define DYNAMIC_LIB_EXT "so"
+#  define MODULE_LIB_EXT  "so"
+#  define STATIC_LIB_EXT "a"
+#  define OBJECT_EXT     "o"
+#  define LIBRARIAN      "ar"
+#  define LIBRARIAN_OPTS "cr"
+#  define SHARED_OPTS "-G"
+#  define MODULE_OPTS "-G"
+#  define LINKER_FLAG_PREFIX "-Wl,"
+#  define NEED_SNPRINTF
+#endif
+
+#if defined(sinix) && defined(mips) && defined(__SNI_TARG_UNIX)
+#  define SHELL_CMD  "/usr/bin/sh"
+#  define DYNAMIC_LIB_EXT "so"
+#  define MODULE_LIB_EXT  "so"
+#  define STATIC_LIB_EXT "a"
+#  define OBJECT_EXT     "o"
+#  define LIBRARIAN      "ar"
+#  define LIBRARIAN_OPTS "cr"
+#  define RPATH "-Brpath"
+#  define SHARED_OPTS "-G"
+#  define MODULE_OPTS "-G"
+#  define DYNAMIC_LINK_OPTS "-Wl,-Blargedynsym"
+#  define LINKER_FLAG_PREFIX "-Wl,"
+#  define NEED_SNPRINTF
+#  define LD_RUN_PATH "LD_RUN_PATH"
+#  define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
+#endif
+
+#if defined(__MINGW32__)
+#  define SHELL_CMD "sh"
+#  define DYNAMIC_LIB_EXT "dll"
+#  define MODULE_LIB_EXT  "dll"
+#  define STATIC_LIB_EXT "a"
+#  define OBJECT_EXT     "o"
+#  define LIBRARIAN      "ar"
+#  define LIBRARIAN_OPTS "cr"
+#  define RANLIB "ranlib"
+#  define LINKER_FLAG_PREFIX "-Wl,"
+#  define SHARED_OPTS "-shared"
+#  define MODULE_OPTS "-shared"
+#  define MKDIR_NO_UMASK
+#  define EXE_EXT ".exe"
+#endif
+
+#ifndef SHELL_CMD
+#error Unsupported platform: Please add defines for SHELL_CMD etc. for your platform.
+#endif
+
+#ifdef NEED_SNPRINTF
+#include <stdarg.h>
+#endif
+
+#ifdef __EMX__
+#include <process.h>
+#endif
+
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
+
+/* We want to say we are libtool 1.4 for shlibtool compatibility. */
+#define VERSION "1.4"
+
+enum tool_mode_t {
+    mUnknown,
+    mCompile,
+    mLink,
+    mInstall,
+};
+
+enum output_t {
+    otGeneral,
+    otObject,
+    otProgram,
+    otLibrary,
+    otStaticLibraryOnly,
+    otDynamicLibraryOnly,
+    otModule,
+};
+
+enum pic_mode_e {
+    pic_UNKNOWN,
+    pic_PREFER,
+    pic_AVOID,
+};
+
+enum shared_mode_e {
+    share_UNSET,
+    share_STATIC,
+    share_SHARED,
+};
+
+enum lib_type {
+    type_UNKNOWN,
+    type_DYNAMIC_LIB,
+    type_STATIC_LIB,
+    type_MODULE_LIB,
+    type_OBJECT,
+};
+
+typedef struct {
+    const char **vals;
+    int num; 
+} count_chars;
+
+typedef struct {
+    const char *normal;
+    const char *install;
+} library_name;
+
+typedef struct {
+    count_chars *normal;
+    count_chars *install;
+    count_chars *dependencies;
+} library_opts;
+
+typedef struct {
+    int silent;
+    enum shared_mode_e shared;
+    int export_all;
+    int dry_run;
+    enum pic_mode_e pic_mode;
+    int export_dynamic;
+    int no_install;
+} options_t;
+
+typedef struct {
+    enum tool_mode_t mode;
+    enum output_t output;
+    options_t options;
+
+    char *output_name;
+    char *fake_output_name;
+    char *basename;
+
+    const char *install_path;
+    const char *compiler;
+    const char *program;
+    count_chars *program_opts;
+
+    count_chars *arglist;
+    count_chars *tmp_dirs;
+    count_chars *obj_files;
+    count_chars *dep_rpaths;
+    count_chars *rpaths;
+
+    library_name static_name;
+    library_name shared_name;
+    library_name module_name;
+
+    library_opts static_opts;
+    library_opts shared_opts;
+
+    const char *version_info;
+    const char *undefined_flag;
+} command_t;
+
+#ifdef RPATH
+void add_rpath(count_chars *cc, const char *path);
+#endif
+
+#if defined(NEED_SNPRINTF)
+/* Write at most n characters to the buffer in str, return the
+ * number of chars written or -1 if the buffer would have been
+ * overflowed.
+ *
+ * This is portable to any POSIX-compliant system has /dev/null
+ */
+static FILE *f=NULL;
+static int vsnprintf( char *str, size_t n, const char *fmt, va_list ap )
+{
+       int res;
+
+       if (f == NULL)
+               f = fopen("/dev/null","w");
+       if (f == NULL)
+               return -1;
+
+       setvbuf( f, str, _IOFBF, n );
+
+       res = vfprintf( f, fmt, ap );
+
+       if ( res > 0 && res < n ) {
+               res = vsprintf( str, fmt, ap );
+       }
+       return res;
+}
+static int snprintf( char *str, size_t n, const char *fmt, ... )
+{
+        va_list ap;
+        int res;
+ 
+        va_start( ap, fmt );
+        res = vsnprintf( str, n, fmt, ap );
+        va_end( ap );
+        return res;
+}
+#endif
+
+void init_count_chars(count_chars *cc)
+{
+    cc->vals = (const char**)malloc(PATH_MAX*sizeof(char*));
+    cc->num = 0;
+}
+
+void clear_count_chars(count_chars *cc)
+{
+    int i;
+    for (i = 0; i < cc->num; i++) {
+        cc->vals[i] = 0;
+    }
+
+    cc->num = 0;
+}
+
+void push_count_chars(count_chars *cc, const char *newval)
+{
+    cc->vals[cc->num++] = newval;
+}
+
+void pop_count_chars(count_chars *cc)
+{
+    cc->num--;
+}
+
+void insert_count_chars(count_chars *cc, const char *newval, int position)
+{
+    int i;
+
+    for (i = cc->num; i > position; i--) {
+        cc->vals[i] = cc->vals[i-1];
+    }
+
+    cc->vals[position] = newval;
+    cc->num++;
+}
+
+void append_count_chars(count_chars *cc, count_chars *cctoadd)
+{
+    int i;
+    for (i = 0; i < cctoadd->num; i++) {
+        if (cctoadd->vals[i]) {
+            push_count_chars(cc, cctoadd->vals[i]);
+        }
+    }
+}
+
+const char *flatten_count_chars(count_chars *cc, int space)
+{
+    int i, size;
+    char *newval;
+
+    size = 0;
+    for (i = 0; i < cc->num; i++) {
+        if (cc->vals[i]) {
+            size += strlen(cc->vals[i]) + 1;
+            if (space) {
+              size++;
+            }
+        }
+    }
+
+    newval = (char*)malloc(size + 1);
+    newval[0] = 0;
+
+    for (i = 0; i < cc->num; i++) {
+        if (cc->vals[i]) {
+            strcat(newval, cc->vals[i]);
+            if (space) {
+                strcat(newval, " ");
+            }
+        }
+    }
+
+    return newval;
+}
+
+char *shell_esc(const char *str)
+{
+    int in_quote = 0;
+    char *cmd;
+    unsigned char *d;
+    const unsigned char *s;
+
+    cmd = (char *)malloc(2 * strlen(str) + 3);
+    d = (unsigned char *)cmd;
+    s = (const unsigned char *)str;
+
+#ifdef __MINGW32__
+    *d++ = '\"';
+#endif
+
+    for (; *s; ++s) {
+        if (*s == '"') {
+            *d++ = '\\';
+            in_quote++;
+        }
+        else if (*s == '\\' || (*s == ' ' && (in_quote % 2))) {
+            *d++ = '\\';
+        }
+        *d++ = *s;
+    }
+
+#ifdef __MINGW32__
+    *d++ = '\"';
+#endif
+
+    *d = '\0';
+    return cmd;
+}
+
+int external_spawn(command_t *cmd, const char *file, const char **argv)
+{
+    if (!cmd->options.silent) {
+        const char **argument = argv;
+        printf("Executing: ");
+        while (*argument) {
+            printf("%s ", *argument);
+            argument++;
+        }
+        puts("");
+    }
+
+    if (cmd->options.dry_run) {
+        return 0;
+    }
+#if defined(__EMX__) || defined(__MINGW32__)
+    return spawnvp(P_WAIT, argv[0], argv);
+#else
+    {
+        pid_t pid;
+        pid = fork();
+        if (pid == 0) {
+            return execvp(argv[0], (char**)argv);
+        }
+        else {
+            int statuscode;
+            waitpid(pid, &statuscode, 0);
+            if (WIFEXITED(statuscode)) {
+                return WEXITSTATUS(statuscode);
+            }
+            return 0;
+        }
+    }
+#endif
+}
+
+int run_command(command_t *cmd_data, count_chars *cc)
+{
+    char *command;
+    const char *spawn_args[4];
+    count_chars tmpcc;
+
+    init_count_chars(&tmpcc);
+
+    if (cmd_data->program) {
+        push_count_chars(&tmpcc, cmd_data->program);
+    }
+
+    append_count_chars(&tmpcc, cmd_data->program_opts);
+
+    append_count_chars(&tmpcc, cc);
+
+    command = shell_esc(flatten_count_chars(&tmpcc, 1));
+
+    spawn_args[0] = SHELL_CMD;
+    spawn_args[1] = "-c";
+    spawn_args[2] = command;
+    spawn_args[3] = NULL;
+    return external_spawn(cmd_data, spawn_args[0], (const char**)spawn_args);
+}
+
+/*
+ * print configuration
+ * shlibpath_var is used in configure.
+ */
+void print_config()
+{
+#ifdef LD_RUN_PATH
+    printf("runpath_var=%s\n", LD_RUN_PATH);
+#endif
+#ifdef LD_LIBRARY_PATH
+    printf("shlibpath_var=%s\n", LD_LIBRARY_PATH);
+#endif
+#ifdef SHELL_CMD
+    printf("SHELL=\"%s\"\n", SHELL_CMD);
+#endif
+}
+/*
+ * Add a directory to the runtime library search path.
+ */
+void add_runtimedirlib(char *arg, command_t *cmd_data)
+{
+#ifdef RPATH
+    add_rpath(cmd_data->shared_opts.dependencies, arg);
+#else
+#endif
+}
+
+int parse_long_opt(char *arg, command_t *cmd_data)
+{
+    char *equal_pos = strchr(arg, '=');
+    char var[50];
+    char value[500];
+
+    if (equal_pos) {
+        strncpy(var, arg, equal_pos - arg);
+        var[equal_pos - arg] = 0;
+        strcpy(value, equal_pos + 1);
+    } else {
+        strcpy(var, arg);
+    }
+
+    if (strcmp(var, "silent") == 0) {
+        cmd_data->options.silent = 1;
+    } else if (strcmp(var, "mode") == 0) {
+        if (strcmp(value, "compile") == 0) {
+            cmd_data->mode = mCompile;
+            cmd_data->output = otObject;
+        }
+
+        if (strcmp(value, "link") == 0) {
+            cmd_data->mode = mLink;
+            cmd_data->output = otLibrary;
+        }
+
+        if (strcmp(value, "install") == 0) {
+            cmd_data->mode = mInstall;
+        }
+    } else if (strcmp(var, "shared") == 0) {
+        if (cmd_data->mode == mLink) {
+            cmd_data->output = otDynamicLibraryOnly;
+        }
+        cmd_data->options.shared = share_SHARED;
+    } else if (strcmp(var, "export-all") == 0) {
+        cmd_data->options.export_all = 1;
+    } else if (strcmp(var, "dry-run") == 0) {
+        printf("Dry-run mode on!\n");
+        cmd_data->options.dry_run = 1;
+    } else if (strcmp(var, "version") == 0) {
+        printf("Version " VERSION "\n");
+    } else if (strcmp(var, "help") == 0) {
+        printf("Sorry.  No help available.\n");
+    } else if (strcmp(var, "config") == 0) {
+        print_config();
+    } else if (strcmp(var, "tag") == 0) {
+        if (strcmp(value, "CC") == 0) {
+            /* Do nothing. */
+        }
+        if (strcmp(value, "CXX") == 0) {
+            /* Do nothing. */
+        }
+    } else {
+        return 0;
+    }
+
+    return 1;
+}
+
+/* Return 1 if we eat it. */
+int parse_short_opt(char *arg, command_t *cmd_data)
+{
+    if (strcmp(arg, "export-dynamic") == 0) {
+        cmd_data->options.export_dynamic = 1;
+        return 1;
+    }
+
+    if (strcmp(arg, "module") == 0) {
+        cmd_data->output = otModule;
+        return 1;
+    }
+
+    if (strcmp(arg, "shared") == 0) {
+        if (cmd_data->mode == mLink) {
+            cmd_data->output = otDynamicLibraryOnly;
+        }
+        cmd_data->options.shared = share_SHARED;
+        return 1;
+    }
+
+    if (strcmp(arg, "Zexe") == 0) {
+        return 1;
+    }
+
+    if (strcmp(arg, "avoid-version") == 0) {
+        return 1;
+    }
+
+    if (strcmp(arg, "prefer-pic") == 0) {
+        cmd_data->options.pic_mode = pic_PREFER;
+        return 1;
+    }
+
+    if (strcmp(arg, "prefer-non-pic") == 0) {
+        cmd_data->options.pic_mode = pic_AVOID;
+        return 1;
+    }
+
+    if (strcmp(arg, "static") == 0) {
+        cmd_data->options.shared = share_STATIC;
+        return 1;
+    }
+
+    if (cmd_data->mode == mLink) {
+        if (strcmp(arg, "no-install") == 0) {
+            cmd_data->options.no_install = 1;
+            return 1;
+        }
+        if (arg[0] == 'L' || arg[0] == 'l') {
+            /* Hack... */
+            arg--;
+            push_count_chars(cmd_data->shared_opts.dependencies, arg);
+            return 1;
+        } else if (arg[0] == 'R' && arg[1]) {
+            /* -Rdir Add dir to runtime library search path. */
+            add_runtimedirlib(&arg[1], cmd_data);
+            return 1;
+        }
+    }
+    return 0;
+}
+
+char *truncate_dll_name(char *path)
+{
+    /* Cut DLL name down to 8 characters after removing any mod_ prefix */
+    char *tmppath = strdup(path);
+    char *newname = strrchr(tmppath, '/') + 1;
+    char *ext = strrchr(tmppath, '.');
+    int len;
+
+    if (ext == NULL)
+        return tmppath;
+
+    len = ext - newname;
+
+    if (strncmp(newname, "mod_", 4) == 0) {
+        strcpy(newname, newname + 4);
+        len -= 4;
+    }
+
+    if (len > 8) {
+        strcpy(newname + 8, strchr(newname, '.'));
+    }
+
+    return tmppath;
+}
+
+long safe_strtol(const char *nptr, const char **endptr, int base)
+{
+    long rv;
+
+    errno = 0;
+
+    rv = strtol(nptr, (char**)endptr, 10);
+
+    if (errno == ERANGE) {
+        return 0;
+    }
+
+    return rv; 
+}
+
+void safe_mkdir(const char *path)
+{
+    mode_t old_umask;
+
+    old_umask = umask(0);
+    umask(old_umask);
+
+#ifdef MKDIR_NO_UMASK
+    mkdir(path);
+#else
+    mkdir(path, ~old_umask);
+#endif
+}
+
+/* returns just a file's name without the path */
+const char *jlibtool_basename(const char *fullpath)
+{
+    const char *name = strrchr(fullpath, '/');
+
+    if (name == NULL) {
+        name = strrchr(fullpath, '\\');
+    }
+
+    if (name == NULL) {
+        name = fullpath;
+    } else {
+        name++;
+    }
+
+    return name;
+}
+
+/* returns just a file's name without path or extension */
+const char *nameof(const char *fullpath)
+{
+    const char *name;
+    const char *ext;
+
+    name = jlibtool_basename(fullpath);
+    ext = strrchr(name, '.');
+
+    if (ext) {
+        char *trimmed;
+        trimmed = malloc(ext - name + 1);
+        strncpy(trimmed, name, ext - name);
+        trimmed[ext-name] = 0;
+        return trimmed;
+    }
+
+    return name;
+}
+
+/* version_info is in the form of MAJOR:MINOR:PATCH */
+const char *darwin_dynamic_link_function(const char *version_info)
+{
+    char *newarg;
+    long major, minor, patch;
+
+    major = 0;
+    minor = 0;
+    patch = 0;
+
+    if (version_info) {
+        major = safe_strtol(version_info, &version_info, 10);
+
+        if (version_info) {
+            if (version_info[0] == ':') {
+                version_info++;
+            }
+
+            minor = safe_strtol(version_info, &version_info, 10);
+
+            if (version_info) {
+                if (version_info[0] == ':') {
+                    version_info++;
+                }
+
+                patch = safe_strtol(version_info, &version_info, 10);
+
+            }
+        }
+    }
+
+    /* Avoid -dylib_compatibility_version must be greater than zero errors. */
+    if (major == 0) {
+        major = 1;
+    }
+    newarg = (char*)malloc(100);
+    snprintf(newarg, 99,
+             "-compatibility_version %ld -current_version %ld.%ld",
+             major, major, minor);
+
+    return newarg;
+}
+
+/* genlib values
+ * 0 - static
+ * 1 - dynamic
+ * 2 - module
+ */
+char *gen_library_name(const char *name, int genlib)
+{
+    char *newarg, *newext;
+
+    newarg = (char *)malloc(strlen(name) + 11);
+    strcpy(newarg, ".libs/");
+
+    if (genlib == 2 && strncmp(name, "lib", 3) == 0) {
+        name += 3;
+    }
+
+    if (genlib == 2) {
+        strcat(newarg, jlibtool_basename(name));
+    }
+    else {
+        strcat(newarg, name);
+    }
+
+    newext = strrchr(newarg, '.') + 1;
+
+    switch (genlib) {
+    case 0:
+        strcpy(newext, STATIC_LIB_EXT);
+        break;
+    case 1:
+        strcpy(newext, DYNAMIC_LIB_EXT);
+        break;
+    case 2:
+        strcpy(newext, MODULE_LIB_EXT);
+        break;
+    }
+
+    return newarg;
+}
+
+/* genlib values
+ * 0 - static
+ * 1 - dynamic
+ * 2 - module
+ */
+char *gen_install_name(const char *name, int genlib)
+{
+    struct stat sb;
+    char *newname;
+    int rv;
+
+    newname = gen_library_name(name, genlib);
+
+    /* Check if it exists. If not, return NULL.  */
+    rv = stat(newname, &sb);
+
+    if (rv) {
+        return NULL;
+    }
+
+    return newname;
+}
+
+char *check_object_exists(command_t *cmd, const char *arg, int arglen)
+{
+    char *newarg, *ext;
+    int pass, rv;
+
+    newarg = (char *)malloc(arglen + 10);
+    memcpy(newarg, arg, arglen);
+    newarg[arglen] = 0;
+    ext = newarg + arglen;
+
+    pass = 0;
+
+    do {
+        struct stat sb;
+
+        switch (pass) {
+        case 0:
+            strcpy(ext, OBJECT_EXT);
+            break;
+/*
+        case 1:
+            strcpy(ext, NO_PIC_EXT);
+            break;
+*/
+        default:
+            break;
+        } 
+
+        if (!cmd->options.silent) {
+            printf("Checking (obj): %s\n", newarg);
+        }
+        rv = stat(newarg, &sb);
+    }
+    while (rv != 0 && ++pass < 1);
+
+    if (rv == 0) {
+        if (pass == 1) {
+            cmd->options.pic_mode = pic_AVOID;
+        }
+        return newarg;
+    }
+
+    return NULL;
+}
+
+/* libdircheck values:
+ * 0 - no .libs suffix
+ * 1 - .libs suffix
+ */
+char *check_library_exists(command_t *cmd, const char *arg, int pathlen,
+                           int libdircheck, enum lib_type *libtype)
+{
+    char *newarg, *ext;
+    int pass, rv, newpathlen;
+
+    newarg = (char *)malloc(strlen(arg) + 10);
+    strcpy(newarg, arg);
+    newarg[pathlen] = 0;
+
+    newpathlen = pathlen;
+    if (libdircheck) {
+        strcat(newarg, ".libs/");
+        newpathlen += sizeof(".libs/") - 1;
+    }
+
+    strcpy(newarg+newpathlen, arg+pathlen);
+    ext = strrchr(newarg, '.') + 1;
+
+    pass = 0;
+
+    do {
+        struct stat sb;
+
+        switch (pass) {
+        case 0:
+            if (cmd->options.pic_mode != pic_AVOID &&
+                cmd->options.shared != share_STATIC) {
+                strcpy(ext, DYNAMIC_LIB_EXT);
+                *libtype = type_DYNAMIC_LIB;
+                break;
+            }
+            pass = 1;
+            /* Fall through */
+        case 1:
+            strcpy(ext, STATIC_LIB_EXT);
+            *libtype = type_STATIC_LIB;
+            break;
+        case 2:
+            strcpy(ext, MODULE_LIB_EXT);
+            *libtype = type_MODULE_LIB;
+            break;
+        case 3:
+            strcpy(ext, OBJECT_EXT);
+            *libtype = type_OBJECT;
+            break;
+        default:
+            *libtype = type_UNKNOWN;
+            break;
+        } 
+
+        if (!cmd->options.silent) {
+            printf("Checking (lib): %s\n", newarg);
+        }
+        rv = stat(newarg, &sb);
+    }
+    while (rv != 0 && ++pass < 4);
+
+    if (rv == 0) {
+        return newarg;
+    }
+
+    return NULL;
+}
+
+char * load_install_path(const char *arg)
+{
+    FILE *f;
+    char *path;
+
+    path = malloc(PATH_MAX);
+
+    f = fopen(arg,"r");
+    if (f == NULL) {
+        return NULL;
+    }
+    fgets(path, PATH_MAX, f);
+    fclose(f);
+    if (path[strlen(path)-1] == '\n') {
+        path[strlen(path)-1] = '\0';
+    }
+    /* Check that we have an absolute path.
+     * Otherwise the file could be a GNU libtool file.
+     */
+    if (path[0] != '/') {
+        return NULL;
+    }
+    return path;
+}
+
+char * load_noinstall_path(const char *arg, int pathlen)
+{
+    char *newarg, *expanded_path;
+    int newpathlen;
+
+    newarg = (char *)malloc(strlen(arg) + 10);
+    strcpy(newarg, arg);
+    newarg[pathlen] = 0;
+
+    newpathlen = pathlen;
+    strcat(newarg, ".libs");
+    newpathlen += sizeof(".libs") - 1;
+    newarg[newpathlen] = 0;
+
+#ifdef HAS_REALPATH
+    expanded_path = malloc(PATH_MAX);
+    expanded_path = realpath(newarg, expanded_path);
+    /* Uh, oh.  There was an error.  Fall back on our first guess. */
+    if (!expanded_path) {
+        expanded_path = newarg;
+    }
+#else
+    /* We might get ../ or something goofy.  Oh, well. */
+    expanded_path = newarg;
+#endif
+
+    return expanded_path;
+}
+
+void add_dynamic_link_opts(command_t *cmd_data, count_chars *args)
+{
+#ifdef DYNAMIC_LINK_OPTS
+    if (cmd_data->options.pic_mode != pic_AVOID) {
+        if (!cmd_data->options.silent) {
+           printf("Adding: %s\n", DYNAMIC_LINK_OPTS);
+        }
+        push_count_chars(args, DYNAMIC_LINK_OPTS);
+        if (cmd_data->undefined_flag) {
+            push_count_chars(args, "-undefined");
+#if defined(__APPLE__)
+            /* -undefined dynamic_lookup is used by the bundled Python in
+             * 10.4, but if we don't set MACOSX_DEPLOYMENT_TARGET to 10.3+,
+             * we'll get a linker error if we pass this flag.
+             */
+            if (strcasecmp(cmd_data->undefined_flag,
+                           "dynamic_lookup") == 0) {
+                insert_count_chars(cmd_data->program_opts,
+                                   "MACOSX_DEPLOYMENT_TARGET=10.3", 0);
+            }
+#endif
+            push_count_chars(args, cmd_data->undefined_flag);
+        }
+        else {
+#ifdef DYNAMIC_LINK_UNDEFINED
+            if (!cmd_data->options.silent) {
+                printf("Adding: %s\n", DYNAMIC_LINK_UNDEFINED);
+            }
+            push_count_chars(args, DYNAMIC_LINK_UNDEFINED);
+#endif
+        }
+    }
+#endif
+}
+
+/* Read the final install location and add it to runtime library search path. */
+#ifdef RPATH
+void add_rpath(count_chars *cc, const char *path)
+{
+    int size = 0;
+    char *tmp;
+
+#ifdef LINKER_FLAG_PREFIX
+    size = strlen(LINKER_FLAG_PREFIX);
+#endif
+    size = size + strlen(path) + strlen(RPATH) + 2;
+    tmp = malloc(size);
+    if (tmp == NULL) {
+        return;
+    }
+#ifdef LINKER_FLAG_PREFIX
+    strcpy(tmp, LINKER_FLAG_PREFIX);
+    strcat(tmp, RPATH);
+#else
+    strcpy(tmp, RPATH);
+#endif
+#ifndef LINKER_FLAG_NO_EQUALS
+    strcat(tmp, "=");
+#endif
+    strcat(tmp, path);
+
+    push_count_chars(cc, tmp);
+}
+
+void add_rpath_file(count_chars *cc, const char *arg)
+{
+    const char *path;
+
+    path = load_install_path(arg);
+    if (path) {
+        add_rpath(cc, path);
+    }
+}
+
+void add_rpath_noinstall(count_chars *cc, const char *arg, int pathlen)
+{
+    const char *path;
+
+    path = load_noinstall_path(arg, pathlen);
+    if (path) {
+        add_rpath(cc, path);
+    }
+}
+#endif
+
+#ifdef DYNAMIC_LINK_NO_INSTALL
+void add_dylink_noinstall(count_chars *cc, const char *arg, int pathlen,
+                          int extlen)
+{
+    const char *install_path, *current_path, *name;
+    char *exp_argument;
+    int i_p_len, c_p_len, name_len, dyext_len, cur_len;
+
+    install_path = load_install_path(arg);
+    current_path = load_noinstall_path(arg, pathlen);
+
+    if (!install_path || !current_path) {
+        return;
+    }
+
+    push_count_chars(cc, DYNAMIC_LINK_NO_INSTALL);
+
+    i_p_len = strlen(install_path);
+    c_p_len = strlen(current_path);
+
+    name = arg+pathlen;
+    name_len = extlen-pathlen;
+    dyext_len = sizeof(DYNAMIC_LIB_EXT) - 1;
+
+    /* No, we need to replace the extension. */
+    exp_argument = (char *)malloc(i_p_len + c_p_len + (name_len*2) +
+                                  (dyext_len*2) + 2);
+
+    cur_len = 0;
+    strcpy(exp_argument, install_path);
+    cur_len += i_p_len;
+    exp_argument[cur_len++] = '/';
+    strncpy(exp_argument+cur_len, name, extlen-pathlen);
+    cur_len += name_len;
+    strcpy(exp_argument+cur_len, DYNAMIC_LIB_EXT);
+    cur_len += dyext_len;
+    exp_argument[cur_len++] = ':';
+    strcpy(exp_argument+cur_len, current_path);
+    cur_len += c_p_len;
+    exp_argument[cur_len++] = '/';
+    strncpy(exp_argument+cur_len, name, extlen-pathlen);
+    cur_len += name_len;
+    strcpy(exp_argument+cur_len, DYNAMIC_LIB_EXT);
+    cur_len += dyext_len;
+
+    push_count_chars(cc, exp_argument);
+}
+#endif
+
+/* use -L -llibname to allow to use installed libraries */
+void add_minus_l(count_chars *cc, const char *arg)
+{
+    char *newarg;
+    char *name = strrchr(arg, '/');
+    char *file = strrchr(arg, '.');
+    char *lib  = strstr(name, "lib");
+
+    if (name !=NULL && file != NULL && lib == name+1) {
+        *name = '\0';
+        *file = '\0';
+        file = name;
+        file = file+4;
+        push_count_chars(cc, "-L");
+        push_count_chars(cc, arg);
+        /* we need one argument like -lapr-1 */
+        newarg = malloc(strlen(file) + 3);
+        strcpy(newarg, "-l");
+        strcat(newarg, file);
+        push_count_chars(cc, newarg);
+    } else {
+        push_count_chars(cc, arg);
+    }
+}
+
+void add_linker_flag_prefix(count_chars *cc, const char *arg)
+{
+#ifndef LINKER_FLAG_PREFIX
+    push_count_chars(cc, arg);
+#else
+    char *newarg;
+    newarg = (char*)malloc(strlen(arg) + sizeof(LINKER_FLAG_PREFIX) + 1);
+    strcpy(newarg, LINKER_FLAG_PREFIX);
+    strcat(newarg, arg);
+    push_count_chars(cc, newarg);
+#endif
+}
+
+int explode_static_lib(command_t *cmd_data, const char *lib)
+{
+    count_chars tmpdir_cc, libname_cc;
+    const char *tmpdir, *libname;
+    char savewd[PATH_MAX];
+    const char *name;
+    DIR *dir;
+    struct dirent *entry;
+    const char *lib_args[4];
+
+    /* Bah! */
+    if (cmd_data->options.dry_run) {
+        return 0;
+    }
+
+    name = jlibtool_basename(lib);
+
+    init_count_chars(&tmpdir_cc);
+    push_count_chars(&tmpdir_cc, ".libs/");
+    push_count_chars(&tmpdir_cc, name);
+    push_count_chars(&tmpdir_cc, ".exploded/");
+    tmpdir = flatten_count_chars(&tmpdir_cc, 0);
+
+    if (!cmd_data->options.silent) {
+        printf("Making: %s\n", tmpdir);
+    }
+    safe_mkdir(tmpdir);
+
+    push_count_chars(cmd_data->tmp_dirs, tmpdir);
+
+    getcwd(savewd, sizeof(savewd));
+
+    if (chdir(tmpdir) != 0) {
+        if (!cmd_data->options.silent) {
+            printf("Warning: could not explode %s\n", lib);
+        }
+        return 1;
+    }
+
+    if (lib[0] == '/') {
+        libname = lib;
+    }
+    else {
+        init_count_chars(&libname_cc);
+        push_count_chars(&libname_cc, "../../");
+        push_count_chars(&libname_cc, lib);
+        libname = flatten_count_chars(&libname_cc, 0);
+    }
+
+    lib_args[0] = LIBRARIAN;
+    lib_args[1] = "x";
+    lib_args[2] = libname;
+    lib_args[3] = NULL;
+
+    external_spawn(cmd_data, LIBRARIAN, lib_args);
+
+    chdir(savewd);
+    dir = opendir(tmpdir);
+
+    while ((entry = readdir(dir)) != NULL) {
+#if defined(__APPLE__) && defined(RANLIB)
+        /* Apple inserts __.SYMDEF which isn't needed.
+         * Leopard (10.5+) can also add '__.SYMDEF SORTED' which isn't
+         * much fun either.  Just skip them.
+         */
+        if (strstr(entry->d_name, "__.SYMDEF") != NULL) {
+            continue;
+        }
+#endif
+        if (entry->d_name[0] != '.') {
+            push_count_chars(&tmpdir_cc, entry->d_name);
+            name = flatten_count_chars(&tmpdir_cc, 0);
+            if (!cmd_data->options.silent) {
+                printf("Adding: %s\n", name);
+            }
+            push_count_chars(cmd_data->obj_files, name);
+            pop_count_chars(&tmpdir_cc);
+        }
+    }
+
+    closedir(dir);
+    return 0;
+}
+
+int parse_input_file_name(char *arg, command_t *cmd_data)
+{
+    char *ext = strrchr(arg, '.');
+    char *name = strrchr(arg, '/');
+    int pathlen;
+    enum lib_type libtype;
+    char *newarg;
+
+    if (!ext) {
+        return 0;
+    }
+
+    ext++;
+
+    if (name == NULL) {
+        name = strrchr(arg, '\\');
+
+        if (name == NULL) {
+            name = arg;
+        } else {
+            name++;
+        }
+    } else {
+        name++;
+    }
+
+    pathlen = name - arg;
+
+    if (strcmp(ext, "lo") == 0) {
+        newarg = check_object_exists(cmd_data, arg, ext - arg);
+        if (!newarg) {
+            printf("Can not find suitable object file for %s\n", arg);
+            exit(1);
+        }
+        if (cmd_data->mode != mLink) {
+            push_count_chars(cmd_data->arglist, newarg);
+        }
+        else {
+            push_count_chars(cmd_data->obj_files, newarg);
+        }
+        return 1;
+    }
+
+    if (strcmp(ext, "la") == 0) {
+        switch (cmd_data->mode) {
+        case mLink:
+            /* Try the .libs dir first! */
+            newarg = check_library_exists(cmd_data, arg, pathlen, 1, &libtype);
+            if (!newarg) {
+                /* Try the normal dir next. */
+                newarg = check_library_exists(cmd_data, arg, pathlen, 0, &libtype);
+                if (!newarg) {
+                    printf("Can not find suitable library for %s\n", arg);
+                    exit(1);
+                }
+            }
+
+            /* It is not ok to just add the file: a library may added with:
+               1 - -L path library_name. (For *.so in Linux).
+               2 - library_name.
+             */
+#ifdef ADD_MINUS_L
+            if (libtype == type_DYNAMIC_LIB) {
+                 add_minus_l(cmd_data->shared_opts.dependencies, newarg);
+            } else if (cmd_data->output == otLibrary &&
+                       libtype == type_STATIC_LIB) {
+                explode_static_lib(cmd_data, newarg);
+            } else {
+                 push_count_chars(cmd_data->shared_opts.dependencies, newarg);
+            }
+#else
+            if (cmd_data->output == otLibrary && libtype == type_STATIC_LIB) {
+                explode_static_lib(cmd_data, newarg);
+            }
+            else {
+                push_count_chars(cmd_data->shared_opts.dependencies, newarg);
+            }
+#endif
+            if (libtype == type_DYNAMIC_LIB) {
+                if (cmd_data->options.no_install) {
+#ifdef RPATH
+                    add_rpath_noinstall(cmd_data->shared_opts.dependencies,
+                                        arg, pathlen);
+#endif
+#ifdef DYNAMIC_LINK_NO_INSTALL
+                    /*
+                     * This doesn't work as Darwin's linker has no way to
+                     * override at link-time the search paths for a
+                     * non-installed library.
+                     */
+                    /*
+                    add_dylink_noinstall(cmd_data->shared_opts.dependencies,
+                                         arg, pathlen, ext - arg);
+                    */
+#endif
+                }
+                else {
+#ifdef RPATH
+                    add_rpath_file(cmd_data->shared_opts.dependencies, arg);
+#endif
+                }
+            }
+            break;
+        case mInstall:
+            /* If we've already recorded a library to install, we're most
+             * likely getting the .la file that we want to install as.
+             * The problem is that we need to add it as the directory,
+             * not the .la file itself.  Otherwise, we'll do odd things.
+             */
+            if (cmd_data->output == otLibrary) {
+                arg[pathlen] = '\0';
+                push_count_chars(cmd_data->arglist, arg);
+            }
+            else {
+                cmd_data->output = otLibrary;
+                cmd_data->output_name = arg;
+                cmd_data->static_name.install = gen_install_name(arg, 0);
+                cmd_data->shared_name.install = gen_install_name(arg, 1);
+                cmd_data->module_name.install = gen_install_name(arg, 2);
+            }
+            break;
+        default:
+            break;
+        }
+        return 1;
+    }
+
+    if (strcmp(ext, "c") == 0) {
+        /* If we don't already have an idea what our output name will be. */
+        if (cmd_data->basename == NULL) {
+            cmd_data->basename = (char *)malloc(strlen(arg) + 4);
+            strcpy(cmd_data->basename, arg);
+            strcpy(strrchr(cmd_data->basename, '.') + 1, "lo");
+
+            cmd_data->fake_output_name = strrchr(cmd_data->basename, '/');
+            if (cmd_data->fake_output_name) {
+                cmd_data->fake_output_name++;
+            }
+            else {
+                cmd_data->fake_output_name = cmd_data->basename;
+            }
+        }
+    }
+
+    return 0;
+}
+
+int parse_output_file_name(char *arg, command_t *cmd_data)
+{
+    char *name = strrchr(arg, '/');
+    char *ext = strrchr(arg, '.');
+    char *newarg = NULL;
+    int pathlen;
+
+    cmd_data->fake_output_name = arg;
+
+    if (name) {
+        name++;
+    }
+    else {
+        name = strrchr(arg, '\\');
+
+        if (name == NULL) {
+            name = arg;
+        }
+        else {
+            name++;
+        }
+    }
+
+#ifdef EXE_EXT
+    if (!ext || strcmp(ext, EXE_EXT) == 0) {
+#else
+    if (!ext) {
+#endif
+        cmd_data->basename = arg;
+        cmd_data->output = otProgram;
+#if defined(_OSD_POSIX)
+        cmd_data->options.pic_mode = pic_AVOID;
+#endif
+        newarg = (char *)malloc(strlen(arg) + 5);
+        strcpy(newarg, arg);
+#ifdef EXE_EXT
+        if (!ext) {
+            strcat(newarg, EXE_EXT);
+        }
+#endif
+        cmd_data->output_name = newarg;
+        return 1;
+    }
+
+    ext++;
+    pathlen = name - arg;
+
+    if (strcmp(ext, "la") == 0) {
+        assert(cmd_data->mode == mLink);
+
+        cmd_data->basename = arg;
+        cmd_data->static_name.normal = gen_library_name(arg, 0);
+        cmd_data->shared_name.normal = gen_library_name(arg, 1);
+        cmd_data->module_name.normal = gen_library_name(arg, 2);
+        cmd_data->static_name.install = gen_install_name(arg, 0);
+        cmd_data->shared_name.install = gen_install_name(arg, 1);
+        cmd_data->module_name.install = gen_install_name(arg, 2);
+
+#ifdef TRUNCATE_DLL_NAME
+        if (shared) {
+          arg = truncate_dll_name(arg);
+        }
+#endif
+
+        cmd_data->output_name = arg;
+        return 1;
+    }
+
+    if (strcmp(ext, "lo") == 0) {
+        cmd_data->basename = arg;
+        cmd_data->output = otObject;
+        newarg = (char *)malloc(strlen(arg) + 2);
+        strcpy(newarg, arg);
+        ext = strrchr(newarg, '.') + 1;
+        strcpy(ext, OBJECT_EXT);
+        cmd_data->output_name = newarg;
+        return 1;
+    }
+
+    return 0;
+}
+
+void parse_args(int argc, char *argv[], command_t *cmd_data)
+{
+    int a;
+    char *arg;
+    int argused;
+
+    for (a = 1; a < argc; a++) {
+        arg = argv[a];
+        argused = 1;
+
+        if (arg[0] == '-') {
+            if (arg[1] == '-') {
+                argused = parse_long_opt(arg + 2, cmd_data);
+            }
+            else {
+                argused = parse_short_opt(arg + 1, cmd_data);
+            }
+
+            /* We haven't done anything with it yet, try some of the
+             * more complicated short opts... */
+            if (argused == 0 && a + 1 < argc) {
+                if (arg[1] == 'o' && !arg[2]) {
+                    arg = argv[++a];
+                    argused = parse_output_file_name(arg, cmd_data);
+                } else if (strcmp(arg+1, "MT") == 0) {
+                    if (!cmd_data->options.silent) {
+                        printf("Adding: %s\n", arg);
+                    }
+                    push_count_chars(cmd_data->arglist, arg);
+                    arg = argv[++a];
+                    if (!cmd_data->options.silent) {
+                        printf(" %s\n", arg);
+                    }
+                    push_count_chars(cmd_data->arglist, arg);
+                    argused = 1;
+                } else if (strcmp(arg+1, "rpath") == 0) {
+                    /* Aha, we should try to link both! */
+                    cmd_data->install_path = argv[++a];
+                    argused = 1;
+                } else if (strcmp(arg+1, "release") == 0) {
+                    /* Store for later deciphering */
+                    cmd_data->version_info = argv[++a];
+                    argused = 1;
+                } else if (strcmp(arg+1, "version-info") == 0) {
+                    /* Store for later deciphering */
+                    cmd_data->version_info = argv[++a];
+                    argused = 1;
+                } else if (strcmp(arg+1, "export-symbols-regex") == 0) {
+                    /* Skip the argument. */
+                    ++a;
+                    argused = 1;
+                } else if (strcmp(arg+1, "release") == 0) {
+                    /* Skip the argument. */
+                    ++a;
+                    argused = 1;
+                } else if (strcmp(arg+1, "undefined") == 0) {
+                    cmd_data->undefined_flag = argv[++a];
+                    argused = 1;
+                } else if (arg[1] == 'R' && !arg[2]) {
+                    /* -R dir Add dir to runtime library search path. */
+                    add_runtimedirlib(argv[++a], cmd_data);
+                    argused = 1;
+                }
+            }
+        } else {
+            argused = parse_input_file_name(arg, cmd_data);
+        }
+
+        if (!argused) {
+            if (!cmd_data->options.silent) {
+                printf("Adding: %s\n", arg);
+            }
+            push_count_chars(cmd_data->arglist, arg);
+        }
+    }
+
+}
+
+#ifdef GEN_EXPORTS
+void generate_def_file(command_t *cmd_data)
+{
+    char def_file[1024];
+    char implib_file[1024];
+    char *ext;
+    FILE *hDef;
+    char *export_args[1024];
+    int num_export_args = 0;
+    char *cmd;
+    int cmd_size = 0;
+    int a;
+
+    if (cmd_data->output_name) {
+        strcpy(def_file, cmd_data->output_name);
+        strcat(def_file, ".def");
+        hDef = fopen(def_file, "w");
+
+        if (hDef != NULL) {
+            fprintf(hDef, "LIBRARY '%s' INITINSTANCE\n", nameof(cmd_data->output_name));
+            fprintf(hDef, "DATA NONSHARED\n");
+            fprintf(hDef, "EXPORTS\n");
+            fclose(hDef);
+
+            for (a = 0; a < cmd_data->num_obj_files; a++) {
+                cmd_size += strlen(cmd_data->obj_files[a]) + 1;
+            }
+
+            cmd_size += strlen(GEN_EXPORTS) + strlen(def_file) + 3;
+            cmd = (char *)malloc(cmd_size);
+            strcpy(cmd, GEN_EXPORTS);
+
+            for (a=0; a < cmd_data->num_obj_files; a++) {
+                strcat(cmd, " ");
+                strcat(cmd, cmd_data->obj_files[a] );
+            }
+
+            strcat(cmd, ">>");
+            strcat(cmd, def_file);
+            puts(cmd);
+            export_args[num_export_args++] = SHELL_CMD;
+            export_args[num_export_args++] = "-c";
+            export_args[num_export_args++] = cmd;
+            export_args[num_export_args++] = NULL;
+            external_spawn(cmd_data, export_args[0], (const char**)export_args);
+            cmd_data->arglist[cmd_data->num_args++] = strdup(def_file);
+
+            /* Now make an import library for the dll */
+            num_export_args = 0;
+            export_args[num_export_args++] = DEF2IMPLIB_CMD;
+            export_args[num_export_args++] = "-o";
+
+            strcpy(implib_file, ".libs/");
+            strcat(implib_file, cmd_data->basename);
+            ext = strrchr(implib_file, '.');
+
+            if (ext)
+                *ext = 0;
+
+            strcat(implib_file, ".");
+            strcat(implib_file, STATIC_LIB_EXT);
+
+            export_args[num_export_args++] = implib_file;
+            export_args[num_export_args++] = def_file;
+            export_args[num_export_args++] = NULL;
+            external_spawn(cmd_data, export_args[0], (const char**)export_args);
+
+        }
+    }
+}
+#endif
+
+const char* expand_path(const char *relpath)
+{
+    char foo[PATH_MAX], *newpath;
+
+    getcwd(foo, PATH_MAX-1);
+    newpath = (char*)malloc(strlen(foo)+strlen(relpath)+2);
+    strcpy(newpath, foo);
+    strcat(newpath, "/");
+    strcat(newpath, relpath);
+    return newpath;
+}
+
+void link_fixup(command_t *c)
+{
+    /* If we were passed an -rpath directive, we need to build
+     * shared objects too.  Otherwise, we should only create static
+     * libraries.
+     */
+    if (!c->install_path && (c->output == otDynamicLibraryOnly ||
+        c->output == otModule || c->output == otLibrary)) {
+        c->output = otStaticLibraryOnly;
+    }
+
+    if (c->output == otDynamicLibraryOnly ||
+        c->output == otModule ||
+        c->output == otLibrary) {
+
+        push_count_chars(c->shared_opts.normal, "-o");
+        if (c->output == otModule) {
+            push_count_chars(c->shared_opts.normal, c->module_name.normal);
+        }
+        else {
+            char *tmp;
+            push_count_chars(c->shared_opts.normal, c->shared_name.normal);
+#ifdef DYNAMIC_INSTALL_NAME
+            push_count_chars(c->shared_opts.normal, DYNAMIC_INSTALL_NAME);
+
+            tmp = (char*)malloc(PATH_MAX);
+            strcpy(tmp, c->install_path);
+            strcat(tmp, strrchr(c->shared_name.normal, '/'));
+            push_count_chars(c->shared_opts.normal, tmp);
+#endif
+        }
+
+        append_count_chars(c->shared_opts.normal, c->obj_files);
+        append_count_chars(c->shared_opts.normal, c->shared_opts.dependencies);
+
+        if (c->options.export_all) {
+#ifdef GEN_EXPORTS
+            generate_def_file(c);
+#endif
+        }
+    }
+
+    if (c->output == otLibrary || c->output == otStaticLibraryOnly) {
+        push_count_chars(c->static_opts.normal, "-o");
+        push_count_chars(c->static_opts.normal, c->output_name);
+    }
+
+    if (c->output == otProgram) {
+        if (c->output_name) {
+            push_count_chars(c->arglist, "-o");
+            push_count_chars(c->arglist, c->output_name);
+            append_count_chars(c->arglist, c->obj_files);
+            append_count_chars(c->arglist, c->shared_opts.dependencies);
+            add_dynamic_link_opts(c, c->arglist);
+        }
+    }
+}
+
+void post_parse_fixup(command_t *cmd_data)
+{
+    switch (cmd_data->mode)
+    {
+    case mCompile:
+#ifdef PIC_FLAG
+        if (cmd_data->options.pic_mode != pic_AVOID) {
+            push_count_chars(cmd_data->arglist, PIC_FLAG);
+        }
+#endif
+        if (cmd_data->output_name) {
+            push_count_chars(cmd_data->arglist, "-o");
+            push_count_chars(cmd_data->arglist, cmd_data->output_name);
+        }
+        break;
+    case mLink:
+        link_fixup(cmd_data);
+        break;
+    case mInstall:
+        if (cmd_data->output == otLibrary) {
+            link_fixup(cmd_data);
+        }
+    default:
+        break;
+    }
+
+#if USE_OMF
+    if (cmd_data->output == otObject ||
+        cmd_data->output == otProgram ||
+        cmd_data->output == otLibrary ||
+        cmd_data->output == otDynamicLibraryOnly) {
+        push_count_chars(cmd_data->arglist, "-Zomf");
+    }
+#endif
+
+    if (cmd_data->options.shared &&
+            (cmd_data->output == otObject ||
+             cmd_data->output == otLibrary ||
+             cmd_data->output == otDynamicLibraryOnly)) {
+#ifdef SHARE_SW
+        push_count_chars(cmd_data->arglist, SHARE_SW);
+#endif
+    }
+}
+
+int run_mode(command_t *cmd_data)
+{
+    int rv;
+    count_chars *cctemp;
+
+    cctemp = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cctemp);
+
+    switch (cmd_data->mode)
+    {
+    case mCompile:
+        rv = run_command(cmd_data, cmd_data->arglist);
+        if (rv) {
+            return rv;
+        }
+        break;
+    case mInstall:
+        /* Well, we'll assume it's a file going to a directory... */
+        /* For brain-dead install-sh based scripts, we have to repeat
+         * the command N-times.  install-sh should die.
+         */
+        if (!cmd_data->output_name) {
+            rv = run_command(cmd_data, cmd_data->arglist);
+            if (rv) {
+                return rv;
+            }
+        }
+        if (cmd_data->output_name) {
+            append_count_chars(cctemp, cmd_data->arglist);
+            insert_count_chars(cctemp,
+                               cmd_data->output_name,
+                               cctemp->num - 1);
+            rv = run_command(cmd_data, cctemp);
+            if (rv) {
+                return rv;
+            }
+            clear_count_chars(cctemp);
+        }
+        if (cmd_data->static_name.install) {
+            append_count_chars(cctemp, cmd_data->arglist);
+            insert_count_chars(cctemp,
+                               cmd_data->static_name.install,
+                               cctemp->num - 1);
+            rv = run_command(cmd_data, cctemp);
+            if (rv) {
+                return rv;
+            }
+#if defined(__APPLE__) && defined(RANLIB)
+            /* From the Apple libtool(1) manpage on Tiger/10.4:
+             * ----
+             * With  the way libraries used to be created, errors were possible
+             * if the library was modified with ar(1) and  the  table  of
+             * contents  was  not updated  by  rerunning ranlib(1).  Thus the
+             * link editor, ld, warns when the modification date of a library
+             * is more  recent  than  the  creation date  of its table of
+             * contents.  Unfortunately, this means that you get the warning
+             * even if you only copy the library.
+             * ----
+             *
+             * This means that when we install the static archive, we need to
+             * rerun ranlib afterwards.
+             */
+            const char *lib_args[3], *static_lib_name;
+            char *tmp;
+            size_t len1, len2;
+            len1 = strlen(cmd_data->arglist->vals[cmd_data->arglist->num - 1]);
+
+            static_lib_name = jlibtool_basename(cmd_data->static_name.install);
+            len2 = strlen(static_lib_name);
+
+            tmp = malloc(len1 + len2 + 2);
+
+            snprintf(tmp, len1 + len2 + 2, "%s/%s",
+                    cmd_data->arglist->vals[cmd_data->arglist->num - 1],
+                    static_lib_name);
+
+            lib_args[0] = RANLIB;
+            lib_args[1] = tmp;
+            lib_args[2] = NULL;
+            external_spawn(cmd_data, RANLIB, lib_args);
+            free(tmp);
+#endif
+            clear_count_chars(cctemp);
+        }
+        if (cmd_data->shared_name.install) {
+            append_count_chars(cctemp, cmd_data->arglist);
+            insert_count_chars(cctemp,
+                               cmd_data->shared_name.install,
+                               cctemp->num - 1);
+            rv = run_command(cmd_data, cctemp);
+            if (rv) {
+                return rv;
+            }
+            clear_count_chars(cctemp);
+        }
+        if (cmd_data->module_name.install) {
+            append_count_chars(cctemp, cmd_data->arglist);
+            insert_count_chars(cctemp,
+                               cmd_data->module_name.install,
+                               cctemp->num - 1);
+            rv = run_command(cmd_data, cctemp);
+            if (rv) {
+                return rv;
+            }
+            clear_count_chars(cctemp);
+        }
+        break;
+    case mLink:
+        if (!cmd_data->options.dry_run) {
+            /* Check first to see if the dir already exists! */
+            safe_mkdir(".libs");
+        }
+
+        if (cmd_data->output == otStaticLibraryOnly ||
+            cmd_data->output == otLibrary) {
+#ifdef RANLIB
+            const char *lib_args[3];
+#endif
+            /* Removes compiler! */
+            cmd_data->program = LIBRARIAN;
+            push_count_chars(cmd_data->program_opts, LIBRARIAN_OPTS);
+            push_count_chars(cmd_data->program_opts,
+                             cmd_data->static_name.normal);
+
+            rv = run_command(cmd_data, cmd_data->obj_files);
+            if (rv) {
+                return rv;
+            }
+
+#ifdef RANLIB
+            lib_args[0] = RANLIB;
+            lib_args[1] = cmd_data->static_name.normal;
+            lib_args[2] = NULL;
+            external_spawn(cmd_data, RANLIB, lib_args);
+#endif
+        }
+
+        if (cmd_data->output == otDynamicLibraryOnly ||
+            cmd_data->output == otModule ||
+            cmd_data->output == otLibrary) {
+            cmd_data->program = NULL;
+            clear_count_chars(cmd_data->program_opts);
+
+            append_count_chars(cmd_data->program_opts, cmd_data->arglist);
+            if (cmd_data->output == otModule) {
+#ifdef MODULE_OPTS
+                push_count_chars(cmd_data->program_opts, MODULE_OPTS);
+#endif
+            } else {
+#ifdef SHARED_OPTS
+                push_count_chars(cmd_data->program_opts, SHARED_OPTS);
+#endif
+#ifdef dynamic_link_version_func
+                push_count_chars(cmd_data->program_opts,
+                             dynamic_link_version_func(cmd_data->version_info));
+#endif
+            }
+            add_dynamic_link_opts(cmd_data, cmd_data->program_opts);
+
+            rv = run_command(cmd_data, cmd_data->shared_opts.normal);
+            if (rv) {
+                return rv;
+            }
+        }
+        if (cmd_data->output == otProgram) {
+            rv = run_command(cmd_data, cmd_data->arglist);
+            if (rv) {
+                return rv;
+            }
+        }
+        break;
+    default:
+        break;
+    } 
+
+    return 0;
+}
+
+void cleanup_tmp_dir(const char *dirname)
+{
+    DIR *dir;
+    struct dirent *entry;
+    char fullname[1024];
+
+    dir = opendir(dirname);
+
+    if (dir == NULL)
+        return;
+
+    while ((entry = readdir(dir)) != NULL) {
+        if (entry->d_name[0] != '.') {
+            strcpy(fullname, dirname);
+            strcat(fullname, "/");
+            strcat(fullname, entry->d_name);
+            remove(fullname);
+        }
+    }
+
+    rmdir(dirname);
+}
+
+void cleanup_tmp_dirs(command_t *cmd_data)
+{
+    int d;
+
+    for (d = 0; d < cmd_data->tmp_dirs->num; d++) {
+        cleanup_tmp_dir(cmd_data->tmp_dirs->vals[d]);
+    }
+}
+
+int ensure_fake_uptodate(command_t *cmd_data)
+{
+    /* FIXME: could do the stat/touch here, but nah... */
+    const char *touch_args[3];
+
+    if (cmd_data->mode == mInstall) {
+        return 0;
+    }
+    if (!cmd_data->fake_output_name) {
+        return 0;
+    }
+
+    touch_args[0] = "touch";
+    touch_args[1] = cmd_data->fake_output_name;
+    touch_args[2] = NULL;
+    return external_spawn(cmd_data, "touch", touch_args);
+}
+
+/* Store the install path in the *.la file */
+int add_for_runtime(command_t *cmd_data)
+{
+    if (cmd_data->mode == mInstall) {
+        return 0;
+    }
+    if (cmd_data->output == otDynamicLibraryOnly ||
+        cmd_data->output == otLibrary) {
+        FILE *f=fopen(cmd_data->fake_output_name,"w");
+        if (f == NULL) {
+            return -1;
+        }
+        fprintf(f,"%s\n", cmd_data->install_path);
+        fclose(f);
+        return(0);
+    } else {
+        return(ensure_fake_uptodate(cmd_data));
+    }
+}
+
+int main(int argc, char *argv[])
+{
+    int rc;
+    command_t cmd_data;
+
+    memset(&cmd_data, 0, sizeof(cmd_data));
+
+    cmd_data.options.pic_mode = pic_UNKNOWN;
+
+    cmd_data.program_opts = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.program_opts);
+    cmd_data.arglist = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.arglist);
+    cmd_data.tmp_dirs = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.tmp_dirs);
+    cmd_data.obj_files = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.obj_files);
+    cmd_data.dep_rpaths = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.dep_rpaths);
+    cmd_data.rpaths = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.rpaths);
+    cmd_data.static_opts.normal = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.static_opts.normal);
+    cmd_data.shared_opts.normal = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.shared_opts.normal);
+    cmd_data.shared_opts.dependencies = (count_chars*)malloc(sizeof(count_chars));
+    init_count_chars(cmd_data.shared_opts.dependencies);
+
+    cmd_data.mode = mUnknown;
+    cmd_data.output = otGeneral;
+
+    parse_args(argc, argv, &cmd_data);
+    post_parse_fixup(&cmd_data);
+
+    if (cmd_data.mode == mUnknown) {
+        exit(0);
+    }
+
+    rc = run_mode(&cmd_data);
+
+    if (!rc) {
+       add_for_runtime(&cmd_data); 
+    }
+
+    cleanup_tmp_dirs(&cmd_data);
+    return rc;
+}

Deleted: vendor/apache/apr/1.5.2/build/libaprapp.dep
===================================================================
--- vendor/apache/apr/dist/build/libaprapp.dep	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/libaprapp.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,19 +0,0 @@
-# Microsoft Developer Studio Generated Dependency File, included by libaprapp.mak
-
-..\misc\win32\apr_app.c : \
-	"..\include\apr_getopt.h"\
-	"..\include\apr_lib.h"\
-	"..\include\apr_poll.h"\
-	"..\include\apr_portable.h"\
-	"..\include\arch\win32\apr_arch_file_io.h"\
-	"..\include\arch\win32\apr_arch_utf8.h"\
-	
-
-..\misc\win32\internal.c : \
-	"..\include\apr_getopt.h"\
-	"..\include\apr_lib.h"\
-	"..\include\apr_poll.h"\
-	"..\include\apr_portable.h"\
-	"..\include\arch\win32\apr_arch_file_io.h"\
-	"..\include\arch\win32\apr_arch_utf8.h"\
-	

Copied: vendor/apache/apr/1.5.2/build/libaprapp.dep (from rev 9273, vendor/apache/apr/dist/build/libaprapp.dep)
===================================================================
--- vendor/apache/apr/1.5.2/build/libaprapp.dep	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/libaprapp.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,63 @@
+# Microsoft Developer Studio Generated Dependency File, included by libaprapp.mak
+
+..\misc\win32\apr_app.c : \
+	"..\include\apr.h"\
+	"..\include\apr_allocator.h"\
+	"..\include\apr_dso.h"\
+	"..\include\apr_errno.h"\
+	"..\include\apr_file_info.h"\
+	"..\include\apr_file_io.h"\
+	"..\include\apr_general.h"\
+	"..\include\apr_getopt.h"\
+	"..\include\apr_global_mutex.h"\
+	"..\include\apr_inherit.h"\
+	"..\include\apr_lib.h"\
+	"..\include\apr_network_io.h"\
+	"..\include\apr_poll.h"\
+	"..\include\apr_pools.h"\
+	"..\include\apr_portable.h"\
+	"..\include\apr_proc_mutex.h"\
+	"..\include\apr_shm.h"\
+	"..\include\apr_tables.h"\
+	"..\include\apr_thread_mutex.h"\
+	"..\include\apr_thread_proc.h"\
+	"..\include\apr_time.h"\
+	"..\include\apr_user.h"\
+	"..\include\apr_want.h"\
+	"..\include\arch\apr_private_common.h"\
+	"..\include\arch\win32\apr_arch_file_io.h"\
+	"..\include\arch\win32\apr_arch_misc.h"\
+	"..\include\arch\win32\apr_arch_utf8.h"\
+	"..\include\arch\win32\apr_private.h"\
+	
+
+..\misc\win32\internal.c : \
+	"..\include\apr.h"\
+	"..\include\apr_allocator.h"\
+	"..\include\apr_dso.h"\
+	"..\include\apr_errno.h"\
+	"..\include\apr_file_info.h"\
+	"..\include\apr_file_io.h"\
+	"..\include\apr_general.h"\
+	"..\include\apr_getopt.h"\
+	"..\include\apr_global_mutex.h"\
+	"..\include\apr_inherit.h"\
+	"..\include\apr_lib.h"\
+	"..\include\apr_network_io.h"\
+	"..\include\apr_poll.h"\
+	"..\include\apr_pools.h"\
+	"..\include\apr_portable.h"\
+	"..\include\apr_proc_mutex.h"\
+	"..\include\apr_shm.h"\
+	"..\include\apr_tables.h"\
+	"..\include\apr_thread_mutex.h"\
+	"..\include\apr_thread_proc.h"\
+	"..\include\apr_time.h"\
+	"..\include\apr_user.h"\
+	"..\include\apr_want.h"\
+	"..\include\arch\apr_private_common.h"\
+	"..\include\arch\win32\apr_arch_file_io.h"\
+	"..\include\arch\win32\apr_arch_misc.h"\
+	"..\include\arch\win32\apr_arch_utf8.h"\
+	"..\include\arch\win32\apr_private.h"\
+	

Deleted: vendor/apache/apr/1.5.2/build/libaprapp.mak
===================================================================
--- vendor/apache/apr/dist/build/libaprapp.mak	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/libaprapp.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,632 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on libaprapp.dsp
-!IF "$(CFG)" == ""
-CFG=libaprapp - Win32 Release
-!MESSAGE No configuration specified. Defaulting to libaprapp - Win32 Release.
-!ENDIF 
-
-!IF "$(CFG)" != "libaprapp - Win32 Release" && "$(CFG)" != "libaprapp - Win32 Debug" && "$(CFG)" != "libaprapp - Win32 Release9x" && "$(CFG)" != "libaprapp - Win32 Debug9x" && "$(CFG)" != "libaprapp - x64 Release" && "$(CFG)" != "libaprapp - x64 Debug"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "libaprapp.mak" CFG="libaprapp - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "libaprapp - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "libaprapp - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "libaprapp - Win32 Release9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "libaprapp - Win32 Debug9x" (based on "Win32 (x86) Static Library")
-!MESSAGE "libaprapp - x64 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "libaprapp - x64 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-!ERROR An invalid configuration is specified.
-!ENDIF 
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-!IF  "$(CFG)" == "libaprapp - Win32 Release"
-
-OUTDIR=.\..\Release
-INTDIR=.\Release
-# Begin Custom Macros
-OutDir=.\..\Release
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\libaprapp-1.lib"
-
-!ELSE 
-
-ALL : "prelibaprapp - Win32 Release" "$(OUTDIR)\libaprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"prelibaprapp - Win32 ReleaseCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(OUTDIR)\libaprapp-1.lib"
-	- at erase "..\Release\libaprapp-1.idb"
-	- at erase "..\Release\libaprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj" \
-	"$(INTDIR)\internal.obj"
-
-"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug"
-
-OUTDIR=.\..\Debug
-INTDIR=.\Debug
-# Begin Custom Macros
-OutDir=.\..\Debug
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\libaprapp-1.lib"
-
-!ELSE 
-
-ALL : "prelibaprapp - Win32 Debug" "$(OUTDIR)\libaprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"prelibaprapp - Win32 DebugCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(OUTDIR)\libaprapp-1.lib"
-	- at erase "..\Debug\libaprapp-1.idb"
-	- at erase "..\Debug\libaprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj" \
-	"$(INTDIR)\internal.obj"
-
-"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "libaprapp - Win32 Release9x"
-
-OUTDIR=.\..\9x\Release
-INTDIR=.\9x\Release
-# Begin Custom Macros
-OutDir=.\..\9x\Release
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\libaprapp-1.lib"
-
-!ELSE 
-
-ALL : "prelibaprapp - Win32 Release9x" "$(OUTDIR)\libaprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"prelibaprapp - Win32 Release9xCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(OUTDIR)\libaprapp-1.lib"
-	- at erase "..\9x\Release\libaprapp-1.idb"
-	- at erase "..\9x\Release\libaprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj" \
-	"$(INTDIR)\internal.obj"
-
-"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug9x"
-
-OUTDIR=.\..\9x\Debug
-INTDIR=.\9x\Debug
-# Begin Custom Macros
-OutDir=.\..\9x\Debug
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\libaprapp-1.lib"
-
-!ELSE 
-
-ALL : "prelibaprapp - Win32 Debug9x" "$(OUTDIR)\libaprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"prelibaprapp - Win32 Debug9xCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(OUTDIR)\libaprapp-1.lib"
-	- at erase "..\9x\Debug\libaprapp-1.idb"
-	- at erase "..\9x\Debug\libaprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj" \
-	"$(INTDIR)\internal.obj"
-
-"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "libaprapp - x64 Release"
-
-OUTDIR=.\..\x64\Release
-INTDIR=.\x64\Release
-# Begin Custom Macros
-OutDir=.\..\x64\Release
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\libaprapp-1.lib"
-
-!ELSE 
-
-ALL : "prelibaprapp - x64 Release" "$(OUTDIR)\libaprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"prelibaprapp - x64 ReleaseCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(OUTDIR)\libaprapp-1.lib"
-	- at erase "..\x64\Release\libaprapp-1.idb"
-	- at erase "..\x64\Release\libaprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj" \
-	"$(INTDIR)\internal.obj"
-
-"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "libaprapp - x64 Debug"
-
-OUTDIR=.\..\x64\Debug
-INTDIR=.\x64\Debug
-# Begin Custom Macros
-OutDir=.\..\x64\Debug
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "$(OUTDIR)\libaprapp-1.lib"
-
-!ELSE 
-
-ALL : "prelibaprapp - x64 Debug" "$(OUTDIR)\libaprapp-1.lib"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"prelibaprapp - x64 DebugCLEAN" 
-!ELSE 
-CLEAN :
-!ENDIF 
-	- at erase "$(INTDIR)\apr_app.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(OUTDIR)\libaprapp-1.lib"
-	- at erase "..\x64\Debug\libaprapp-1.idb"
-	- at erase "..\x64\Debug\libaprapp-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
-BSC32_SBRS= \
-	
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\apr_app.obj" \
-	"$(INTDIR)\internal.obj"
-
-"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF 
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("libaprapp.dep")
-!INCLUDE "libaprapp.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "libaprapp.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "libaprapp - Win32 Release" || "$(CFG)" == "libaprapp - Win32 Debug" || "$(CFG)" == "libaprapp - Win32 Release9x" || "$(CFG)" == "libaprapp - Win32 Debug9x" || "$(CFG)" == "libaprapp - x64 Release" || "$(CFG)" == "libaprapp - x64 Debug"
-
-!IF  "$(CFG)" == "libaprapp - Win32 Release"
-
-"prelibaprapp - Win32 Release" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"prelibaprapp - Win32 ReleaseCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug"
-
-"prelibaprapp - Win32 Debug" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"prelibaprapp - Win32 DebugCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "libaprapp - Win32 Release9x"
-
-"prelibaprapp - Win32 Release9x" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"prelibaprapp - Win32 Release9xCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug9x"
-
-"prelibaprapp - Win32 Debug9x" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"prelibaprapp - Win32 Debug9xCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "libaprapp - x64 Release"
-
-"prelibaprapp - x64 Release" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"prelibaprapp - x64 ReleaseCLEAN" : 
-   cd "."
-   cd "."
-
-!ELSEIF  "$(CFG)" == "libaprapp - x64 Debug"
-
-"prelibaprapp - x64 Debug" : 
-   cd "."
-   NMAKE /nologo /f NUL
-   cd "."
-
-"prelibaprapp - x64 DebugCLEAN" : 
-   cd "."
-   cd "."
-
-!ENDIF 
-
-SOURCE=..\misc\win32\apr_app.c
-
-"$(INTDIR)\apr_app.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\misc\win32\internal.c
-
-"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-
-!ENDIF 
-

Copied: vendor/apache/apr/1.5.2/build/libaprapp.mak (from rev 9273, vendor/apache/apr/dist/build/libaprapp.mak)
===================================================================
--- vendor/apache/apr/1.5.2/build/libaprapp.mak	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/libaprapp.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,632 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on libaprapp.dsp
+!IF "$(CFG)" == ""
+CFG=libaprapp - Win32 Release
+!MESSAGE No configuration specified. Defaulting to libaprapp - Win32 Release.
+!ENDIF 
+
+!IF "$(CFG)" != "libaprapp - Win32 Release" && "$(CFG)" != "libaprapp - Win32 Debug" && "$(CFG)" != "libaprapp - Win32 Release9x" && "$(CFG)" != "libaprapp - Win32 Debug9x" && "$(CFG)" != "libaprapp - x64 Release" && "$(CFG)" != "libaprapp - x64 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "libaprapp.mak" CFG="libaprapp - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "libaprapp - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libaprapp - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "libaprapp - Win32 Release9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "libaprapp - Win32 Debug9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "libaprapp - x64 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libaprapp - x64 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "libaprapp - Win32 Release"
+
+OUTDIR=.\..\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\..\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\libaprapp-1.lib"
+
+!ELSE 
+
+ALL : "prelibaprapp - Win32 Release" "$(OUTDIR)\libaprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"prelibaprapp - Win32 ReleaseCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(OUTDIR)\libaprapp-1.lib"
+	- at erase "..\Release\libaprapp-1.idb"
+	- at erase "..\Release\libaprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj" \
+	"$(INTDIR)\internal.obj"
+
+"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug"
+
+OUTDIR=.\..\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\..\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\libaprapp-1.lib"
+
+!ELSE 
+
+ALL : "prelibaprapp - Win32 Debug" "$(OUTDIR)\libaprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"prelibaprapp - Win32 DebugCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(OUTDIR)\libaprapp-1.lib"
+	- at erase "..\Debug\libaprapp-1.idb"
+	- at erase "..\Debug\libaprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj" \
+	"$(INTDIR)\internal.obj"
+
+"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "libaprapp - Win32 Release9x"
+
+OUTDIR=.\..\9x\Release
+INTDIR=.\9x\Release
+# Begin Custom Macros
+OutDir=.\..\9x\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\libaprapp-1.lib"
+
+!ELSE 
+
+ALL : "prelibaprapp - Win32 Release9x" "$(OUTDIR)\libaprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"prelibaprapp - Win32 Release9xCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(OUTDIR)\libaprapp-1.lib"
+	- at erase "..\9x\Release\libaprapp-1.idb"
+	- at erase "..\9x\Release\libaprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj" \
+	"$(INTDIR)\internal.obj"
+
+"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug9x"
+
+OUTDIR=.\..\9x\Debug
+INTDIR=.\9x\Debug
+# Begin Custom Macros
+OutDir=.\..\9x\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\libaprapp-1.lib"
+
+!ELSE 
+
+ALL : "prelibaprapp - Win32 Debug9x" "$(OUTDIR)\libaprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"prelibaprapp - Win32 Debug9xCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(OUTDIR)\libaprapp-1.lib"
+	- at erase "..\9x\Debug\libaprapp-1.idb"
+	- at erase "..\9x\Debug\libaprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj" \
+	"$(INTDIR)\internal.obj"
+
+"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "libaprapp - x64 Release"
+
+OUTDIR=.\..\x64\Release
+INTDIR=.\x64\Release
+# Begin Custom Macros
+OutDir=.\..\x64\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\libaprapp-1.lib"
+
+!ELSE 
+
+ALL : "prelibaprapp - x64 Release" "$(OUTDIR)\libaprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"prelibaprapp - x64 ReleaseCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(OUTDIR)\libaprapp-1.lib"
+	- at erase "..\x64\Release\libaprapp-1.idb"
+	- at erase "..\x64\Release\libaprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "NDEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj" \
+	"$(INTDIR)\internal.obj"
+
+"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "libaprapp - x64 Debug"
+
+OUTDIR=.\..\x64\Debug
+INTDIR=.\x64\Debug
+# Begin Custom Macros
+OutDir=.\..\x64\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0" 
+
+ALL : "$(OUTDIR)\libaprapp-1.lib"
+
+!ELSE 
+
+ALL : "prelibaprapp - x64 Debug" "$(OUTDIR)\libaprapp-1.lib"
+
+!ENDIF 
+
+!IF "$(RECURSE)" == "1" 
+CLEAN :"prelibaprapp - x64 DebugCLEAN" 
+!ELSE 
+CLEAN :
+!ENDIF 
+	- at erase "$(INTDIR)\apr_app.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(OUTDIR)\libaprapp-1.lib"
+	- at erase "..\x64\Debug\libaprapp-1.idb"
+	- at erase "..\x64\Debug\libaprapp-1.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../include" /I "../include/arch" /I "../include/arch/win32" /I "../include/arch/unix" /D "_DEBUG" /D "WINNT" /D "WIN32" /D "_WINDOWS" /D "APR_APP" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\libaprapp-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libaprapp.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libaprapp-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_app.obj" \
+	"$(INTDIR)\internal.obj"
+
+"$(OUTDIR)\libaprapp-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("libaprapp.dep")
+!INCLUDE "libaprapp.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "libaprapp.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "libaprapp - Win32 Release" || "$(CFG)" == "libaprapp - Win32 Debug" || "$(CFG)" == "libaprapp - Win32 Release9x" || "$(CFG)" == "libaprapp - Win32 Debug9x" || "$(CFG)" == "libaprapp - x64 Release" || "$(CFG)" == "libaprapp - x64 Debug"
+
+!IF  "$(CFG)" == "libaprapp - Win32 Release"
+
+"prelibaprapp - Win32 Release" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"prelibaprapp - Win32 ReleaseCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug"
+
+"prelibaprapp - Win32 Debug" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"prelibaprapp - Win32 DebugCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "libaprapp - Win32 Release9x"
+
+"prelibaprapp - Win32 Release9x" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"prelibaprapp - Win32 Release9xCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "libaprapp - Win32 Debug9x"
+
+"prelibaprapp - Win32 Debug9x" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"prelibaprapp - Win32 Debug9xCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "libaprapp - x64 Release"
+
+"prelibaprapp - x64 Release" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"prelibaprapp - x64 ReleaseCLEAN" : 
+   cd "."
+   cd "."
+
+!ELSEIF  "$(CFG)" == "libaprapp - x64 Debug"
+
+"prelibaprapp - x64 Debug" : 
+   cd "."
+   NMAKE /nologo /f NUL
+   cd "."
+
+"prelibaprapp - x64 DebugCLEAN" : 
+   cd "."
+   cd "."
+
+!ENDIF 
+
+SOURCE=..\misc\win32\apr_app.c
+
+"$(INTDIR)\apr_app.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\misc\win32\internal.c
+
+"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF 
+

Deleted: vendor/apache/apr/1.5.2/build/lineends.pl
===================================================================
--- vendor/apache/apr/dist/build/lineends.pl	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/lineends.pl	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,150 +0,0 @@
-#!/usr/local/bin/perl
-#
-#  Heuristically converts line endings to the current OS's preferred format
-#  
-#  All existing line endings must be identical (e.g. lf's only, or even
-#  the accedental cr.cr.lf sequence.)  If some lines end lf, and others as
-#  cr.lf, the file is presumed binary.  If the cr character appears anywhere
-#  except prefixed to an lf, the file is presumed binary.  If there is no 
-#  change in the resulting file size, or the file is binary, the conversion 
-#  is discarded.
-#  
-#  Todo: Handle NULL stdin characters gracefully.
-#
-
-use IO::File;
-use File::Find;
-
-# The ignore list is '-' seperated, with this leading hyphen and
-# trailing hyphens in ever concatinated list below.
-$ignore = "-";
-
-# Image formats
-$ignore .= "gif-jpg-jpeg-png-ico-bmp-";
-
-# Archive formats
-$ignore .= "tar-gz-z-zip-jar-war-bz2-tgz-";
-
-# Many document formats
-$ignore .= "eps-psd-pdf-chm-ai-";
-
-# Some encodings
-$ignore .= "ucs2-ucs4-";
-
-# Some binary objects
-$ignore .= "class-so-dll-exe-obj-lib-a-o-lo-slo-sl-dylib-";
-
-# Some build env files 
-$ignore .= "mcp-xdc-ncb-opt-pdb-ilk-exp-res-pch-idb-sbr-";
-
-$preservedate = 1;
-
-$forceending = 0;
-
-$givenpaths = 0;
-
-$notnative = 0;
-
-while (defined @ARGV[0]) {
-    if (@ARGV[0] eq '--touch') {
-        $preservedate = 0;
-    }
-    elsif (@ARGV[0] eq '--nocr') {
-        $notnative = -1;
-    }
-    elsif (@ARGV[0] eq '--cr') {
-        $notnative = 1;
-    }
-    elsif (@ARGV[0] eq '--force') {
-        $forceending = 1;
-    }
-    elsif (@ARGV[0] eq '--FORCE') {
-        $forceending = 2;
-    }
-    elsif (@ARGV[0] =~ m/^-/) {
-        die "What is " . @ARGV[0] . " supposed to mean?\n\n" 
-          . "Syntax:\t$0 [option()s] [path(s)]\n\n" . <<'OUTCH'
-Where:  paths specifies the top level directory to convert (default of '.')
-        options are;
-
-          --cr     keep/add one ^M
-          --nocr   remove ^M's
-          --touch  the datestamp (default: keeps date/attribs)
-          --force  mismatched corrections (unbalanced ^M's)
-          --FORCE  all files regardless of file name!
-
-OUTCH
-    }
-    else {
-        find(\&totxt, @ARGV[0]);
-        print "scanned " . @ARGV[0] . "\n";
-        $givenpaths = 1;
-    }
-    shift @ARGV;
-}
-
-if (!$givenpaths) {
-    find(\&totxt, '.');
-    print "did .\n";
-}
-
-sub totxt {
-        $oname = $_;
-        $tname = '.#' . $_;
-        if (!-f) {
-            return;
-        }
-        @exts = split /\./;
-        if ($forceending < 2) {
-            while ($#exts && ($ext = pop(@exts))) {
-                if ($ignore =~ m|-$ext-|i) {
-                    return;
-                }
-            }
-        }
-        return if ($File::Find::dir =~ m|^(.+/)?.svn(/.+)?$|);
-        @ostat = stat($oname);
-        $srcfl = new IO::File $oname, "r" or die;
-        $dstfl = new IO::File $tname, "w" or die;
-        binmode $srcfl; 
-        if ($notnative) {
-            binmode $dstfl;
-        }
-        undef $t;
-        while (<$srcfl>) { 
-            if (s/(\r*)\n$/\n/) {
-                $n = length $1;
-                if (!defined $t) { 
-                    $t = $n; 
-                }
-                if (!$forceending && (($n != $t) || m/\r/)) {
-                    print "mismatch in " .$oname. ":" .$n. " expected " .$t. "\n";
-                    undef $t;
-                    last;
-                }
-                elsif ($notnative > 0) {
-                    s/\n$/\r\n/; 
-                }
-            }
-            print $dstfl $_; 
-        }
-        if (defined $t && (tell $srcfl == tell $dstfl)) {
-            undef $t;
-        }
-        undef $srcfl;
-        undef $dstfl;
-        if (defined $t) {
-            unlink $oname or die;
-            rename $tname, $oname or die;
-            @anames = ($oname);
-            if ($preservedate) {
-                utime $ostat[9], $ostat[9], @anames;
-            }
-            chmod $ostat[2] & 07777, @anames;
-            chown $ostat[5], $ostat[6], @anames;
-            print "Converted file " . $oname . " to text in " . $File::Find::dir . "\n"; 
-        }
-        else {
-            unlink $tname or die;
-        }
-}

Copied: vendor/apache/apr/1.5.2/build/lineends.pl (from rev 9273, vendor/apache/apr/dist/build/lineends.pl)
===================================================================
--- vendor/apache/apr/1.5.2/build/lineends.pl	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/lineends.pl	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,150 @@
+#!/usr/local/bin/perl
+#
+#  Heuristically converts line endings to the current OS's preferred format
+#  
+#  All existing line endings must be identical (e.g. lf's only, or even
+#  the accidental cr.cr.lf sequence.)  If some lines end lf, and others as
+#  cr.lf, the file is presumed binary.  If the cr character appears anywhere
+#  except prefixed to an lf, the file is presumed binary.  If there is no 
+#  change in the resulting file size, or the file is binary, the conversion 
+#  is discarded.
+#  
+#  Todo: Handle NULL stdin characters gracefully.
+#
+
+use IO::File;
+use File::Find;
+
+# The ignore list is '-' seperated, with this leading hyphen and
+# trailing hyphens in ever concatinated list below.
+$ignore = "-";
+
+# Image formats
+$ignore .= "gif-jpg-jpeg-png-ico-bmp-";
+
+# Archive formats
+$ignore .= "tar-gz-z-zip-jar-war-bz2-tgz-";
+
+# Many document formats
+$ignore .= "eps-psd-pdf-chm-ai-";
+
+# Some encodings
+$ignore .= "ucs2-ucs4-";
+
+# Some binary objects
+$ignore .= "class-so-dll-exe-obj-lib-a-o-lo-slo-sl-dylib-";
+
+# Some build env files 
+$ignore .= "mcp-xdc-ncb-opt-pdb-ilk-exp-res-pch-idb-sbr-";
+
+$preservedate = 1;
+
+$forceending = 0;
+
+$givenpaths = 0;
+
+$notnative = 0;
+
+while (defined @ARGV[0]) {
+    if (@ARGV[0] eq '--touch') {
+        $preservedate = 0;
+    }
+    elsif (@ARGV[0] eq '--nocr') {
+        $notnative = -1;
+    }
+    elsif (@ARGV[0] eq '--cr') {
+        $notnative = 1;
+    }
+    elsif (@ARGV[0] eq '--force') {
+        $forceending = 1;
+    }
+    elsif (@ARGV[0] eq '--FORCE') {
+        $forceending = 2;
+    }
+    elsif (@ARGV[0] =~ m/^-/) {
+        die "What is " . @ARGV[0] . " supposed to mean?\n\n" 
+          . "Syntax:\t$0 [option()s] [path(s)]\n\n" . <<'OUTCH'
+Where:  paths specifies the top level directory to convert (default of '.')
+        options are;
+
+          --cr     keep/add one ^M
+          --nocr   remove ^M's
+          --touch  the datestamp (default: keeps date/attribs)
+          --force  mismatched corrections (unbalanced ^M's)
+          --FORCE  all files regardless of file name!
+
+OUTCH
+    }
+    else {
+        find(\&totxt, @ARGV[0]);
+        print "scanned " . @ARGV[0] . "\n";
+        $givenpaths = 1;
+    }
+    shift @ARGV;
+}
+
+if (!$givenpaths) {
+    find(\&totxt, '.');
+    print "did .\n";
+}
+
+sub totxt {
+        $oname = $_;
+        $tname = '.#' . $_;
+        if (!-f) {
+            return;
+        }
+        @exts = split /\./;
+        if ($forceending < 2) {
+            while ($#exts && ($ext = pop(@exts))) {
+                if ($ignore =~ m|-$ext-|i) {
+                    return;
+                }
+            }
+        }
+        return if ($File::Find::dir =~ m|^(.+/)?.svn(/.+)?$|);
+        @ostat = stat($oname);
+        $srcfl = new IO::File $oname, "r" or die;
+        $dstfl = new IO::File $tname, "w" or die;
+        binmode $srcfl; 
+        if ($notnative) {
+            binmode $dstfl;
+        }
+        undef $t;
+        while (<$srcfl>) { 
+            if (s/(\r*)\n$/\n/) {
+                $n = length $1;
+                if (!defined $t) { 
+                    $t = $n; 
+                }
+                if (!$forceending && (($n != $t) || m/\r/)) {
+                    print "mismatch in " .$oname. ":" .$n. " expected " .$t. "\n";
+                    undef $t;
+                    last;
+                }
+                elsif ($notnative > 0) {
+                    s/\n$/\r\n/; 
+                }
+            }
+            print $dstfl $_; 
+        }
+        if (defined $t && (tell $srcfl == tell $dstfl)) {
+            undef $t;
+        }
+        undef $srcfl;
+        undef $dstfl;
+        if (defined $t) {
+            unlink $oname or die;
+            rename $tname, $oname or die;
+            @anames = ($oname);
+            if ($preservedate) {
+                utime $ostat[9], $ostat[9], @anames;
+            }
+            chmod $ostat[2] & 07777, @anames;
+            chown $ostat[5], $ostat[6], @anames;
+            print "Converted file " . $oname . " to text in " . $File::Find::dir . "\n"; 
+        }
+        else {
+            unlink $tname or die;
+        }
+}

Deleted: vendor/apache/apr/1.5.2/build/mkdir.sh
===================================================================
--- vendor/apache/apr/dist/build/mkdir.sh	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/mkdir.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,43 +0,0 @@
-#!/bin/sh
-## 
-##  mkdir.sh -- make directory hierarchy
-##
-##  Based on `mkinstalldirs' from Noah Friedman <friedman at prep.ai.mit.edu>
-##  as of 1994-03-25, which was placed in the Public Domain.
-##  Cleaned up for Apache's Autoconf-style Interface (APACI)
-##  by Ralf S. Engelschall <rse at apache.org>
-##
-#
-# This script falls under the Apache License.
-# See http://www.apache.org/docs/LICENSE
-
-
-umask 022
-errstatus=0
-for file in ${1+"$@"} ; do 
-    set fnord `echo ":$file" |\
-               sed -e 's/^:\//%/' -e 's/^://' -e 's/\// /g' -e 's/^%/\//'`
-    shift
-    pathcomp=
-    for d in ${1+"$@"}; do
-        pathcomp="$pathcomp$d"
-        case "$pathcomp" in
-            -* ) pathcomp=./$pathcomp ;;
-            ?: ) pathcomp="$pathcomp/" 
-                 continue ;;
-        esac
-        if test ! -d "$pathcomp"; then
-            echo "mkdir $pathcomp" 1>&2
-            thiserrstatus=0
-            mkdir "$pathcomp" || thiserrstatus=$?
-            # ignore errors due to races if a parallel mkdir.sh already
-            # created the dir
-            if test $thiserrstatus != 0 && test ! -d "$pathcomp" ; then
-                errstatus=$thiserrstatus
-            fi
-        fi
-        pathcomp="$pathcomp/"
-    done
-done
-exit $errstatus
-

Copied: vendor/apache/apr/1.5.2/build/mkdir.sh (from rev 9273, vendor/apache/apr/dist/build/mkdir.sh)
===================================================================
--- vendor/apache/apr/1.5.2/build/mkdir.sh	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/mkdir.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,43 @@
+#!/bin/sh
+## 
+##  mkdir.sh -- make directory hierarchy
+##
+##  Based on `mkinstalldirs' from Noah Friedman <friedman at prep.ai.mit.edu>
+##  as of 1994-03-25, which was placed in the Public Domain.
+##  Cleaned up for Apache's Autoconf-style Interface (APACI)
+##  by Ralf S. Engelschall <rse at apache.org>
+##
+#
+# This script falls under the Apache License.
+# See http://www.apache.org/docs/LICENSE
+
+
+umask 022
+errstatus=0
+for file in ${1+"$@"} ; do 
+    set fnord `echo ":$file" |\
+               sed -e 's/^:\//%/' -e 's/^://' -e 's/\// /g' -e 's/^%/\//'`
+    shift
+    pathcomp=
+    for d in ${1+"$@"}; do
+        pathcomp="$pathcomp$d"
+        case "$pathcomp" in
+            -* ) pathcomp=./$pathcomp ;;
+            ?: ) pathcomp="$pathcomp/" 
+                 continue ;;
+        esac
+        if test ! -d "$pathcomp"; then
+            echo "mkdir $pathcomp" 1>&2
+            thiserrstatus=0
+            mkdir "$pathcomp" || thiserrstatus=$?
+            # ignore errors due to races if a parallel mkdir.sh already
+            # created the dir
+            if test $thiserrstatus != 0 && test ! -d "$pathcomp" ; then
+                errstatus=$thiserrstatus
+            fi
+        fi
+        pathcomp="$pathcomp/"
+    done
+done
+exit $errstatus
+

Deleted: vendor/apache/apr/1.5.2/build/nw_export.inc
===================================================================
--- vendor/apache/apr/dist/build/nw_export.inc	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/nw_export.inc	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,50 +0,0 @@
-/* Must include apr.h first so that we can undefine
-    the standard prototypes macros after it messes with
-    them. */
-#include "apr.h"
-
-#undef APR_DECLARE
-#undef APR_DECLARE_NONSTD
-#undef APR_DECLARE_HOOK
-#undef APR_POOL_DECLARE_ACCESSOR
-#undef APR_DECLARE_DATA
-
-/* Preprocess all of the standard APR headers. */
-#include "apr_allocator.h"
-#include "apr_atomic.h"
-#include "apr_dso.h"
-#include "apr_env.h"
-#include "apr_errno.h"
-#include "apr_file_info.h"
-#include "apr_file_io.h"
-#include "apr_fnmatch.h"
-#include "apr_general.h"
-#include "apr_getopt.h"
-#include "apr_global_mutex.h"
-#include "apr_hash.h"
-#include "apr_inherit.h"
-#include "apr_lib.h"
-#include "apr_mmap.h"
-#include "apr_network_io.h"
-#include "apr_poll.h"
-#include "apr_pools.h"
-#include "apr_portable.h"
-#include "apr_proc_mutex.h"
-#include "apr_ring.h"
-#include "apr_random.h"
-#include "apr_shm.h"
-#include "apr_signal.h"
-#include "apr_strings.h"
-#include "apr_support.h"
-#include "apr_tables.h"
-#include "apr_thread_cond.h"
-#include "apr_thread_mutex.h"
-#include "apr_thread_proc.h"
-#include "apr_thread_rwlock.h"
-#include "apr_time.h"
-#include "apr_user.h"
-#include "apr_version.h"
-#include "apr_want.h"
-
-#include "nw_apu_export.inc"
-

Copied: vendor/apache/apr/1.5.2/build/nw_export.inc (from rev 9273, vendor/apache/apr/dist/build/nw_export.inc)
===================================================================
--- vendor/apache/apr/1.5.2/build/nw_export.inc	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/nw_export.inc	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,52 @@
+/* Must include apr.h first so that we can undefine
+    the standard prototypes macros after it messes with
+    them. */
+#include "apr.h"
+
+#undef APR_DECLARE
+#undef APR_DECLARE_NONSTD
+#undef APR_DECLARE_HOOK
+#undef APR_POOL_DECLARE_ACCESSOR
+#undef APR_DECLARE_DATA
+
+/* Preprocess all of the standard APR headers. */
+#include "apr_allocator.h"
+#include "apr_atomic.h"
+#include "apr_dso.h"
+#include "apr_env.h"
+#include "apr_errno.h"
+#include "apr_escape.h"
+#include "apr_file_info.h"
+#include "apr_file_io.h"
+#include "apr_fnmatch.h"
+#include "apr_general.h"
+#include "apr_getopt.h"
+#include "apr_global_mutex.h"
+#include "apr_hash.h"
+#include "apr_inherit.h"
+#include "apr_lib.h"
+#include "apr_mmap.h"
+#include "apr_network_io.h"
+#include "apr_poll.h"
+#include "apr_pools.h"
+#include "apr_portable.h"
+#include "apr_proc_mutex.h"
+#include "apr_ring.h"
+#include "apr_random.h"
+#include "apr_shm.h"
+#include "apr_signal.h"
+#include "apr_skiplist.h"
+#include "apr_strings.h"
+#include "apr_support.h"
+#include "apr_tables.h"
+#include "apr_thread_cond.h"
+#include "apr_thread_mutex.h"
+#include "apr_thread_proc.h"
+#include "apr_thread_rwlock.h"
+#include "apr_time.h"
+#include "apr_user.h"
+#include "apr_version.h"
+#include "apr_want.h"
+
+#include "nw_apu_export.inc"
+

Copied: vendor/apache/apr/1.5.2/build/nw_make_header.awk (from rev 9273, vendor/apache/apr/dist/build/nw_make_header.awk)
===================================================================
--- vendor/apache/apr/1.5.2/build/nw_make_header.awk	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/nw_make_header.awk	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,27 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Based on apr's make_export.awk, which is
+# based on Ryan Bloom's make_export.pl
+#
+
+/^\#define APR_HAS_LDAP / {
+    sub($3, WITH_LDAP ,$0)
+}
+
+{
+    print
+}
+

Deleted: vendor/apache/apr/1.5.2/build/pkg/buildpkg.sh
===================================================================
--- vendor/apache/apr/dist/build/pkg/buildpkg.sh	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/pkg/buildpkg.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,72 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-# buildpkg.sh: This script builds a Solaris PKG from the source tree
-#              provided.
-
-PREFIX=/usr/local
-TEMPDIR=/var/tmp/$USER/apr-root
-rm -rf $TEMPDIR
-
-apr_src_dir=.
-
-while test $# -gt 0 
-do
-  # Normalize
-  case "$1" in
-  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) optarg= ;;
-  esac
-
-  case "$1" in
-  --with-apr=*)
-  apr_src_dir=$optarg
-  ;;
-  esac
-
-  shift
-done
-
-if [ -f "$apr_src_dir/configure.in" ]; then
-  cd $apr_src_dir
-else
-  echo "The apr source could not be found within $apr_src_dir"
-  echo "Usage: buildpkg [--with-apr=dir]"
-  exit 1
-fi
-
-./configure --prefix=$PREFIX
-make
-make install DESTDIR=$TEMPDIR
-rm $TEMPDIR$PREFIX/lib/apr.exp
-. build/pkg/pkginfo
-cp build/pkg/pkginfo $TEMPDIR$PREFIX
-
-current=`pwd`
-cd $TEMPDIR$PREFIX
-echo "i pkginfo=./pkginfo" > prototype
-find . -print | grep -v ./prototype | grep -v ./pkginfo | pkgproto | awk '{print $1" "$2" "$3" "$4" root bin"}' >> prototype
-mkdir $TEMPDIR/pkg
-pkgmk -r $TEMPDIR$PREFIX -d $TEMPDIR/pkg
-
-cd $current
-pkgtrans -s $TEMPDIR/pkg $current/$NAME-$VERSION-$ARCH-local
-gzip $current/$NAME-$VERSION-$ARCH-local
-
-rm -rf $TEMPDIR
-

Copied: vendor/apache/apr/1.5.2/build/pkg/buildpkg.sh (from rev 9273, vendor/apache/apr/dist/build/pkg/buildpkg.sh)
===================================================================
--- vendor/apache/apr/1.5.2/build/pkg/buildpkg.sh	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/pkg/buildpkg.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,72 @@
+#!/bin/sh
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+# buildpkg.sh: This script builds a Solaris PKG from the source tree
+#              provided.
+
+PREFIX=/usr/local
+TEMPDIR=/var/tmp/$USER/apr-root
+rm -rf $TEMPDIR
+
+apr_src_dir=.
+
+while test $# -gt 0 
+do
+  # Normalize
+  case "$1" in
+  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  case "$1" in
+  --with-apr=*)
+  apr_src_dir=$optarg
+  ;;
+  esac
+
+  shift
+done
+
+if [ -f "$apr_src_dir/configure.in" ]; then
+  cd $apr_src_dir
+else
+  echo "The apr source could not be found within $apr_src_dir"
+  echo "Usage: buildpkg [--with-apr=dir]"
+  exit 1
+fi
+
+./configure --prefix=$PREFIX
+make
+make install DESTDIR=$TEMPDIR
+rm $TEMPDIR$PREFIX/lib/apr.exp
+. build/pkg/pkginfo
+cp build/pkg/pkginfo $TEMPDIR$PREFIX
+
+current=`pwd`
+cd $TEMPDIR$PREFIX
+echo "i pkginfo=./pkginfo" > prototype
+find . -print | grep -v ./prototype | grep -v ./pkginfo | pkgproto | awk '{print $1" "$2" "$3" "$4" root bin"}' >> prototype
+mkdir $TEMPDIR/pkg
+pkgmk -r $TEMPDIR$PREFIX -d $TEMPDIR/pkg
+
+cd $current
+pkgtrans -s $TEMPDIR/pkg $current/$NAME-$VERSION-$ARCH-local
+gzip $current/$NAME-$VERSION-$ARCH-local
+
+rm -rf $TEMPDIR
+

Deleted: vendor/apache/apr/1.5.2/build/rpm/apr.spec.in
===================================================================
--- vendor/apache/apr/dist/build/rpm/apr.spec.in	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/rpm/apr.spec.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,100 +0,0 @@
-
-%define aprver 1
-
-Summary: Apache Portable Runtime library
-Name: apr
-Version: APR_VERSION
-Release: APR_RELEASE
-License: Apache Software License
-Group: System Environment/Libraries
-URL: http://apr.apache.org/
-Source0: http://www.apache.org/dist/apr/%{name}-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
-BuildRequires: autoconf, libtool, doxygen, python
-
-%description
-The mission of the Apache Portable Runtime (APR) is to provide a
-free library of C data structures and routines, forming a system
-portability layer to as many operating systems as possible,
-including Unices, MS Win32, BeOS and OS/2.
-
-%package devel
-Group: Development/Libraries
-Summary: APR library development kit
-Requires: apr = %{version}
-
-%description devel
-This package provides the support files which can be used to 
-build applications using the APR library.  The mission of the
-Apache Portable Runtime (APR) is to provide a free library of 
-C data structures and routines.
-
-%prep
-%setup -q
-
-%build
-# regenerate configure script etc.
-./buildconf
-%configure \
-        --prefix=/usr \
-        --includedir=%{_includedir}/apr-%{aprver} \
-        --with-installbuilddir=%{_libdir}/apr/build-%{aprver} \
-        --with-devrandom=/dev/urandom \
-        CC=gcc CXX=g++
-make %{?_smp_mflags} && make dox
-
-%check
-# Run non-interactive tests
-pushd test
-make %{?_smp_mflags} all CFLAGS=-fno-strict-aliasing
-make check || exit 1
-popd
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make install DESTDIR=$RPM_BUILD_ROOT
-
-# Move docs to more convenient location
-mv docs/dox/html html
-
-# Unpackaged files:
-rm -f $RPM_BUILD_ROOT%{_libdir}/apr.exp
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root,-)
-%doc CHANGES LICENSE NOTICE
-%{_libdir}/libapr-%{aprver}.so.*
-
-%files devel
-%defattr(-,root,root,-)
-%doc docs/APRDesign.html docs/canonical_filenames.html
-%doc docs/incomplete_types docs/non_apr_programs
-%doc --parents html
-%{_bindir}/apr*config
-%{_libdir}/libapr-%{aprver}.*a
-%{_libdir}/libapr-%{aprver}.so
-%dir %{_libdir}/apr
-%dir %{_libdir}/apr/build-%{aprver}
-%{_libdir}/apr/build-%{aprver}/*
-%{_libdir}/pkgconfig/apr-%{aprver}.pc
-%dir %{_includedir}/apr-%{aprver}
-%{_includedir}/apr-%{aprver}/*.h
-
-%changelog
-* Sat Aug 30 2008 Graham Leggett <minfrin at sharp.fm> 1.3.3
-- update to depend on the bzip2 binary
-- build depends on python
-
-* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
-- update to support v1.0.0 of APR
-
-* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
-- derived from Fedora Core apr.spec
-

Copied: vendor/apache/apr/1.5.2/build/rpm/apr.spec.in (from rev 9273, vendor/apache/apr/dist/build/rpm/apr.spec.in)
===================================================================
--- vendor/apache/apr/1.5.2/build/rpm/apr.spec.in	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/rpm/apr.spec.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,100 @@
+
+%define aprver 1
+
+Summary: Apache Portable Runtime library
+Name: apr
+Version: APR_VERSION
+Release: APR_RELEASE
+License: Apache Software License
+Group: System Environment/Libraries
+URL: http://apr.apache.org/
+Source0: http://www.apache.org/dist/apr/%{name}-%{version}.tar.bz2
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+BuildRequires: autoconf, libtool, doxygen, python
+
+%description
+The mission of the Apache Portable Runtime (APR) is to provide a
+free library of C data structures and routines, forming a system
+portability layer to as many operating systems as possible,
+including Unices, MS Win32, BeOS and OS/2.
+
+%package devel
+Group: Development/Libraries
+Summary: APR library development kit
+Requires: apr = %{version}
+
+%description devel
+This package provides the support files which can be used to 
+build applications using the APR library.  The mission of the
+Apache Portable Runtime (APR) is to provide a free library of 
+C data structures and routines.
+
+%prep
+%setup -q
+
+%build
+# regenerate configure script etc.
+./buildconf
+%configure \
+        --prefix=/usr \
+        --includedir=%{_includedir}/apr-%{aprver} \
+        --with-installbuilddir=%{_libdir}/apr/build-%{aprver} \
+        --with-devrandom=/dev/urandom \
+        CC=gcc CXX=g++
+make %{?_smp_mflags} && make dox
+
+%check
+# Run non-interactive tests
+pushd test
+make %{?_smp_mflags} all CFLAGS=-fno-strict-aliasing
+make check || exit 1
+popd
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Move docs to more convenient location
+mv docs/dox/html html
+
+# Unpackaged files:
+rm -f $RPM_BUILD_ROOT%{_libdir}/apr.exp
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc CHANGES LICENSE NOTICE
+%{_libdir}/libapr-%{aprver}.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%doc docs/APRDesign.html docs/canonical_filenames.html
+%doc docs/incomplete_types docs/non_apr_programs
+%doc html
+%{_bindir}/apr*config
+%{_libdir}/libapr-%{aprver}.*a
+%{_libdir}/libapr-%{aprver}.so
+%dir %{_libdir}/apr
+%dir %{_libdir}/apr/build-%{aprver}
+%{_libdir}/apr/build-%{aprver}/*
+%{_libdir}/pkgconfig/apr-%{aprver}.pc
+%dir %{_includedir}/apr-%{aprver}
+%{_includedir}/apr-%{aprver}/*.h
+
+%changelog
+* Sat Aug 30 2008 Graham Leggett <minfrin at sharp.fm> 1.3.3
+- update to depend on the bzip2 binary
+- build depends on python
+
+* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
+- update to support v1.0.0 of APR
+
+* Tue Jun 22 2004 Graham Leggett <minfrin at sharp.fm> 1.0.0-1
+- derived from Fedora Core apr.spec
+

Deleted: vendor/apache/apr/1.5.2/build/run-gcov.sh
===================================================================
--- vendor/apache/apr/dist/build/run-gcov.sh	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build/run-gcov.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,130 +0,0 @@
-#!/bin/sh
-
-if [ ! -d coverage ]; then
-    mkdir coverage
-fi
-cd coverage
-
-# It would be really nice to find a better way to do this than copying the 
-# HTML into this script.  But, I am being lazy right now.
-cat > index.html << EOF
-<!-- This is a generated file, do not edit -->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-    <meta name="author" content="APR Developers" /><meta name="email" content="dev at apr.apache.org" />
-    <title>Test Coverage</title>
-  </head>
-  <body bgcolor="#ffffff" text="#000000" link="#525D76">
-<p><a href="/"><img src="./images/apr_logo_wide.png" alt="The Apache Portable Runtime Project" border="0"/></a></p>
- <table border="0" width="100%" cellspacing="4">
-  <tr>
-   <!-- LEFT SIDE NAVIGATION -->
-   <td valign="top" nowrap="nowrap">
-    <a href="http://apachecon.com/"
-    ><img src="http://www.apache.org/images/ac2003-150.gif" height="86"
-    width="150" border="0" alt="ApacheCon" /></a>
-          <p><b>Get Involved</b></p>
-   <menu compact="compact">
-         <li><a href="/anoncvs.txt">CVS</a></li>
-         <li><a href="/mailing-lists.html">Mailing Lists</a></li>
-         <li><a href="http://cvs.apache.org/snapshots/apr/">Snapshots</a></li>
-         <li><a href="/compiling_win32.html">Build on Win32</a></li>
-         <li><a href="/compiling_unix.html">Build on Unix</a></li>
-       </menu>
-     <p><b>Download!</b></p>
-   <menu compact="compact">
-         <li><a href="http://www.apache.org/dyn/closer.cgi/apr/">from a mirror</a></li>
-       </menu>
-     <p><b>Docs</b></p>
-   <menu compact="compact">
-         <li><a href="/docs/apr/">APR</a></li>
-         <li><a href="/docs/apr-util/">APR-util</a></li>
-         <li>APR-iconv</li>
-       </menu>
-     <p><b>Guidelines</b></p>
-   <menu compact="compact">
-         <li><a href="/guidelines.html">Project Guidelines</a></li>
-         <li><a href="/patches.html">Contributing</a></li>
-         <li><a href="/versioning.html">Version Numbers</a></li>
-      </menu>
-    <p><b><a href="/info/">Miscellaneous</a></b></p>
-  <menu compact="compact">
-        <li><a href="http://www.apache.org/LICENSE.txt">License</a></li>
-        <li><a href="/projects.html">Projects using APR</a></li>
-      </menu>
-  </td>
-  <!-- RIGHT SIDE INFORMATION -->
-  <td align="left" valign="top">
-  <table border="0" cellspacing="0" cellpadding="2" width="100%">
-  <tr><td bgcolor="#525D76">
-   <font color="#ffffff" face="arial,helvetica,sanserif">
-    <strong>APR Test Coverage</strong>
-   </font>
-  </td></tr>
-  <tr><td>
-   <blockquote>
-<p>This should give us some idea of how well our tests actually stress our
-code.  To generate this data, do the following:</p>
-<menu compact="compact">
-    <li>./buildconf</li>
-    <li>CFLAGS="-fprofile-arcs -ftest-coverage ./configure</li>
-    <li>make</li>
-    <li>cd test</li>
-    <li>make</li>
-    <li>./testall</li>
-    <li>cd ..</li>
-    <li>make gcov</li>
-</menu>
-<p>Note that this will only generate test coverage data for the testall script,
-but all tests should be moving to the unified framework, so this is correct.</p>
-   </blockquote>
-
-   <table border="0" width="100%" cellspacing="0">
-EOF
-
-for i in `find .. -name "*.bb" -maxdepth 1 | sort`; do
-    percent=`gcov $i -o .. | grep "%" | awk -F'%' {'print $1'}`
-    name=`echo $i | awk -F'/' {'print $2'}`
-    basename=`echo $name | awk -F'.' {'print $1'}` 
-
-    if [ "x$percent" = "x" ]; then
-        echo "<tr>" >> index.html
-        echo "<td bgcolor=#ffffff> Error generating data for $basename<br>" >> index.html
-        continue;	
-    fi
-    intpercent=`echo "$percent/1" | bc`
-    if [ $intpercent -lt 33 ]; then
-        color="#ffaaaa"
-    else if [ $intpercent -lt 66 ]; then
-        color="#ffff77"
-        else
-            color="#aaffaa"
-        fi
-    fi
-
-    echo "<tr>" >> index.html
-    echo "<td bgcolor=$color><a href=\"$basename.c.gcov\">$basename</a><br>" >> index.html
-    echo "<td bgcolor=$color>$percent% tested"  >> index.html
-done
-
-echo "</table><p>Last generated `date`</p>" >> index.html
-
-cat >> index.html << EOF
-</td></tr>
-</table>
-   <!-- FOOTER -->
-   <tr><td colspan="2"><hr noshade="noshade" size="1"/></td></tr>
-   <tr><td colspan="2" align="center">
-        <font size="-1">
-         <em>Copyright © 1999-2004, The Apache Software Foundation</em>
-        </font>
-       </td>
-   </tr>
-  </table>
- </body>
-</html>
-
-EOF

Copied: vendor/apache/apr/1.5.2/build/run-gcov.sh (from rev 9273, vendor/apache/apr/dist/build/run-gcov.sh)
===================================================================
--- vendor/apache/apr/1.5.2/build/run-gcov.sh	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build/run-gcov.sh	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,130 @@
+#!/bin/sh
+
+if [ ! -d coverage ]; then
+    mkdir coverage
+fi
+cd coverage
+
+# It would be really nice to find a better way to do this than copying the 
+# HTML into this script.  But, I am being lazy right now.
+cat > index.html << EOF
+<!-- This is a generated file, do not edit -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <meta name="author" content="APR Developers" /><meta name="email" content="dev at apr.apache.org" />
+    <title>Test Coverage</title>
+  </head>
+  <body bgcolor="#ffffff" text="#000000" link="#525D76">
+<p><a href="/"><img src="./images/apr_logo_wide.png" alt="The Apache Portable Runtime Project" border="0"/></a></p>
+ <table border="0" width="100%" cellspacing="4">
+  <tr>
+   <!-- LEFT SIDE NAVIGATION -->
+   <td valign="top" nowrap="nowrap">
+    <a href="http://apachecon.com/"
+    ><img src="http://www.apache.org/images/ac2003-150.gif" height="86"
+    width="150" border="0" alt="ApacheCon" /></a>
+          <p><b>Get Involved</b></p>
+   <menu compact="compact">
+         <li><a href="/anoncvs.txt">CVS</a></li>
+         <li><a href="/mailing-lists.html">Mailing Lists</a></li>
+         <li><a href="http://cvs.apache.org/snapshots/apr/">Snapshots</a></li>
+         <li><a href="/compiling_win32.html">Build on Win32</a></li>
+         <li><a href="/compiling_unix.html">Build on Unix</a></li>
+       </menu>
+     <p><b>Download!</b></p>
+   <menu compact="compact">
+         <li><a href="http://www.apache.org/dyn/closer.cgi/apr/">from a mirror</a></li>
+       </menu>
+     <p><b>Docs</b></p>
+   <menu compact="compact">
+         <li><a href="/docs/apr/">APR</a></li>
+         <li><a href="/docs/apr-util/">APR-util</a></li>
+         <li>APR-iconv</li>
+       </menu>
+     <p><b>Guidelines</b></p>
+   <menu compact="compact">
+         <li><a href="/guidelines.html">Project Guidelines</a></li>
+         <li><a href="/patches.html">Contributing</a></li>
+         <li><a href="/versioning.html">Version Numbers</a></li>
+      </menu>
+    <p><b><a href="/info/">Miscellaneous</a></b></p>
+  <menu compact="compact">
+        <li><a href="http://www.apache.org/LICENSE.txt">License</a></li>
+        <li><a href="/projects.html">Projects using APR</a></li>
+      </menu>
+  </td>
+  <!-- RIGHT SIDE INFORMATION -->
+  <td align="left" valign="top">
+  <table border="0" cellspacing="0" cellpadding="2" width="100%">
+  <tr><td bgcolor="#525D76">
+   <font color="#ffffff" face="arial,helvetica,sanserif">
+    <strong>APR Test Coverage</strong>
+   </font>
+  </td></tr>
+  <tr><td>
+   <blockquote>
+<p>This should give us some idea of how well our tests actually stress our
+code.  To generate this data, do the following:</p>
+<menu compact="compact">
+    <li>./buildconf</li>
+    <li>CFLAGS="-fprofile-arcs -ftest-coverage ./configure</li>
+    <li>make</li>
+    <li>cd test</li>
+    <li>make</li>
+    <li>./testall</li>
+    <li>cd ..</li>
+    <li>make gcov</li>
+</menu>
+<p>Note that this will only generate test coverage data for the testall script,
+but all tests should be moving to the unified framework, so this is correct.</p>
+   </blockquote>
+
+   <table border="0" width="100%" cellspacing="0">
+EOF
+
+for i in `find .. -name "*.bb" -maxdepth 1 | sort`; do
+    percent=`gcov $i -o .. | grep "%" | awk -F'%' {'print $1'}`
+    name=`echo $i | awk -F'/' {'print $2'}`
+    basename=`echo $name | awk -F'.' {'print $1'}` 
+
+    if [ "x$percent" = "x" ]; then
+        echo "<tr>" >> index.html
+        echo "<td bgcolor=#ffffff> Error generating data for $basename<br>" >> index.html
+        continue;	
+    fi
+    intpercent=`echo "$percent/1" | bc`
+    if [ $intpercent -lt 33 ]; then
+        color="#ffaaaa"
+    else if [ $intpercent -lt 66 ]; then
+        color="#ffff77"
+        else
+            color="#aaffaa"
+        fi
+    fi
+
+    echo "<tr>" >> index.html
+    echo "<td bgcolor=$color><a href=\"$basename.c.gcov\">$basename</a><br>" >> index.html
+    echo "<td bgcolor=$color>$percent% tested"  >> index.html
+done
+
+echo "</table><p>Last generated `date`</p>" >> index.html
+
+cat >> index.html << EOF
+</td></tr>
+</table>
+   <!-- FOOTER -->
+   <tr><td colspan="2"><hr noshade="noshade" size="1"/></td></tr>
+   <tr><td colspan="2" align="center">
+        <font size="-1">
+         <em>Copyright © 1999-2004, The Apache Software Foundation</em>
+        </font>
+       </td>
+   </tr>
+  </table>
+ </body>
+</html>
+
+EOF

Deleted: vendor/apache/apr/1.5.2/build-outputs.mk
===================================================================
--- vendor/apache/apr/dist/build-outputs.mk	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build-outputs.mk	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,319 +0,0 @@
-# DO NOT EDIT. AUTOMATICALLY GENERATED.
-
-passwd/apr_getpass.lo: passwd/apr_getpass.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-strings/apr_cpystrn.lo: strings/apr_cpystrn.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-strings/apr_fnmatch.lo: strings/apr_fnmatch.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_fnmatch.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-strings/apr_snprintf.lo: strings/apr_snprintf.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-strings/apr_strings.lo: strings/apr_strings.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-strings/apr_strnatcmp.lo: strings/apr_strnatcmp.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-strings/apr_strtok.lo: strings/apr_strtok.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-tables/apr_hash.lo: tables/apr_hash.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_hash.h include/apr_pools.h include/apr_thread_mutex.h include/apr_time.h include/apr_want.h
-tables/apr_tables.lo: tables/apr_tables.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_want.h
-
-OBJECTS_all = passwd/apr_getpass.lo strings/apr_cpystrn.lo strings/apr_fnmatch.lo strings/apr_snprintf.lo strings/apr_strings.lo strings/apr_strnatcmp.lo strings/apr_strtok.lo tables/apr_hash.lo tables/apr_tables.lo
-
-dso/unix/dso.lo: dso/unix/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_dso_unix = dso/unix/dso.lo
-
-file_io/unix/buffer.lo: file_io/unix/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
-file_io/unix/copy.lo: file_io/unix/copy.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/dir.lo: file_io/unix/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/fileacc.lo: file_io/unix/fileacc.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-file_io/unix/filedup.lo: file_io/unix/filedup.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/filepath.lo: file_io/unix/filepath.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/filepath_util.lo: file_io/unix/filepath_util.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_want.h
-file_io/unix/filestat.lo: file_io/unix/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/flock.lo: file_io/unix/flock.c .make.dirs 
-file_io/unix/fullrw.lo: file_io/unix/fullrw.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/mktemp.lo: file_io/unix/mktemp.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/open.lo: file_io/unix/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/pipe.lo: file_io/unix/pipe.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/readwrite.lo: file_io/unix/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/unix/seek.lo: file_io/unix/seek.c .make.dirs 
-file_io/unix/tempdir.lo: file_io/unix/tempdir.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_file_io_unix = file_io/unix/buffer.lo file_io/unix/copy.lo file_io/unix/dir.lo file_io/unix/fileacc.lo file_io/unix/filedup.lo file_io/unix/filepath.lo file_io/unix/filepath_util.lo file_io/unix/filestat.lo file_io/unix/flock.lo file_io/unix/fullrw.lo file_io/unix/mktemp.lo file_io/unix/open.lo file_io/unix/pipe.lo file_io/unix/readwrite.lo file_io/unix/seek.lo file_io/unix/tempdir.lo
-
-locks/unix/global_mutex.lo: locks/unix/global_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/unix/proc_mutex.lo: locks/unix/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_hash.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-locks/unix/thread_cond.lo: locks/unix/thread_cond.c .make.dirs 
-locks/unix/thread_mutex.lo: locks/unix/thread_mutex.c .make.dirs include/apr_want.h
-locks/unix/thread_rwlock.lo: locks/unix/thread_rwlock.c .make.dirs 
-
-OBJECTS_locks_unix = locks/unix/global_mutex.lo locks/unix/proc_mutex.lo locks/unix/thread_cond.lo locks/unix/thread_mutex.lo locks/unix/thread_rwlock.lo
-
-memory/unix/apr_pools.lo: memory/unix/apr_pools.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_dso.h include/apr_env.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_memory_unix = memory/unix/apr_pools.lo
-
-misc/unix/charset.lo: misc/unix/charset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-misc/unix/env.lo: misc/unix/env.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-misc/unix/errorcodes.lo: misc/unix/errorcodes.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-misc/unix/getopt.lo: misc/unix/getopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-misc/unix/otherchild.lo: misc/unix/otherchild.c .make.dirs 
-misc/unix/rand.lo: misc/unix/rand.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
-misc/unix/start.lo: misc/unix/start.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_thread_mutex.h include/apr_want.h
-misc/unix/version.lo: misc/unix/version.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_version.h include/apr_want.h
-
-OBJECTS_misc_unix = misc/unix/charset.lo misc/unix/env.lo misc/unix/errorcodes.lo misc/unix/getopt.lo misc/unix/otherchild.lo misc/unix/rand.lo misc/unix/start.lo misc/unix/version.lo
-
-mmap/unix/common.lo: mmap/unix/common.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_mmap.h include/apr_pools.h include/apr_ring.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-mmap/unix/mmap.lo: mmap/unix/mmap.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_mmap.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_ring.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_mmap_unix = mmap/unix/common.lo mmap/unix/mmap.lo
-
-network_io/unix/inet_ntop.lo: network_io/unix/inet_ntop.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-network_io/unix/inet_pton.lo: network_io/unix/inet_pton.c .make.dirs 
-network_io/unix/multicast.lo: network_io/unix/multicast.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/unix/sendrecv.lo: network_io/unix/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/unix/sockaddr.lo: network_io/unix/sockaddr.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-network_io/unix/socket_util.lo: network_io/unix/socket_util.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/unix/sockets.lo: network_io/unix/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/unix/sockopt.lo: network_io/unix/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-
-OBJECTS_network_io_unix = network_io/unix/inet_ntop.lo network_io/unix/inet_pton.lo network_io/unix/multicast.lo network_io/unix/sendrecv.lo network_io/unix/sockaddr.lo network_io/unix/socket_util.lo network_io/unix/sockets.lo network_io/unix/sockopt.lo
-
-poll/unix/epoll.lo: poll/unix/epoll.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-poll/unix/kqueue.lo: poll/unix/kqueue.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-poll/unix/poll.lo: poll/unix/poll.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-poll/unix/pollcb.lo: poll/unix/pollcb.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-poll/unix/pollset.lo: poll/unix/pollset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-poll/unix/port.lo: poll/unix/port.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-poll/unix/select.lo: poll/unix/select.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_poll_unix = poll/unix/epoll.lo poll/unix/kqueue.lo poll/unix/poll.lo poll/unix/pollcb.lo poll/unix/pollset.lo poll/unix/port.lo poll/unix/select.lo
-
-random/unix/apr_random.lo: random/unix/apr_random.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_random.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-random/unix/sha2.lo: random/unix/sha2.c .make.dirs 
-random/unix/sha2_glue.lo: random/unix/sha2_glue.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_random.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_random_unix = random/unix/apr_random.lo random/unix/sha2.lo random/unix/sha2_glue.lo
-
-shmem/unix/shm.lo: shmem/unix/shm.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_user.h include/apr_want.h
-
-OBJECTS_shmem_unix = shmem/unix/shm.lo
-
-support/unix/waitio.lo: support/unix/waitio.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_support_unix = support/unix/waitio.lo
-
-threadproc/unix/proc.lo: threadproc/unix/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_random.h include/apr_shm.h include/apr_signal.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/unix/procsup.lo: threadproc/unix/procsup.c .make.dirs 
-threadproc/unix/signals.lo: threadproc/unix/signals.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-threadproc/unix/thread.lo: threadproc/unix/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/unix/threadpriv.lo: threadproc/unix/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_threadproc_unix = threadproc/unix/proc.lo threadproc/unix/procsup.lo threadproc/unix/signals.lo threadproc/unix/thread.lo threadproc/unix/threadpriv.lo
-
-time/unix/time.lo: time/unix/time.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-time/unix/timestr.lo: time/unix/timestr.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_time_unix = time/unix/time.lo time/unix/timestr.lo
-
-user/unix/groupinfo.lo: user/unix/groupinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-user/unix/userinfo.lo: user/unix/userinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_user_unix = user/unix/groupinfo.lo user/unix/userinfo.lo
-
-atomic/unix/builtins.lo: atomic/unix/builtins.c .make.dirs 
-atomic/unix/ia32.lo: atomic/unix/ia32.c .make.dirs 
-atomic/unix/mutex.lo: atomic/unix/mutex.c .make.dirs 
-atomic/unix/ppc.lo: atomic/unix/ppc.c .make.dirs 
-atomic/unix/s390.lo: atomic/unix/s390.c .make.dirs 
-atomic/unix/solaris.lo: atomic/unix/solaris.c .make.dirs 
-
-OBJECTS_atomic_unix = atomic/unix/builtins.lo atomic/unix/ia32.lo atomic/unix/mutex.lo atomic/unix/ppc.lo atomic/unix/s390.lo atomic/unix/solaris.lo
-
-OBJECTS_unix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_unix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
-
-dso/aix/dso.lo: dso/aix/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_dso_aix = dso/aix/dso.lo
-
-OBJECTS_aix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_aix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
-
-dso/beos/dso.lo: dso/beos/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_dso_beos = dso/beos/dso.lo
-
-locks/beos/proc_mutex.lo: locks/beos/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/beos/thread_cond.lo: locks/beos/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/beos/thread_mutex.lo: locks/beos/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/beos/thread_rwlock.lo: locks/beos/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_locks_beos = locks/beos/proc_mutex.lo locks/beos/thread_cond.lo locks/beos/thread_mutex.lo locks/beos/thread_rwlock.lo
-
-network_io/beos/sendrecv.lo: network_io/beos/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_time.h include/apr_want.h
-network_io/beos/socketcommon.lo: network_io/beos/socketcommon.c .make.dirs 
-
-OBJECTS_network_io_beos = network_io/beos/sendrecv.lo network_io/beos/socketcommon.lo
-
-shmem/beos/shm.lo: shmem/beos/shm.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_shmem_beos = shmem/beos/shm.lo
-
-threadproc/beos/apr_proc_stub.lo: threadproc/beos/apr_proc_stub.c .make.dirs 
-threadproc/beos/proc.lo: threadproc/beos/proc.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-threadproc/beos/thread.lo: threadproc/beos/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/beos/threadpriv.lo: threadproc/beos/threadpriv.c .make.dirs 
-threadproc/beos/threadproc_common.lo: threadproc/beos/threadproc_common.c .make.dirs 
-
-OBJECTS_threadproc_beos = threadproc/beos/apr_proc_stub.lo threadproc/beos/proc.lo threadproc/beos/thread.lo threadproc/beos/threadpriv.lo threadproc/beos/threadproc_common.lo
-
-OBJECTS_beos = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_beos) $(OBJECTS_file_io_unix) $(OBJECTS_locks_beos) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_beos) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_beos) $(OBJECTS_support_unix) $(OBJECTS_threadproc_beos) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
-
-dso/os2/dso.lo: dso/os2/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_dso_os2 = dso/os2/dso.lo
-
-file_io/os2/buffer.lo: file_io/os2/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
-file_io/os2/copy.lo: file_io/os2/copy.c .make.dirs 
-file_io/os2/dir.lo: file_io/os2/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/dir_make_recurse.lo: file_io/os2/dir_make_recurse.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/fileacc.lo: file_io/os2/fileacc.c .make.dirs 
-file_io/os2/filedup.lo: file_io/os2/filedup.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/filepath.lo: file_io/os2/filepath.c .make.dirs 
-file_io/os2/filepath_util.lo: file_io/os2/filepath_util.c .make.dirs 
-file_io/os2/filestat.lo: file_io/os2/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/filesys.lo: file_io/os2/filesys.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-file_io/os2/flock.lo: file_io/os2/flock.c .make.dirs 
-file_io/os2/fullrw.lo: file_io/os2/fullrw.c .make.dirs 
-file_io/os2/maperrorcode.lo: file_io/os2/maperrorcode.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/mktemp.lo: file_io/os2/mktemp.c .make.dirs 
-file_io/os2/open.lo: file_io/os2/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/pipe.lo: file_io/os2/pipe.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/readwrite.lo: file_io/os2/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/seek.lo: file_io/os2/seek.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/os2/tempdir.lo: file_io/os2/tempdir.c .make.dirs 
-
-OBJECTS_file_io_os2 = file_io/os2/buffer.lo file_io/os2/copy.lo file_io/os2/dir.lo file_io/os2/dir_make_recurse.lo file_io/os2/fileacc.lo file_io/os2/filedup.lo file_io/os2/filepath.lo file_io/os2/filepath_util.lo file_io/os2/filestat.lo file_io/os2/filesys.lo file_io/os2/flock.lo file_io/os2/fullrw.lo file_io/os2/maperrorcode.lo file_io/os2/mktemp.lo file_io/os2/open.lo file_io/os2/pipe.lo file_io/os2/readwrite.lo file_io/os2/seek.lo file_io/os2/tempdir.lo
-
-locks/os2/proc_mutex.lo: locks/os2/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/os2/thread_cond.lo: locks/os2/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/os2/thread_mutex.lo: locks/os2/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/os2/thread_rwlock.lo: locks/os2/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_locks_os2 = locks/os2/proc_mutex.lo locks/os2/thread_cond.lo locks/os2/thread_mutex.lo locks/os2/thread_rwlock.lo
-
-network_io/os2/inet_ntop.lo: network_io/os2/inet_ntop.c .make.dirs 
-network_io/os2/inet_pton.lo: network_io/os2/inet_pton.c .make.dirs 
-network_io/os2/os2calls.lo: network_io/os2/os2calls.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/os2/sendrecv.lo: network_io/os2/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/os2/sendrecv_udp.lo: network_io/os2/sendrecv_udp.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/os2/sockaddr.lo: network_io/os2/sockaddr.c .make.dirs 
-network_io/os2/socket_util.lo: network_io/os2/socket_util.c .make.dirs 
-network_io/os2/sockets.lo: network_io/os2/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/os2/sockopt.lo: network_io/os2/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_network_io_os2 = network_io/os2/inet_ntop.lo network_io/os2/inet_pton.lo network_io/os2/os2calls.lo network_io/os2/sendrecv.lo network_io/os2/sendrecv_udp.lo network_io/os2/sockaddr.lo network_io/os2/socket_util.lo network_io/os2/sockets.lo network_io/os2/sockopt.lo
-
-poll/os2/poll.lo: poll/os2/poll.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-poll/os2/pollset.lo: poll/os2/pollset.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_poll_os2 = poll/os2/poll.lo poll/os2/pollset.lo
-
-shmem/os2/shm.lo: shmem/os2/shm.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_shmem_os2 = shmem/os2/shm.lo
-
-threadproc/os2/proc.lo: threadproc/os2/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_signal.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/os2/signals.lo: threadproc/os2/signals.c .make.dirs 
-threadproc/os2/thread.lo: threadproc/os2/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/os2/threadpriv.lo: threadproc/os2/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_threadproc_os2 = threadproc/os2/proc.lo threadproc/os2/signals.lo threadproc/os2/thread.lo threadproc/os2/threadpriv.lo
-
-OBJECTS_os2 = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_os2) $(OBJECTS_file_io_os2) $(OBJECTS_locks_os2) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_os2) $(OBJECTS_poll_os2) $(OBJECTS_random_unix) $(OBJECTS_shmem_os2) $(OBJECTS_support_unix) $(OBJECTS_threadproc_os2) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
-
-dso/os390/dso.lo: dso/os390/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_dso_os390 = dso/os390/dso.lo
-
-atomic/os390/atomic.lo: atomic/os390/atomic.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
-
-OBJECTS_atomic_os390 = atomic/os390/atomic.lo
-
-OBJECTS_os390 = $(OBJECTS_all) $(OBJECTS_atomic_os390) $(OBJECTS_dso_os390) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
-
-dso/win32/dso.lo: dso/win32/dso.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-
-OBJECTS_dso_win32 = dso/win32/dso.lo
-
-file_io/win32/buffer.lo: file_io/win32/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
-file_io/win32/dir.lo: file_io/win32/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/win32/filedup.lo: file_io/win32/filedup.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/win32/filepath.lo: file_io/win32/filepath.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-file_io/win32/filestat.lo: file_io/win32/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/win32/filesys.lo: file_io/win32/filesys.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-file_io/win32/flock.lo: file_io/win32/flock.c .make.dirs 
-file_io/win32/open.lo: file_io/win32/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/win32/pipe.lo: file_io/win32/pipe.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/win32/readwrite.lo: file_io/win32/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-file_io/win32/seek.lo: file_io/win32/seek.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_file_io_win32 = file_io/unix/copy.lo file_io/unix/fileacc.lo file_io/unix/filepath_util.lo file_io/unix/fullrw.lo file_io/unix/mktemp.lo file_io/unix/tempdir.lo file_io/win32/buffer.lo file_io/win32/dir.lo file_io/win32/filedup.lo file_io/win32/filepath.lo file_io/win32/filestat.lo file_io/win32/filesys.lo file_io/win32/flock.lo file_io/win32/open.lo file_io/win32/pipe.lo file_io/win32/readwrite.lo file_io/win32/seek.lo
-
-locks/win32/proc_mutex.lo: locks/win32/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/win32/thread_cond.lo: locks/win32/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/win32/thread_mutex.lo: locks/win32/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-locks/win32/thread_rwlock.lo: locks/win32/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_locks_win32 = locks/win32/proc_mutex.lo locks/win32/thread_cond.lo locks/win32/thread_mutex.lo locks/win32/thread_rwlock.lo
-
-misc/win32/charset.lo: misc/win32/charset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-misc/win32/env.lo: misc/win32/env.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
-misc/win32/internal.lo: misc/win32/internal.c .make.dirs 
-misc/win32/misc.lo: misc/win32/misc.c .make.dirs include/apr_errno.h include/apr_lib.h
-misc/win32/rand.lo: misc/win32/rand.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-misc/win32/start.lo: misc/win32/start.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_thread_mutex.h include/apr_want.h
-misc/win32/utf8.lo: misc/win32/utf8.c .make.dirs include/apr_errno.h
-
-OBJECTS_misc_win32 = misc/unix/errorcodes.lo misc/unix/getopt.lo misc/unix/otherchild.lo misc/unix/version.lo misc/win32/charset.lo misc/win32/env.lo misc/win32/internal.lo misc/win32/misc.lo misc/win32/rand.lo misc/win32/start.lo misc/win32/utf8.lo
-
-mmap/win32/mmap.lo: mmap/win32/mmap.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_mmap.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_ring.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_mmap_win32 = mmap/unix/common.lo mmap/win32/mmap.lo
-
-network_io/win32/sendrecv.lo: network_io/win32/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/win32/sockets.lo: network_io/win32/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-network_io/win32/sockopt.lo: network_io/win32/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_network_io_win32 = network_io/unix/inet_ntop.lo network_io/unix/inet_pton.lo network_io/unix/multicast.lo network_io/unix/sockaddr.lo network_io/unix/socket_util.lo network_io/win32/sendrecv.lo network_io/win32/sockets.lo network_io/win32/sockopt.lo
-
-shmem/win32/shm.lo: shmem/win32/shm.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_shmem_win32 = shmem/win32/shm.lo
-
-threadproc/win32/proc.lo: threadproc/win32/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/win32/signals.lo: threadproc/win32/signals.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_signal.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/win32/thread.lo: threadproc/win32/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-threadproc/win32/threadpriv.lo: threadproc/win32/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_threadproc_win32 = threadproc/win32/proc.lo threadproc/win32/signals.lo threadproc/win32/thread.lo threadproc/win32/threadpriv.lo
-
-time/win32/time.lo: time/win32/time.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-time/win32/timestr.lo: time/win32/timestr.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_time_win32 = time/win32/time.lo time/win32/timestr.lo
-
-user/win32/groupinfo.lo: user/win32/groupinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-user/win32/userinfo.lo: user/win32/userinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
-
-OBJECTS_user_win32 = user/win32/groupinfo.lo user/win32/userinfo.lo
-
-atomic/win32/apr_atomic.lo: atomic/win32/apr_atomic.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
-
-OBJECTS_atomic_win32 = atomic/win32/apr_atomic.lo
-
-OBJECTS_win32 = $(OBJECTS_all) $(OBJECTS_atomic_win32) $(OBJECTS_dso_win32) $(OBJECTS_file_io_win32) $(OBJECTS_locks_win32) $(OBJECTS_memory_unix) $(OBJECTS_misc_win32) $(OBJECTS_mmap_win32) $(OBJECTS_network_io_win32) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_win32) $(OBJECTS_support_unix) $(OBJECTS_threadproc_win32) $(OBJECTS_time_win32) $(OBJECTS_user_win32)
-
-HEADERS = $(top_srcdir)/include/apr_allocator.h $(top_srcdir)/include/apr_atomic.h $(top_srcdir)/include/apr_dso.h $(top_srcdir)/include/apr_env.h $(top_srcdir)/include/apr_errno.h $(top_srcdir)/include/apr_file_info.h $(top_srcdir)/include/apr_file_io.h $(top_srcdir)/include/apr_fnmatch.h $(top_srcdir)/include/apr_general.h $(top_srcdir)/include/apr_getopt.h $(top_srcdir)/include/apr_global_mutex.h $(top_srcdir)/include/apr_hash.h $(top_srcdir)/include/apr_inherit.h $(top_srcdir)/include/apr_lib.h $(top_srcdir)/include/apr_mmap.h $(top_srcdir)/include/apr_network_io.h $(top_srcdir)/include/apr_poll.h $(top_srcdir)/include/apr_pools.h $(top_srcdir)/include/apr_portable.h $(top_srcdir)/include/apr_proc_mutex.h $(top_srcdir)/include/apr_random.h $(top_srcdir)/include/apr_ring.h $(top_srcdir)/include/apr_shm.h $(top_srcdir)/include/apr_signal.h $(top_srcdir)/include/apr_strings.h $(top_srcdir)/include/apr_support.h $(top_srcdir)/include/apr_tables.h $(top_srcdir)/include/apr_thread_cond.h $(top_srcdir)/include/apr_thread_mutex.h $(top_srcdir)/include/apr_thread_proc.h $(top_srcdir)/include/apr_thread_rwlock.h $(top_srcdir)/include/apr_time.h $(top_srcdir)/include/apr_user.h $(top_srcdir)/include/apr_version.h $(top_srcdir)/include/apr_want.h
-
-SOURCE_DIRS = random/unix misc/win32 mmap/win32 dso/os2 time/unix network_io/win32 dso/win32 locks/unix user/unix time/win32 locks/beos tables support/unix file_io/unix mmap/unix atomic/unix threadproc/win32 poll/os2 atomic/win32 dso/os390 atomic/os390 dso/beos poll/unix passwd network_io/beos threadproc/os2 network_io/os2 shmem/win32 threadproc/beos shmem/unix network_io/unix file_io/os2 dso/aix file_io/win32 threadproc/unix misc/unix locks/win32 shmem/beos dso/unix locks/os2 user/win32 shmem/os2 memory/unix strings $(EXTRA_SOURCE_DIRS)
-
-BUILD_DIRS = atomic atomic/os390 atomic/unix atomic/win32 dso dso/aix dso/beos dso/os2 dso/os390 dso/unix dso/win32 file_io file_io/os2 file_io/unix file_io/win32 locks locks/beos locks/os2 locks/unix locks/win32 memory memory/unix misc misc/unix misc/win32 mmap mmap/unix mmap/win32 network_io network_io/beos network_io/os2 network_io/unix network_io/win32 passwd poll poll/os2 poll/unix random random/unix shmem shmem/beos shmem/os2 shmem/unix shmem/win32 strings support support/unix tables threadproc threadproc/beos threadproc/os2 threadproc/unix threadproc/win32 time time/unix time/win32 user user/unix user/win32
-
-.make.dirs: $(srcdir)/build-outputs.mk
-	@for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done
-	@echo timestamp > $@

Copied: vendor/apache/apr/1.5.2/build-outputs.mk (from rev 9273, vendor/apache/apr/dist/build-outputs.mk)
===================================================================
--- vendor/apache/apr/1.5.2/build-outputs.mk	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build-outputs.mk	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,322 @@
+# DO NOT EDIT. AUTOMATICALLY GENERATED.
+
+encoding/apr_escape.lo: encoding/apr_escape.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_escape.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+passwd/apr_getpass.lo: passwd/apr_getpass.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_cpystrn.lo: strings/apr_cpystrn.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_fnmatch.lo: strings/apr_fnmatch.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_fnmatch.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+strings/apr_snprintf.lo: strings/apr_snprintf.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+strings/apr_strings.lo: strings/apr_strings.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_strnatcmp.lo: strings/apr_strnatcmp.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_strtok.lo: strings/apr_strtok.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+tables/apr_hash.lo: tables/apr_hash.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_hash.h include/apr_pools.h include/apr_thread_mutex.h include/apr_time.h include/apr_want.h
+tables/apr_skiplist.lo: tables/apr_skiplist.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_skiplist.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+tables/apr_tables.lo: tables/apr_tables.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_all = encoding/apr_escape.lo passwd/apr_getpass.lo strings/apr_cpystrn.lo strings/apr_fnmatch.lo strings/apr_snprintf.lo strings/apr_strings.lo strings/apr_strnatcmp.lo strings/apr_strtok.lo tables/apr_hash.lo tables/apr_skiplist.lo tables/apr_tables.lo
+
+dso/unix/dso.lo: dso/unix/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_unix = dso/unix/dso.lo
+
+file_io/unix/buffer.lo: file_io/unix/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+file_io/unix/copy.lo: file_io/unix/copy.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/dir.lo: file_io/unix/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/fileacc.lo: file_io/unix/fileacc.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/unix/filedup.lo: file_io/unix/filedup.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/filepath.lo: file_io/unix/filepath.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/filepath_util.lo: file_io/unix/filepath_util.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_want.h
+file_io/unix/filestat.lo: file_io/unix/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/flock.lo: file_io/unix/flock.c .make.dirs 
+file_io/unix/fullrw.lo: file_io/unix/fullrw.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/mktemp.lo: file_io/unix/mktemp.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/open.lo: file_io/unix/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/pipe.lo: file_io/unix/pipe.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/readwrite.lo: file_io/unix/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/seek.lo: file_io/unix/seek.c .make.dirs 
+file_io/unix/tempdir.lo: file_io/unix/tempdir.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_file_io_unix = file_io/unix/buffer.lo file_io/unix/copy.lo file_io/unix/dir.lo file_io/unix/fileacc.lo file_io/unix/filedup.lo file_io/unix/filepath.lo file_io/unix/filepath_util.lo file_io/unix/filestat.lo file_io/unix/flock.lo file_io/unix/fullrw.lo file_io/unix/mktemp.lo file_io/unix/open.lo file_io/unix/pipe.lo file_io/unix/readwrite.lo file_io/unix/seek.lo file_io/unix/tempdir.lo
+
+locks/unix/global_mutex.lo: locks/unix/global_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/unix/proc_mutex.lo: locks/unix/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_hash.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+locks/unix/thread_cond.lo: locks/unix/thread_cond.c .make.dirs 
+locks/unix/thread_mutex.lo: locks/unix/thread_mutex.c .make.dirs include/apr_want.h
+locks/unix/thread_rwlock.lo: locks/unix/thread_rwlock.c .make.dirs 
+
+OBJECTS_locks_unix = locks/unix/global_mutex.lo locks/unix/proc_mutex.lo locks/unix/thread_cond.lo locks/unix/thread_mutex.lo locks/unix/thread_rwlock.lo
+
+memory/unix/apr_pools.lo: memory/unix/apr_pools.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_dso.h include/apr_env.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_memory_unix = memory/unix/apr_pools.lo
+
+misc/unix/charset.lo: misc/unix/charset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+misc/unix/env.lo: misc/unix/env.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/errorcodes.lo: misc/unix/errorcodes.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/getopt.lo: misc/unix/getopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/otherchild.lo: misc/unix/otherchild.c .make.dirs 
+misc/unix/rand.lo: misc/unix/rand.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/start.lo: misc/unix/start.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/version.lo: misc/unix/version.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_version.h include/apr_want.h
+
+OBJECTS_misc_unix = misc/unix/charset.lo misc/unix/env.lo misc/unix/errorcodes.lo misc/unix/getopt.lo misc/unix/otherchild.lo misc/unix/rand.lo misc/unix/start.lo misc/unix/version.lo
+
+mmap/unix/common.lo: mmap/unix/common.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_mmap.h include/apr_pools.h include/apr_ring.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+mmap/unix/mmap.lo: mmap/unix/mmap.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_mmap.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_ring.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_mmap_unix = mmap/unix/common.lo mmap/unix/mmap.lo
+
+network_io/unix/inet_ntop.lo: network_io/unix/inet_ntop.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+network_io/unix/inet_pton.lo: network_io/unix/inet_pton.c .make.dirs 
+network_io/unix/multicast.lo: network_io/unix/multicast.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sendrecv.lo: network_io/unix/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sockaddr.lo: network_io/unix/sockaddr.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+network_io/unix/socket_util.lo: network_io/unix/socket_util.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sockets.lo: network_io/unix/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sockopt.lo: network_io/unix/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_network_io_unix = network_io/unix/inet_ntop.lo network_io/unix/inet_pton.lo network_io/unix/multicast.lo network_io/unix/sendrecv.lo network_io/unix/sockaddr.lo network_io/unix/socket_util.lo network_io/unix/sockets.lo network_io/unix/sockopt.lo
+
+poll/unix/epoll.lo: poll/unix/epoll.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/kqueue.lo: poll/unix/kqueue.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/poll.lo: poll/unix/poll.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/pollcb.lo: poll/unix/pollcb.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/pollset.lo: poll/unix/pollset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/port.lo: poll/unix/port.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/select.lo: poll/unix/select.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/z_asio.lo: poll/unix/z_asio.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_poll_unix = poll/unix/epoll.lo poll/unix/kqueue.lo poll/unix/poll.lo poll/unix/pollcb.lo poll/unix/pollset.lo poll/unix/port.lo poll/unix/select.lo poll/unix/z_asio.lo
+
+random/unix/apr_random.lo: random/unix/apr_random.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_random.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+random/unix/sha2.lo: random/unix/sha2.c .make.dirs 
+random/unix/sha2_glue.lo: random/unix/sha2_glue.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_random.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_random_unix = random/unix/apr_random.lo random/unix/sha2.lo random/unix/sha2_glue.lo
+
+shmem/unix/shm.lo: shmem/unix/shm.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_hash.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_unix = shmem/unix/shm.lo
+
+support/unix/waitio.lo: support/unix/waitio.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_support_unix = support/unix/waitio.lo
+
+threadproc/unix/proc.lo: threadproc/unix/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_random.h include/apr_shm.h include/apr_signal.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/unix/procsup.lo: threadproc/unix/procsup.c .make.dirs 
+threadproc/unix/signals.lo: threadproc/unix/signals.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+threadproc/unix/thread.lo: threadproc/unix/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/unix/threadpriv.lo: threadproc/unix/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_threadproc_unix = threadproc/unix/proc.lo threadproc/unix/procsup.lo threadproc/unix/signals.lo threadproc/unix/thread.lo threadproc/unix/threadpriv.lo
+
+time/unix/time.lo: time/unix/time.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+time/unix/timestr.lo: time/unix/timestr.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_time_unix = time/unix/time.lo time/unix/timestr.lo
+
+user/unix/groupinfo.lo: user/unix/groupinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+user/unix/userinfo.lo: user/unix/userinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_user_unix = user/unix/groupinfo.lo user/unix/userinfo.lo
+
+atomic/unix/builtins.lo: atomic/unix/builtins.c .make.dirs 
+atomic/unix/ia32.lo: atomic/unix/ia32.c .make.dirs 
+atomic/unix/mutex.lo: atomic/unix/mutex.c .make.dirs 
+atomic/unix/ppc.lo: atomic/unix/ppc.c .make.dirs 
+atomic/unix/s390.lo: atomic/unix/s390.c .make.dirs 
+atomic/unix/solaris.lo: atomic/unix/solaris.c .make.dirs 
+
+OBJECTS_atomic_unix = atomic/unix/builtins.lo atomic/unix/ia32.lo atomic/unix/mutex.lo atomic/unix/ppc.lo atomic/unix/s390.lo atomic/unix/solaris.lo
+
+OBJECTS_unix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_unix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/aix/dso.lo: dso/aix/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_aix = dso/aix/dso.lo
+
+OBJECTS_aix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_aix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/beos/dso.lo: dso/beos/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_beos = dso/beos/dso.lo
+
+locks/beos/proc_mutex.lo: locks/beos/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/beos/thread_cond.lo: locks/beos/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/beos/thread_mutex.lo: locks/beos/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/beos/thread_rwlock.lo: locks/beos/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_locks_beos = locks/beos/proc_mutex.lo locks/beos/thread_cond.lo locks/beos/thread_mutex.lo locks/beos/thread_rwlock.lo
+
+network_io/beos/sendrecv.lo: network_io/beos/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_time.h include/apr_want.h
+network_io/beos/socketcommon.lo: network_io/beos/socketcommon.c .make.dirs 
+
+OBJECTS_network_io_beos = network_io/beos/sendrecv.lo network_io/beos/socketcommon.lo
+
+shmem/beos/shm.lo: shmem/beos/shm.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_beos = shmem/beos/shm.lo
+
+threadproc/beos/apr_proc_stub.lo: threadproc/beos/apr_proc_stub.c .make.dirs 
+threadproc/beos/proc.lo: threadproc/beos/proc.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+threadproc/beos/thread.lo: threadproc/beos/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/beos/threadpriv.lo: threadproc/beos/threadpriv.c .make.dirs 
+threadproc/beos/threadproc_common.lo: threadproc/beos/threadproc_common.c .make.dirs 
+
+OBJECTS_threadproc_beos = threadproc/beos/apr_proc_stub.lo threadproc/beos/proc.lo threadproc/beos/thread.lo threadproc/beos/threadpriv.lo threadproc/beos/threadproc_common.lo
+
+OBJECTS_beos = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_beos) $(OBJECTS_file_io_unix) $(OBJECTS_locks_beos) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_beos) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_beos) $(OBJECTS_support_unix) $(OBJECTS_threadproc_beos) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/os2/dso.lo: dso/os2/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_os2 = dso/os2/dso.lo
+
+file_io/os2/buffer.lo: file_io/os2/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+file_io/os2/copy.lo: file_io/os2/copy.c .make.dirs 
+file_io/os2/dir.lo: file_io/os2/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/dir_make_recurse.lo: file_io/os2/dir_make_recurse.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/fileacc.lo: file_io/os2/fileacc.c .make.dirs 
+file_io/os2/filedup.lo: file_io/os2/filedup.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/filepath.lo: file_io/os2/filepath.c .make.dirs 
+file_io/os2/filepath_util.lo: file_io/os2/filepath_util.c .make.dirs 
+file_io/os2/filestat.lo: file_io/os2/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/filesys.lo: file_io/os2/filesys.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/os2/flock.lo: file_io/os2/flock.c .make.dirs 
+file_io/os2/fullrw.lo: file_io/os2/fullrw.c .make.dirs 
+file_io/os2/maperrorcode.lo: file_io/os2/maperrorcode.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/mktemp.lo: file_io/os2/mktemp.c .make.dirs 
+file_io/os2/open.lo: file_io/os2/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/pipe.lo: file_io/os2/pipe.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/readwrite.lo: file_io/os2/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/seek.lo: file_io/os2/seek.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/tempdir.lo: file_io/os2/tempdir.c .make.dirs 
+
+OBJECTS_file_io_os2 = file_io/os2/buffer.lo file_io/os2/copy.lo file_io/os2/dir.lo file_io/os2/dir_make_recurse.lo file_io/os2/fileacc.lo file_io/os2/filedup.lo file_io/os2/filepath.lo file_io/os2/filepath_util.lo file_io/os2/filestat.lo file_io/os2/filesys.lo file_io/os2/flock.lo file_io/os2/fullrw.lo file_io/os2/maperrorcode.lo file_io/os2/mktemp.lo file_io/os2/open.lo file_io/os2/pipe.lo file_io/os2/readwrite.lo file_io/os2/seek.lo file_io/os2/tempdir.lo
+
+locks/os2/proc_mutex.lo: locks/os2/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/os2/thread_cond.lo: locks/os2/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/os2/thread_mutex.lo: locks/os2/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/os2/thread_rwlock.lo: locks/os2/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_locks_os2 = locks/os2/proc_mutex.lo locks/os2/thread_cond.lo locks/os2/thread_mutex.lo locks/os2/thread_rwlock.lo
+
+network_io/os2/inet_ntop.lo: network_io/os2/inet_ntop.c .make.dirs 
+network_io/os2/inet_pton.lo: network_io/os2/inet_pton.c .make.dirs 
+network_io/os2/os2calls.lo: network_io/os2/os2calls.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sendrecv.lo: network_io/os2/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sendrecv_udp.lo: network_io/os2/sendrecv_udp.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sockaddr.lo: network_io/os2/sockaddr.c .make.dirs 
+network_io/os2/socket_util.lo: network_io/os2/socket_util.c .make.dirs 
+network_io/os2/sockets.lo: network_io/os2/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sockopt.lo: network_io/os2/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_network_io_os2 = network_io/os2/inet_ntop.lo network_io/os2/inet_pton.lo network_io/os2/os2calls.lo network_io/os2/sendrecv.lo network_io/os2/sendrecv_udp.lo network_io/os2/sockaddr.lo network_io/os2/socket_util.lo network_io/os2/sockets.lo network_io/os2/sockopt.lo
+
+poll/os2/poll.lo: poll/os2/poll.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/os2/pollset.lo: poll/os2/pollset.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_poll_os2 = poll/os2/poll.lo poll/os2/pollset.lo
+
+shmem/os2/shm.lo: shmem/os2/shm.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_os2 = shmem/os2/shm.lo
+
+threadproc/os2/proc.lo: threadproc/os2/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_signal.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/os2/signals.lo: threadproc/os2/signals.c .make.dirs 
+threadproc/os2/thread.lo: threadproc/os2/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/os2/threadpriv.lo: threadproc/os2/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_threadproc_os2 = threadproc/os2/proc.lo threadproc/os2/signals.lo threadproc/os2/thread.lo threadproc/os2/threadpriv.lo
+
+OBJECTS_os2 = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_os2) $(OBJECTS_file_io_os2) $(OBJECTS_locks_os2) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_os2) $(OBJECTS_poll_os2) $(OBJECTS_random_unix) $(OBJECTS_shmem_os2) $(OBJECTS_support_unix) $(OBJECTS_threadproc_os2) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/os390/dso.lo: dso/os390/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_os390 = dso/os390/dso.lo
+
+atomic/os390/atomic.lo: atomic/os390/atomic.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_atomic_os390 = atomic/os390/atomic.lo
+
+OBJECTS_os390 = $(OBJECTS_all) $(OBJECTS_atomic_os390) $(OBJECTS_dso_os390) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/win32/dso.lo: dso/win32/dso.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_dso_win32 = dso/win32/dso.lo
+
+file_io/win32/buffer.lo: file_io/win32/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+file_io/win32/dir.lo: file_io/win32/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/filedup.lo: file_io/win32/filedup.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/filepath.lo: file_io/win32/filepath.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/win32/filestat.lo: file_io/win32/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/filesys.lo: file_io/win32/filesys.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/win32/flock.lo: file_io/win32/flock.c .make.dirs 
+file_io/win32/open.lo: file_io/win32/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/pipe.lo: file_io/win32/pipe.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_escape.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/readwrite.lo: file_io/win32/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/seek.lo: file_io/win32/seek.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_file_io_win32 = file_io/unix/copy.lo file_io/unix/fileacc.lo file_io/unix/filepath_util.lo file_io/unix/fullrw.lo file_io/unix/mktemp.lo file_io/unix/tempdir.lo file_io/win32/buffer.lo file_io/win32/dir.lo file_io/win32/filedup.lo file_io/win32/filepath.lo file_io/win32/filestat.lo file_io/win32/filesys.lo file_io/win32/flock.lo file_io/win32/open.lo file_io/win32/pipe.lo file_io/win32/readwrite.lo file_io/win32/seek.lo
+
+locks/win32/proc_mutex.lo: locks/win32/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/win32/thread_cond.lo: locks/win32/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/win32/thread_mutex.lo: locks/win32/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/win32/thread_rwlock.lo: locks/win32/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_locks_win32 = locks/win32/proc_mutex.lo locks/win32/thread_cond.lo locks/win32/thread_mutex.lo locks/win32/thread_rwlock.lo
+
+misc/win32/charset.lo: misc/win32/charset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+misc/win32/env.lo: misc/win32/env.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/win32/internal.lo: misc/win32/internal.c .make.dirs 
+misc/win32/misc.lo: misc/win32/misc.c .make.dirs include/apr_errno.h include/apr_lib.h
+misc/win32/rand.lo: misc/win32/rand.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+misc/win32/start.lo: misc/win32/start.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_thread_mutex.h include/apr_want.h
+misc/win32/utf8.lo: misc/win32/utf8.c .make.dirs include/apr_errno.h
+
+OBJECTS_misc_win32 = misc/unix/errorcodes.lo misc/unix/getopt.lo misc/unix/otherchild.lo misc/unix/version.lo misc/win32/charset.lo misc/win32/env.lo misc/win32/internal.lo misc/win32/misc.lo misc/win32/rand.lo misc/win32/start.lo misc/win32/utf8.lo
+
+mmap/win32/mmap.lo: mmap/win32/mmap.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_mmap.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_ring.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_mmap_win32 = mmap/unix/common.lo mmap/win32/mmap.lo
+
+network_io/win32/sendrecv.lo: network_io/win32/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/win32/sockets.lo: network_io/win32/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/win32/sockopt.lo: network_io/win32/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_network_io_win32 = network_io/unix/inet_ntop.lo network_io/unix/inet_pton.lo network_io/unix/multicast.lo network_io/unix/sockaddr.lo network_io/unix/socket_util.lo network_io/win32/sendrecv.lo network_io/win32/sockets.lo network_io/win32/sockopt.lo
+
+shmem/win32/shm.lo: shmem/win32/shm.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_win32 = shmem/win32/shm.lo
+
+threadproc/win32/proc.lo: threadproc/win32/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/win32/signals.lo: threadproc/win32/signals.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_signal.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/win32/thread.lo: threadproc/win32/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/win32/threadpriv.lo: threadproc/win32/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_threadproc_win32 = threadproc/win32/proc.lo threadproc/win32/signals.lo threadproc/win32/thread.lo threadproc/win32/threadpriv.lo
+
+time/win32/time.lo: time/win32/time.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+time/win32/timestr.lo: time/win32/timestr.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_time_win32 = time/win32/time.lo time/win32/timestr.lo
+
+user/win32/groupinfo.lo: user/win32/groupinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+user/win32/userinfo.lo: user/win32/userinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_user_win32 = user/win32/groupinfo.lo user/win32/userinfo.lo
+
+atomic/win32/apr_atomic.lo: atomic/win32/apr_atomic.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_atomic_win32 = atomic/win32/apr_atomic.lo
+
+OBJECTS_win32 = $(OBJECTS_all) $(OBJECTS_atomic_win32) $(OBJECTS_dso_win32) $(OBJECTS_file_io_win32) $(OBJECTS_locks_win32) $(OBJECTS_memory_unix) $(OBJECTS_misc_win32) $(OBJECTS_mmap_win32) $(OBJECTS_network_io_win32) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_win32) $(OBJECTS_support_unix) $(OBJECTS_threadproc_win32) $(OBJECTS_time_win32) $(OBJECTS_user_win32)
+
+HEADERS = $(top_srcdir)/include/apr_allocator.h $(top_srcdir)/include/apr_atomic.h $(top_srcdir)/include/apr_dso.h $(top_srcdir)/include/apr_env.h $(top_srcdir)/include/apr_errno.h $(top_srcdir)/include/apr_escape.h $(top_srcdir)/include/apr_file_info.h $(top_srcdir)/include/apr_file_io.h $(top_srcdir)/include/apr_fnmatch.h $(top_srcdir)/include/apr_general.h $(top_srcdir)/include/apr_getopt.h $(top_srcdir)/include/apr_global_mutex.h $(top_srcdir)/include/apr_hash.h $(top_srcdir)/include/apr_inherit.h $(top_srcdir)/include/apr_lib.h $(top_srcdir)/include/apr_mmap.h $(top_srcdir)/include/apr_network_io.h $(top_srcdir)/include/apr_poll.h $(top_srcdir)/include/apr_pools.h $(top_srcdir)/include/apr_portable.h $(top_srcdir)/include/apr_proc_mutex.h $(top_srcdir)/include/apr_random.h $(top_srcdir)/include/apr_ring.h $(top_srcdir)/include/apr_shm.h $(top_srcdir)/include/apr_signal.h $(top_srcdir)/include/apr_skiplist.h $(top_srcdir)/include/apr_strings.h $(top_srcdir)/include/apr_support.h $(top_srcdir)/include/apr_tables.h $(top_srcdir)/include/apr_thread_cond.h $(top_srcdir)/include/apr_thread_mutex.h $(top_srcdir)/include/apr_thread_proc.h $(top_srcdir)/include/apr_thread_rwlock.h $(top_srcdir)/include/apr_time.h $(top_srcdir)/include/apr_user.h $(top_srcdir)/include/apr_version.h $(top_srcdir)/include/apr_want.h
+
+SOURCE_DIRS = random/unix misc/win32 encoding dso/os2 time/unix network_io/win32 dso/win32 locks/unix user/unix time/win32 locks/beos tables support/unix file_io/unix mmap/unix atomic/unix threadproc/win32 poll/os2 atomic/win32 dso/os390 atomic/os390 dso/beos poll/unix passwd network_io/beos threadproc/os2 network_io/os2 shmem/win32 threadproc/beos shmem/unix network_io/unix file_io/os2 mmap/win32 dso/aix file_io/win32 threadproc/unix misc/unix locks/win32 shmem/beos dso/unix locks/os2 user/win32 shmem/os2 memory/unix strings $(EXTRA_SOURCE_DIRS)
+
+BUILD_DIRS = atomic atomic/os390 atomic/unix atomic/win32 dso dso/aix dso/beos dso/os2 dso/os390 dso/unix dso/win32 encoding file_io file_io/os2 file_io/unix file_io/win32 locks locks/beos locks/os2 locks/unix locks/win32 memory memory/unix misc misc/unix misc/win32 mmap mmap/unix mmap/win32 network_io network_io/beos network_io/os2 network_io/unix network_io/win32 passwd poll poll/os2 poll/unix random random/unix shmem shmem/beos shmem/os2 shmem/unix shmem/win32 strings support support/unix tables threadproc threadproc/beos threadproc/os2 threadproc/unix threadproc/win32 time time/unix time/win32 user user/unix user/win32
+
+.make.dirs: $(srcdir)/build-outputs.mk
+	@for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done
+	@echo timestamp > $@

Deleted: vendor/apache/apr/1.5.2/build.conf
===================================================================
--- vendor/apache/apr/dist/build.conf	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/build.conf	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,28 +0,0 @@
-#
-# Configuration file for APR. Used by APR/build/gen-build.py
-#
-
-[options]
-
-# paths to platform-independent .c files to build
-paths =
-  passwd/*.c
-  strings/*.c
-  tables/*.c
-
-# directories that have platform-specific code in them. the resulting
-# pattern will be: SUBDIR/PLATFORM/*.c
-platform_dirs =
-  dso file_io locks memory misc mmap network_io poll random
-  shmem support threadproc time user atomic
-
-# all the public headers
-headers = include/*.h
-
-# aplibtool is manually built by the configure process
-# build/aplibtool.c
-
-# we have a recursive makefile for the test files (for now)
-# test/*.c
-
-dsp = libapr.dsp

Copied: vendor/apache/apr/1.5.2/build.conf (from rev 9273, vendor/apache/apr/dist/build.conf)
===================================================================
--- vendor/apache/apr/1.5.2/build.conf	                        (rev 0)
+++ vendor/apache/apr/1.5.2/build.conf	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,29 @@
+#
+# Configuration file for APR. Used by APR/build/gen-build.py
+#
+
+[options]
+
+# paths to platform-independent .c files to build
+paths =
+  encoding/*.c
+  passwd/*.c
+  strings/*.c
+  tables/*.c
+
+# directories that have platform-specific code in them. the resulting
+# pattern will be: SUBDIR/PLATFORM/*.c
+platform_dirs =
+  dso file_io locks memory misc mmap network_io poll random
+  shmem support threadproc time user atomic
+
+# all the public headers
+headers = include/*.h
+
+# aplibtool is manually built by the configure process
+# build/aplibtool.c
+
+# we have a recursive makefile for the test files (for now)
+# test/*.c
+
+dsp = libapr.dsp

Deleted: vendor/apache/apr/1.5.2/buildconf
===================================================================
--- vendor/apache/apr/dist/buildconf	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/buildconf	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,134 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-# 
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-# buildconf: Build the support scripts needed to compile from a
-#            checked-out version of the source code.
-
-if [ "$1" = "--verbose" -o "$1" = "-v" ]; then
-    verbose="--verbose"
-    shift
-fi
-
-# Verify that the builder has the right config tools installed
-#
-build/buildcheck.sh $verbose || exit 1
-
-libtoolize=`build/PrintPath glibtoolize1 glibtoolize libtoolize15 libtoolize14 libtoolize`
-if [ "x$libtoolize" = "x" ]; then
-    echo "libtoolize not found in path"
-    exit 1
-fi
-
-# Create the libtool helper files
-#
-# Note: we copy (rather than link) them to simplify distribution.
-# Note: APR supplies its own config.guess and config.sub -- we do not
-#       rely on libtool's versions
-#
-echo "buildconf: copying libtool helper files using $libtoolize"
-
-# Remove any libtool files so one can switch between libtool versions
-# by simply rerunning the buildconf script.
-rm -f aclocal.m4 libtool.m4
-(cd build ; rm -f ltconfig ltmain.sh argz.m4 libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4)
-
-# Determine libtool version, because --copy behaves differently
-# w.r.t. copying libtool.m4
-lt_pversion=`$libtoolize --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
-lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'`
-IFS=.; set $lt_version; IFS=' '
-
-# libtool 1
-if test "$1" = "1"; then
-  $libtoolize --copy --automake
-  # Unlikely, maybe for old versions the file exists
-  if [ -f libtool.m4 ]; then 
-    ltfile=`pwd`/libtool.m4
-  else
-
-    # Extract all lines setting variables from libtoolize up until
-    # libtool_m4 gets set
-    ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \
-                   < $libtoolize`"
-
-    # Get path to libtool.m4 either from LIBTOOL_M4 env var or our libtoolize based script
-    ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`}
-
-    # Expecting the code above to be very portable, but just in case...
-    if [ -z "$ltfile" -o ! -f "$ltfile" ]; then
-      ltpath=`dirname $libtoolize`
-      ltfile=`cd $ltpath/../share/aclocal ; pwd`/libtool.m4
-    fi
-  fi
-  if [ ! -f $ltfile ]; then
-    echo "$ltfile not found"
-    exit 1
-  fi
-  # Do we need this anymore?
-  echo "buildconf: Using libtool.m4 at ${ltfile}."
-  rm -f build/libtool.m4
-  cp -p $ltfile build/libtool.m4
-
-# libtool 2
-elif test "$1" = "2"; then
-  $libtoolize --copy --quiet $verbose
-fi
-
-# Replace top_builddir by apr_builddir.
-# Wouldn't it just be better to define top_builddir??
-# Not sure, would it interfere with httpd top_builddir when bundled?
-mv build/libtool.m4 build/libtool.m4.$$
-sed -e 's/\(LIBTOOL=.*\)top_build/\1apr_build/' < build/libtool.m4.$$ > build/libtool.m4
-rm -f build/libtool.m4.$$
-
-# Clean up any leftovers
-rm -f aclocal.m4 libtool.m4
-
-#
-# Generate the autoconf header and ./configure
-#
-echo "buildconf: creating include/arch/unix/apr_private.h.in ..."
-${AUTOHEADER:-autoheader} $verbose
-
-echo "buildconf: creating configure ..."
-### do some work to toss config.cache?
-${AUTOCONF:-autoconf} $verbose
-
-# Remove autoconf 2.5x's cache directory
-rm -rf autom4te*.cache
-
-echo "buildconf: generating 'make' outputs ..."
-build/gen-build.py $verbose make
-
-# Create RPM Spec file
-if [ -f `which cut` ]; then
-  echo "buildconf: rebuilding rpm spec file"
-  ( REVISION=`build/get-version.sh all include/apr_version.h APR`
-    VERSION=`echo $REVISION | cut -d- -s -f1`
-    RELEASE=`echo $REVISION | cut -d- -s -f2`
-    if [ "x$VERSION" = "x" ]; then
-      VERSION=$REVISION
-      RELEASE=1
-    fi
-    cat ./build/rpm/apr.spec.in | \
-    sed -e "s/APR_VERSION/$VERSION/" \
-        -e "s/APR_RELEASE/$RELEASE/" \
-    > apr.spec )
-fi
-
-exit 0

Copied: vendor/apache/apr/1.5.2/buildconf (from rev 9273, vendor/apache/apr/dist/buildconf)
===================================================================
--- vendor/apache/apr/1.5.2/buildconf	                        (rev 0)
+++ vendor/apache/apr/1.5.2/buildconf	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,134 @@
+#!/bin/sh
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+# buildconf: Build the support scripts needed to compile from a
+#            checked-out version of the source code.
+
+if [ "$1" = "--verbose" -o "$1" = "-v" ]; then
+    verbose="--verbose"
+    shift
+fi
+
+# Verify that the builder has the right config tools installed
+#
+build/buildcheck.sh $verbose || exit 1
+
+libtoolize=`build/PrintPath glibtoolize1 glibtoolize libtoolize15 libtoolize14 libtoolize`
+if [ "x$libtoolize" = "x" ]; then
+    echo "libtoolize not found in path"
+    exit 1
+fi
+
+# Create the libtool helper files
+#
+# Note: we copy (rather than link) them to simplify distribution.
+# Note: APR supplies its own config.guess and config.sub -- we do not
+#       rely on libtool's versions
+#
+echo "buildconf: copying libtool helper files using $libtoolize"
+
+# Remove any libtool files so one can switch between libtool versions
+# by simply rerunning the buildconf script.
+rm -f aclocal.m4 libtool.m4
+(cd build ; rm -f ltconfig ltmain.sh argz.m4 libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4)
+
+# Determine libtool version, because --copy behaves differently
+# w.r.t. copying libtool.m4
+lt_pversion=`$libtoolize --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
+lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'`
+IFS=.; set $lt_version; IFS=' '
+
+# libtool 1
+if test "$1" = "1"; then
+  $libtoolize --copy --automake
+  # Unlikely, maybe for old versions the file exists
+  if [ -f libtool.m4 ]; then 
+    ltfile=`pwd`/libtool.m4
+  else
+
+    # Extract all lines setting variables from libtoolize up until
+    # libtool_m4 gets set
+    ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \
+                   < $libtoolize`"
+
+    # Get path to libtool.m4 either from LIBTOOL_M4 env var or our libtoolize based script
+    ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`}
+
+    # Expecting the code above to be very portable, but just in case...
+    if [ -z "$ltfile" -o ! -f "$ltfile" ]; then
+      ltpath=`dirname $libtoolize`
+      ltfile=`cd $ltpath/../share/aclocal ; pwd`/libtool.m4
+    fi
+  fi
+  if [ ! -f $ltfile ]; then
+    echo "$ltfile not found"
+    exit 1
+  fi
+  # Do we need this anymore?
+  echo "buildconf: Using libtool.m4 at ${ltfile}."
+  rm -f build/libtool.m4
+  cp -p $ltfile build/libtool.m4
+
+# libtool 2
+elif test "$1" = "2"; then
+  $libtoolize --copy --quiet $verbose
+fi
+
+# Replace top_builddir by apr_builddir.
+# Wouldn't it just be better to define top_builddir??
+# Not sure, would it interfere with httpd top_builddir when bundled?
+mv build/libtool.m4 build/libtool.m4.$$
+sed -e 's/\(LIBTOOL=.*\)top_build/\1apr_build/' < build/libtool.m4.$$ > build/libtool.m4
+rm -f build/libtool.m4.$$
+
+# Clean up any leftovers
+rm -f aclocal.m4 libtool.m4
+
+#
+# Generate the autoconf header and ./configure
+#
+echo "buildconf: creating include/arch/unix/apr_private.h.in ..."
+${AUTOHEADER:-autoheader} $verbose
+
+echo "buildconf: creating configure ..."
+### do some work to toss config.cache?
+${AUTOCONF:-autoconf} $verbose
+
+# Remove autoconf 2.5x's cache directory
+rm -rf autom4te*.cache
+
+echo "buildconf: generating 'make' outputs ..."
+build/gen-build.py $verbose make
+
+# Create RPM Spec file
+if [ -f `which cut` ]; then
+  echo "buildconf: rebuilding rpm spec file"
+  ( REVISION=`build/get-version.sh all include/apr_version.h APR`
+    VERSION=`echo $REVISION | cut -d- -s -f1`
+    RELEASE=`echo $REVISION | cut -d- -s -f2`
+    if [ "x$VERSION" = "x" ]; then
+      VERSION=$REVISION
+      RELEASE=1
+    fi
+    cat ./build/rpm/apr.spec.in | \
+    sed -e "s/APR_VERSION/$VERSION/" \
+        -e "s/APR_RELEASE/$RELEASE/" \
+    > apr.spec )
+fi
+
+exit 0

Deleted: vendor/apache/apr/1.5.2/configure
===================================================================
--- vendor/apache/apr/dist/configure	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/configure	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,30703 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
-
-ac_unique_file="build/apr_common.m4"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-INCLUDE_OUTPUTS
-INCLUDE_RULES
-LT_NO_INSTALL
-LIBTOOL_LIBS
-DEFAULT_OSDIR
-OSDIR
-INCLUDES
-LDLIBS
-NOTEST_INCLUDES
-NOTEST_LIBS
-NOTEST_LDFLAGS
-NOTEST_CFLAGS
-NOTEST_CPPFLAGS
-EXTRA_INCLUDES
-EXTRA_LIBS
-EXTRA_LDFLAGS
-EXTRA_CFLAGS
-EXTRA_CPPFLAGS
-apr_has_user
-apr_thread_func
-apr_procattr_user_set_requires_password
-apr_has_xthread_files
-have_unicode_fs
-have_ipv6
-have_sa_storage
-have_sctp
-acceptfilter
-have_corkable_tcp
-apr_tcp_nopush_flag
-file_as_socket
-have_in_addr
-osuuid
-rand
-proclockglobal
-pthreadser
-procpthreadser
-fcntlser
-posixser
-sysvser
-flockser
-hasprocpthreadser
-hasfcntlser
-hasposixser
-hassysvser
-hasflockser
-have_union_semun
-struct_rlimit
-have_proc_invoked
-oc
-aprdso
-have_memchr
-have_strstr
-have_strdup
-have_strcasecmp
-have_stricmp
-have_strncasecmp
-have_strnicmp
-ino_t_value
-have_iovec
-aprlfs
-bigendian
-stdint
-uint64_literal
-int64_literal
-pid_t_fmt
-off_t_fmt
-size_t_fmt
-ssize_t_fmt
-uint64_t_hex_fmt
-uint64_t_fmt
-int64_t_fmt
-socklen_t_value
-ssize_t_value
-size_t_value
-off_t_value
-int64_value
-long_value
-int_value
-short_value
-voidp_size
-winsock2h
-windowsh
-semaphoreh
-pthreadh
-processh
-sys_waith
-signalh
-unistdh
-timeh
-sys_unh
-sys_uioh
-sys_timeh
-sys_typesh
-sys_sockioh
-sys_socketh
-sys_signalh
-sys_sendfileh
-sys_ioctlh
-stringsh
-stringh
-stdlibh
-stdioh
-stdargh
-netinet_tcph
-netinet_sctp_uioh
-netinet_sctph
-netinet_inh
-sys_syslimitsh
-netdbh
-limitsh
-ioh
-fcntlh
-direnth
-errnoh
-crypth
-ctypeh
-conioh
-arpa_ineth
-have_memmove
-mmap
-have_getrlimit
-have_setrlimit
-have_sigaction
-have_inet_network
-o_nonblock_inherited
-tcp_nodelay_inherited
-have_inet_addr
-fork
-apr_inaddr_none
-sendfile
-ALLOCA
-sharedmem
-havewin32shm
-haveos2shm
-havebeosarea
-haveshmget
-havemmapshm
-havemmaptmp
-usewin32shm
-useos2shm
-usebeosarea
-useshmget
-usemmapshm
-usemmaptmp
-havemmapanon
-havemmapzero
-haveshmgetanon
-usemmapanon
-usemmapzero
-useshmgetanon
-have_sigwait
-have_sigsuspend
-threads
-INSTALL_SUBDIRS
-eolstr
-proc_mutex_is_global
-OBJECTS_PLATFORM
-MKDEP
-LT_VERSION
-LT_LDFLAGS
-LTFLAGS
-shlibpath_var
-export_lib_target
-lib_target
-so_ext
-link
-lt_compile
-installbuilddir
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-STRIP
-ac_ct_AR
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-LIBTOOL
-OBJDUMP
-DLLTOOL
-APR_LIBNAME
-apr_charset_ebcdic
-EGREP
-GREP
-AR
-ASCPP
-AS
-RM
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-RANLIB
-LN_S
-AWK
-CPP
-SET_MAKE
-SED
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-APR_MAJOR_VERSION
-APR_DOTTED_VERSION
-apr_builders
-top_builddir
-APR_CONFIG_LOCATION
-apr_builddir
-apr_srcdir
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_layout
-enable_experimental_libtool
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-with_installbuilddir
-with_libtool
-enable_debug
-enable_maintainer_mode
-enable_profile
-enable_pool_debug
-enable_malloc_debug
-enable_lfs
-enable_nonportable_atomics
-enable_threads
-with_efence
-with_sendfile
-enable_allocator_uses_mmap
-enable_dso
-enable_other_child
-with_egd
-with_devrandom
-enable_ipv6
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-  --target=TARGET   configure for building compilers for TARGET [HOST]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-layout=LAYOUT
-  --enable-experimental-libtool Use experimental custom libtool
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-debug          Turn on debugging and compile time warnings
-  --enable-maintainer-mode  Turn on debugging and compile time warnings
-  --enable-profile        Turn on profiling for the build (GCC)
-  --enable-pool-debug[=yes|no|verbose|verbose-alloc|lifetime|owner|all]    Turn on pools debugging
-  --enable-malloc-debug   Switch on malloc_debug for BeOS
-  --disable-lfs           Disable large file support on 32-bit platforms
-  --enable-nonportable-atomics  Use optimized atomic code which may produce nonportable binaries
-  --enable-threads        Enable threading support in APR.
-  --enable-allocator-uses-mmap    Use mmap in apr_allocator instead of malloc (experimental)
-  --disable-dso           Disable DSO support
-  --enable-other-child    Enable reliable child processes
-  --disable-ipv6          Disable IPv6 support in APR.
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-  --with-installbuilddir=DIR location to store APR build files (defaults to '${datadir}/build')
-  --without-libtool       avoid using libtool to link the library
-  --with-efence[=DIR]     path to Electric Fence installation
-  --with-sendfile         Override decision to use sendfile
-  --with-egd[=DIR]        use EGD-compatible socket
-  --with-devrandom[=DEV]  use /dev/random or compatible [searches by default]
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to the package provider.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-configure
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if test "$cross_compiling" = yes; then
-    # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid; break
-else
-  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=$ac_mid; break
-else
-  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  ac_lo= ac_hi=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid
-else
-  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in #((
-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-'') ac_retval=1 ;;
-esac
-  else
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (($2) < 0)
-    {
-      long int i = longval ();
-      if (i != ($2))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ($2))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
-  ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
-  fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_compute_int
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  as_decl_name=`echo $2|sed 's/ *(.*//'`
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
-  (void) $as_decl_use;
-#else
-  (void) $as_decl_name;
-#endif
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_decl
-
-# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
-# ----------------------------------------------------
-# Tries to find if the field MEMBER exists in type AGGR, after including
-# INCLUDES, setting cache variable VAR accordingly.
-ac_fn_c_check_member ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (sizeof ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  eval "$4=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$4
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_member
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_config_headers="$ac_config_headers include/arch/unix/apr_private.h"
-
-ac_aux_dir=
-for ac_dir in build "$srcdir"/build; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in build \"$srcdir\"/build" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-
-
-# serial 57 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-# LT_INIT
-
-# Old names:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-
-
-# Initialize.
-
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-
-
-# Initialize.
-
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-
-
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-
-
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable.  If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins.  After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script.  The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-
-
-
-# C support is built-in for now
-
-
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-# _LT_LANG
-
-
-#m4_ifndef
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_TAG_COMPILER
-# ----------------
-# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-
-
-
-# _LT_DARWIN_LINKER_FEATURES([TAG])
-# ---------------------------------
-# Checks for linker and compiler features on darwin
-
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
-# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-
-
-# _LT_ENABLE_LOCK
-# ---------------
-# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-# _LT_COMPILER_OPTION
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-# _LT_LINKER_OPTION
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# LT_CMD_MAX_LEN
-#---------------
-# LT_CMD_MAX_LEN
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-# LT_SYS_DLOPEN_SELF
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-# LT_PATH_LD
-
-# Old names:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-# LT_PATH_NM
-
-# Old names:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-#  -- PORTME fill in with the dynamic library characteristics
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-# _LT_PATH_MANIFEST_TOOL
-
-
-# LT_LIB_M
-# --------
-# check for math library
-# LT_LIB_M
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
- # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-# _LT_FUNC_STRIPNAME_CNF
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_GO_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Go compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-# _LT_LANG_GO_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# LT_PROG_GO
-# ----------
-
-
-
-# LT_PROG_RC
-# ----------
-
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-# _LT_DECL_SED
-
-#m4_ifndef
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine which file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-# for certain cross-compile configurations and native mingw.
-# _LT_PATH_CONVERSION_FUNCTIONS
-
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-
-
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-
-
-
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-
-
-
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-#   Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-# win32-dll
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-# _LT_ENABLE_SHARED
-
-
-
-
-# Old names:
-
-
-
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-# _LT_ENABLE_STATIC
-
-
-
-
-# Old names:
-
-
-
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-# _LT_ENABLE_FAST_INSTALL
-
-
-
-
-# Old names:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-# _LT_WITH_PIC
-
-
-
-
-# Old name:
-# This is what autoupdate's m4 run will expand.  It fires
-# the warning (with _au_warn_XXX), outputs it into the
-# updated configure.ac (with AC_DIAGNOSE), and then outputs
-# the replacement expansion.
-
-
-# This is an auxiliary macro that is also run when
-# autoupdate runs m4.  It simply calls m4_warning, but
-# we need a wrapper so that each warning is emitted only
-# once.  We break the quoting in m4_warning's argument in
-# order to expand this macro's arguments, not AU_DEFUN's.
-
-
-# Finally, this is the expansion that is picked up by
-# autoconf.  It tells the user to run autoupdate, and
-# then outputs the replacement expansion.  We do not care
-# about autoupdate's warning because that contains
-# information on what to do *after* running autoupdate.
-
-
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-
-
-
-
-
-
-
-
-
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3337 ltversion.m4
-# This file is part of GNU Libtool
-
-
-
-
-
-
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  apr_ste_save_CPPFLAGS="$CPPFLAGS"
-
-
-  apr_ste_save_CFLAGS="$CFLAGS"
-
-
-  apr_ste_save_LDFLAGS="$LDFLAGS"
-
-
-  apr_ste_save_LIBS="$LIBS"
-
-
-  apr_ste_save_INCLUDES="$INCLUDES"
-
-
-
-  rm -f config.nice
-  cat >config.nice<<EOF
-#! /bin/sh
-#
-# Created by configure
-
-EOF
-  if test -n "$CC"; then
-    echo "CC=\"$CC\"; export CC" >> config.nice
-  fi
-  if test -n "$CFLAGS"; then
-    echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> config.nice
-  fi
-  if test -n "$CPPFLAGS"; then
-    echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> config.nice
-  fi
-  if test -n "$LDFLAGS"; then
-    echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> config.nice
-  fi
-  if test -n "$LTFLAGS"; then
-    echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> config.nice
-  fi
-  if test -n "$LIBS"; then
-    echo "LIBS=\"$LIBS\"; export LIBS" >> config.nice
-  fi
-  if test -n "$INCLUDES"; then
-    echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> config.nice
-  fi
-  if test -n "$NOTEST_CFLAGS"; then
-    echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> config.nice
-  fi
-  if test -n "$NOTEST_CPPFLAGS"; then
-    echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> config.nice
-  fi
-  if test -n "$NOTEST_LDFLAGS"; then
-    echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> config.nice
-  fi
-  if test -n "$NOTEST_LIBS"; then
-    echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> config.nice
-  fi
-
-  # Retrieve command-line arguments.
-  eval "set x $0 $ac_configure_args"
-  shift
-
-  for arg
-  do
-
-ap_last=
-ap_cur="$arg"
-while test "x${ap_cur}" != "x${ap_last}";
-do
-  ap_last="${ap_cur}"
-  ap_cur=`eval "echo ${ap_cur}"`
-done
-arg="${ap_cur}"
-
-    echo "\"$arg\" \\" >> config.nice
-  done
-  echo '"$@"' >> config.nice
-  chmod +x config.nice
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if ${ac_cv_target+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$target_alias" = x; then
-  ac_cv_target=$ac_cv_host
-else
-  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-
-echo "Configuring APR library"
-echo "Platform: $host"
-
-
-
-# Absolute source/build directory
-apr_srcdir=`(cd $srcdir && pwd)`
-apr_builddir=`pwd`
-
-
-
-if test "$apr_builddir" != "$apr_srcdir"; then
-  USE_VPATH=1
-  APR_CONFIG_LOCATION=build
-else
-  APR_CONFIG_LOCATION=source
-fi
-
-
-
-# Libtool might need this symbol -- it must point to the location of
-# the generated libtool script (not necessarily the "top" build dir).
-#
-top_builddir="$apr_builddir"
-
-
-# Directory containing apr build macros, helpers, and make rules
-# NOTE: make rules (apr_rules.mk) will be in the builddir for vpath
-#
-apr_buildout=$apr_builddir/build
-apr_builders=$apr_srcdir/build
-
-
-MKDIR=$apr_builders/mkdir.sh
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mkdir -p" >&5
-$as_echo_n "checking for working mkdir -p... " >&6; }
-if ${ac_cv_mkdir_p+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    test -d conftestdir && rm -rf conftestdir
-    mkdir -p conftestdir/somedir >/dev/null 2>&1
-    if test -d conftestdir/somedir; then
-      ac_cv_mkdir_p=yes
-    else
-      ac_cv_mkdir_p=no
-    fi
-    rm -rf conftestdir
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mkdir_p" >&5
-$as_echo "$ac_cv_mkdir_p" >&6; }
-  if test "$ac_cv_mkdir_p" = "yes"; then
-      mkdir_p="mkdir -p"
-  else
-      mkdir_p="$apr_builders/mkdir.sh"
-  fi
-
-
-# get our version information
-get_version="$apr_builders/get-version.sh"
-version_hdr="$apr_srcdir/include/apr_version.h"
-APR_MAJOR_VERSION="`$get_version major $version_hdr APR`"
-APR_DOTTED_VERSION="`$get_version all $version_hdr APR`"
-
-
-
-
-echo "APR Version: ${APR_DOTTED_VERSION}"
-
-
-# Check whether --enable-layout was given.
-if test "${enable_layout+set}" = set; then :
-  enableval=$enable_layout;
-  LAYOUT=$enableval
-
-fi
-
-
-if test -z "$LAYOUT"; then
-  LAYOUT="apr"
-fi
-
-  if test ! -f $srcdir/config.layout; then
-    echo "** Error: Layout file $srcdir/config.layout not found"
-    echo "** Error: Cannot use undefined layout '$LAYOUT'"
-    exit 1
-  fi
-  # Catch layout names including a slash which will otherwise
-  # confuse the heck out of the sed script.
-  case $LAYOUT in
-  */*)
-    echo "** Error: $LAYOUT is not a valid layout name"
-    exit 1 ;;
-  esac
-  pldconf=./config.pld
-
-  sed -e "1s/[ 	]*<[lL]ayout[ 	]*$LAYOUT[ 	]*>[ 	]*//;1t" \
-      -e "1,/[ 	]*<[lL]ayout[ 	]*$LAYOUT[ 	]*>[ 	]*/d" \
-      -e '/[ 	]*<\/Layout>[ 	]*/,$d' \
-      -e "s/^[ 	]*//g" \
-      -e "s/:[ 	]*/=\'/g" \
-      -e "s/[ 	]*$/'/g" \
-      $srcdir/config.layout > $pldconf
-  layout_name=$LAYOUT
-  if test ! -s $pldconf; then
-    echo "** Error: unable to find layout $layout_name"
-    exit 1
-  fi
-  . $pldconf
-  rm $pldconf
-  for var in prefix exec_prefix bindir sbindir libexecdir mandir \
-             sysconfdir datadir includedir localstatedir runtimedir \
-             logfiledir libdir installbuilddir libsuffix ; do
-    eval "val=\"\$$var\""
-    case $val in
-      *+)
-        val=`echo $val | sed -e 's;\+$;;'`
-        eval "$var=\"\$val\""
-        autosuffix=yes
-        ;;
-      *)
-        autosuffix=no
-        ;;
-    esac
-    val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
-    val=`echo $val | sed -e 's:[\$]\([a-z_]*\):$\1:g'`
-    if test "$autosuffix" = "yes"; then
-      if echo $val | grep apache >/dev/null; then
-        addtarget=no
-      else
-        addtarget=yes
-      fi
-      if test "$addtarget" = "yes"; then
-        val="$val/apache2"
-      fi
-    fi
-    eval "$var='$val'"
-  done
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for chosen layout" >&5
-$as_echo_n "checking for chosen layout... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $layout_name" >&5
-$as_echo "$layout_name" >&6; }
-
-
-ac_prev=
-# Retrieve the command-line arguments.  The eval is needed because
-# the arguments are quoted to preserve accuracy.
-eval "set x $ac_configure_args"
-shift
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
-  case $ac_option in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-    *)  as_fn_error $? "expected an absolute path for --$ac_var: $ac_val" "$LINENO" 5;;
-  esac
-done
-
-
-
-
-case "$host" in
-  *-apple-aux3*)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"gcc\""
-    CC="gcc"
-  fi
-
-      ;;
-  bs2000*-siemens-sysv*)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"c89 -XLLML -XLLMK -XL -Kno_integer_overflow\""
-    CC="c89 -XLLML -XLLMK -XL -Kno_integer_overflow"
-  fi
-
-      ;;
-  *convex-v11*)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
-    CC="cc"
-  fi
-
-      ;;
-  *-ibm-os390)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
-    CC="cc"
-  fi
-
-      ;;
-  *-ibm-as400)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"icc\""
-    CC="icc"
-  fi
-
-      ;;
-  *-isc4*)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"gcc\""
-    CC="gcc"
-  fi
-
-      ;;
-  m88k-*-CX/SX|CYBER)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
-    CC="cc"
-  fi
-
-      ;;
-  *-next-openstep*)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
-    CC="cc"
-  fi
-
-      ;;
-  *-qnx32)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"cc -F\""
-    CC="cc -F"
-  fi
-
-      ;;
-  *-tandem-oss)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"c89\""
-    CC="c89"
-  fi
-
-      ;;
-  TPF)
-
-  if test -z "$CC"; then
-    test "x$silent" != "xyes" && echo "  setting CC to \"c89\""
-    CC="c89"
-  fi
-
-      ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-
-
-if test "x$apr_preload_done" != "xyes" ; then
-
-  apr_preload_done="yes"
-
-  echo "Applying APR hints file rules for $host"
-
-  case "$host" in
-    *mint)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DMINT\""
-    CPPFLAGS="-DMINT"
-  else
-    apr_addto_bugger="-DMINT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lportlib\""
-    LIBS="-lportlib"
-  else
-    apr_addto_bugger="-lportlib"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *MPE/iX*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE\""
-    CPPFLAGS="-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE"
-  else
-    apr_addto_bugger="-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lsvipc -lcurses\""
-    LIBS="-lsvipc -lcurses"
-  else
-    apr_addto_bugger="-lsvipc -lcurses"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\"\""
-    LDFLAGS="-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\""
-  else
-    apr_addto_bugger="-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\""
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-apple-aux3*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAUX3 -D_POSIX_SOURCE\""
-    CPPFLAGS="-DAUX3 -D_POSIX_SOURCE"
-  else
-    apr_addto_bugger="-DAUX3 -D_POSIX_SOURCE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lposix -lbsd\""
-    LIBS="-lposix -lbsd"
-  else
-    apr_addto_bugger="-lposix -lbsd"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-s\""
-    LDFLAGS="-s"
-  else
-    apr_addto_bugger="-s"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-
-  test "x$silent" != "xyes" && echo "  forcing SHELL to \"/bin/ksh\""
-  SHELL="/bin/ksh"
-
-	;;
-    *-ibm-aix*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-U__STR__ -D_THREAD_SAFE\""
-    CPPFLAGS="-U__STR__ -D_THREAD_SAFE"
-  else
-    apr_addto_bugger="-U__STR__ -D_THREAD_SAFE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-                case $host in
-            *-ibm-aix4.3)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_USE_IRS\""
-    CPPFLAGS="-D_USE_IRS"
-  else
-    apr_addto_bugger="-D_USE_IRS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	        ;;
-            *-ibm-aix5*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_USE_IRS\""
-    CPPFLAGS="-D_USE_IRS"
-  else
-    apr_addto_bugger="-D_USE_IRS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	        ;;
-            *-ibm-aix4.3.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_USE_IRS\""
-    CPPFLAGS="-D_USE_IRS"
-  else
-    apr_addto_bugger="-D_USE_IRS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-                ;;
-        esac
-                if $CC 2>&1 | grep 'xlc' > /dev/null; then
-
-  if test -z "$AIX_XLC"; then
-    test "x$silent" != "xyes" && echo "  setting AIX_XLC to \"yes\""
-    AIX_XLC="yes"
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-qHALT=E\""
-    CFLAGS="-qHALT=E"
-  else
-    apr_addto_bugger="-qHALT=E"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-        fi
-
-  if test -z "$apr_sysvsem_is_global"; then
-    test "x$silent" != "xyes" && echo "  setting apr_sysvsem_is_global to \"yes\""
-    apr_sysvsem_is_global="yes"
-  fi
-
-
-  if test -z "$apr_lock_method"; then
-    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_SYSVSEM_SERIALIZE\""
-    apr_lock_method="USE_SYSVSEM_SERIALIZE"
-  fi
-
-        case $host in
-            *-ibm-aix3* | *-ibm-aix4.1.*)
-                ;;
-            *)
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Wl,-brtl\""
-    LDFLAGS="-Wl,-brtl"
-  else
-    apr_addto_bugger="-Wl,-brtl"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-                ;;
-	esac
-        ;;
-    *-apollo-*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAPOLLO\""
-    CPPFLAGS="-DAPOLLO"
-  else
-    apr_addto_bugger="-DAPOLLO"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-dg-dgux*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DDGUX\""
-    CPPFLAGS="-DDGUX"
-  else
-    apr_addto_bugger="-DDGUX"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-os2*)
-
-  test "x$silent" != "xyes" && echo "  forcing SHELL to \"sh\""
-  SHELL="sh"
-
-
-  if test -z "$apr_gethostbyname_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_gethostbyname_is_thread_safe to \"yes\""
-    apr_gethostbyname_is_thread_safe="yes"
-  fi
-
-
-  if test -z "$apr_gethostbyaddr_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_gethostbyaddr_is_thread_safe to \"yes\""
-    apr_gethostbyaddr_is_thread_safe="yes"
-  fi
-
-
-  if test -z "$apr_getservbyname_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_getservbyname_is_thread_safe to \"yes\""
-    apr_getservbyname_is_thread_safe="yes"
-  fi
-
-	;;
-    *-hi-hiux)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DHIUX\""
-    CPPFLAGS="-DHIUX"
-  else
-    apr_addto_bugger="-DHIUX"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-hp-hpux11.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE\""
-    CPPFLAGS="-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE"
-  else
-    apr_addto_bugger="-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-hp-hpux10.*)
- 	case $host in
- 	  *-hp-hpux10.01)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSELECT_NEEDS_CAST\""
-    CPPFLAGS="-DSELECT_NEEDS_CAST"
-  else
-    apr_addto_bugger="-DSELECT_NEEDS_CAST"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	       ;;
- 	esac
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_REENTRANT\""
-    CPPFLAGS="-D_REENTRANT"
-  else
-    apr_addto_bugger="-D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-hp-hpux*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DHPUX -D_REENTRANT\""
-    CPPFLAGS="-DHPUX -D_REENTRANT"
-  else
-    apr_addto_bugger="-DHPUX -D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-linux*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DLINUX -D_REENTRANT -D_GNU_SOURCE\""
-    CPPFLAGS="-DLINUX -D_REENTRANT -D_GNU_SOURCE"
-  else
-    apr_addto_bugger="-DLINUX -D_REENTRANT -D_GNU_SOURCE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-lynx-lynxos)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D__NO_INCLUDE_WARN__ -DLYNXOS\""
-    CPPFLAGS="-D__NO_INCLUDE_WARN__ -DLYNXOS"
-  else
-    apr_addto_bugger="-D__NO_INCLUDE_WARN__ -DLYNXOS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbsd\""
-    LIBS="-lbsd"
-  else
-    apr_addto_bugger="-lbsd"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *486-*-bsdi*)
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-m486\""
-    CFLAGS="-m486"
-  else
-    apr_addto_bugger="-m486"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-*-bsdi*)
-        case $host in
-            *bsdi4.1)
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-D_REENTRANT\""
-    CFLAGS="-D_REENTRANT"
-  else
-    apr_addto_bugger="-D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-                ;;
-        esac
-        ;;
-    *-openbsd*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_POSIX_THREADS\""
-    CPPFLAGS="-D_POSIX_THREADS"
-  else
-    apr_addto_bugger="-D_POSIX_THREADS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        # binding to an ephemeral port fails on OpenBSD so override
-        # the test for O_NONBLOCK inheritance across accept().
-
-  if test -z "$ac_cv_o_nonblock_inherited"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_o_nonblock_inherited to \"yes\""
-    ac_cv_o_nonblock_inherited="yes"
-  fi
-
-	;;
-    *-netbsd*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNETBSD\""
-    CPPFLAGS="-DNETBSD"
-  else
-    apr_addto_bugger="-DNETBSD"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        # fcntl() lies about O_NONBLOCK on an accept()ed socket (PR kern/26950)
-
-  if test -z "$ac_cv_o_nonblock_inherited"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_o_nonblock_inherited to \"yes\""
-    ac_cv_o_nonblock_inherited="yes"
-  fi
-
-	;;
-    *-freebsd*)
-
-  if test -z "$apr_lock_method"; then
-    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_FLOCK_SERIALIZE\""
-    apr_lock_method="USE_FLOCK_SERIALIZE"
-  fi
-
-        if test -x /sbin/sysctl; then
-            os_version=`/sbin/sysctl -n kern.osreldate`
-        else
-            os_version=000000
-        fi
-        # 502102 is when libc_r switched to libpthread (aka libkse).
-        if test $os_version -ge "502102"; then
-          apr_cv_pthreads_cflags="none"
-          apr_cv_pthreads_lib="-lpthread"
-        else
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_THREAD_SAFE -D_REENTRANT\""
-    CPPFLAGS="-D_THREAD_SAFE -D_REENTRANT"
-  else
-    apr_addto_bugger="-D_THREAD_SAFE -D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test -z "$enable_threads"; then
-    test "x$silent" != "xyes" && echo "  setting enable_threads to \"no\""
-    enable_threads="no"
-  fi
-
-        fi
-        # prevent use of KQueue before FreeBSD 4.8
-        if test $os_version -lt "480000"; then
-
-  if test -z "$ac_cv_func_kqueue"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_kqueue to \"no\""
-    ac_cv_func_kqueue="no"
-  fi
-
-        fi
-	;;
-    *-k*bsd*-gnu)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_REENTRANT -D_GNU_SOURCE\""
-    CPPFLAGS="-D_REENTRANT -D_GNU_SOURCE"
-  else
-    apr_addto_bugger="-D_REENTRANT -D_GNU_SOURCE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        ;;
-    *-gnu*|*-GNU*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_REENTRANT -D_GNU_SOURCE -DHURD\""
-    CPPFLAGS="-D_REENTRANT -D_GNU_SOURCE -DHURD"
-  else
-    apr_addto_bugger="-D_REENTRANT -D_GNU_SOURCE -DHURD"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        ;;
-    *-next-nextstep*)
-
-  if test -z "$CFLAGS"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
-    CFLAGS="-O"
-  fi
-
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNEXT\""
-    CPPFLAGS="-DNEXT"
-  else
-    apr_addto_bugger="-DNEXT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-next-openstep*)
-
-  if test -z "$CFLAGS"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
-    CFLAGS="-O"
-  fi
-
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNEXT\""
-    CPPFLAGS="-DNEXT"
-  else
-    apr_addto_bugger="-DNEXT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-apple-rhapsody*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DRHAPSODY\""
-    CPPFLAGS="-DRHAPSODY"
-  else
-    apr_addto_bugger="-DRHAPSODY"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-apple-darwin*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp\""
-    CPPFLAGS="-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp"
-  else
-    apr_addto_bugger="-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test -z "$apr_posixsem_is_global"; then
-    test "x$silent" != "xyes" && echo "  setting apr_posixsem_is_global to \"yes\""
-    apr_posixsem_is_global="yes"
-  fi
-
-        case $host in
-            *-apple-darwin[1-9].*)
-                # APR's use of kqueue has triggered kernel panics for some
-                # 10.5.x (Darwin 9.x) users when running the entire test suite.
-                # In 10.4.x, use of kqueue would cause the socket tests to hang.
-                # 10.6+ (Darwin 10.x is supposed to fix the KQueue issues
-
-  if test -z "$ac_cv_func_kqueue"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_kqueue to \"no\""
-    ac_cv_func_kqueue="no"
-  fi
-
-
-  if test -z "$ac_cv_func_poll"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_poll to \"no\""
-    ac_cv_func_poll="no"
-  fi
- # See issue 34332
-            ;;
-            *-apple-darwin1?.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DDARWIN_10\""
-    CPPFLAGS="-DDARWIN_10"
-  else
-    apr_addto_bugger="-DDARWIN_10"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-            ;;
-        esac
-	;;
-    *-dec-osf*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DOSF1\""
-    CPPFLAGS="-DOSF1"
-  else
-    apr_addto_bugger="-DOSF1"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        # process-shared mutexes don't seem to work in Tru64 5.0
-
-  if test -z "$apr_cv_process_shared_works"; then
-    test "x$silent" != "xyes" && echo "  setting apr_cv_process_shared_works to \"no\""
-    apr_cv_process_shared_works="no"
-  fi
-
-	;;
-    *-nto-qnx*)
-	;;
-    *-qnx)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DQNX\""
-    CPPFLAGS="-DQNX"
-  else
-    apr_addto_bugger="-DQNX"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-N128k -lunix\""
-    LIBS="-N128k -lunix"
-  else
-    apr_addto_bugger="-N128k -lunix"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-qnx32)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DQNX\""
-    CPPFLAGS="-DQNX"
-  else
-    apr_addto_bugger="-DQNX"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-mf -3\""
-    CFLAGS="-mf -3"
-  else
-    apr_addto_bugger="-mf -3"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-N128k -lunix\""
-    LIBS="-N128k -lunix"
-  else
-    apr_addto_bugger="-N128k -lunix"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-isc4*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-posix -DISC\""
-    CPPFLAGS="-posix -DISC"
-  else
-    apr_addto_bugger="-posix -DISC"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-posix\""
-    LDFLAGS="-posix"
-  else
-    apr_addto_bugger="-posix"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-linet\""
-    LIBS="-linet"
-  else
-    apr_addto_bugger="-linet"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sco3.2v[234]*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSCO -D_REENTRANT\""
-    CPPFLAGS="-DSCO -D_REENTRANT"
-  else
-    apr_addto_bugger="-DSCO -D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	if test "$GCC" = "no"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Oacgiltz\""
-    CFLAGS="-Oacgiltz"
-  else
-    apr_addto_bugger="-Oacgiltz"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-	fi
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lPW -lmalloc\""
-    LIBS="-lPW -lmalloc"
-  else
-    apr_addto_bugger="-lPW -lmalloc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sco3.2v5*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSCO5 -D_REENTRANT\""
-    CPPFLAGS="-DSCO5 -D_REENTRANT"
-  else
-    apr_addto_bugger="-DSCO5 -D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sco_sv*|*-SCO_SV*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSCO -D_REENTRANT\""
-    CPPFLAGS="-DSCO -D_REENTRANT"
-  else
-    apr_addto_bugger="-DSCO -D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lPW -lmalloc\""
-    LIBS="-lPW -lmalloc"
-  else
-    apr_addto_bugger="-lPW -lmalloc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-solaris2*)
-    	PLATOSVERS=`echo $host | sed 's/^.*solaris2.//'`
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT\""
-    CPPFLAGS="-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT"
-  else
-    apr_addto_bugger="-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        if test $PLATOSVERS -ge 10; then
-
-  if test -z "$apr_lock_method"; then
-    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_PROC_PTHREAD_SERIALIZE\""
-    apr_lock_method="USE_PROC_PTHREAD_SERIALIZE"
-  fi
-
-        else
-
-  if test -z "$apr_lock_method"; then
-    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_FCNTL_SERIALIZE\""
-    apr_lock_method="USE_FCNTL_SERIALIZE"
-  fi
-
-        fi
-        # readdir64_r error handling seems broken on Solaris (at least
-        # up till 2.8) -- it will return -1 at end-of-directory.
-
-  if test -z "$ac_cv_func_readdir64_r"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_readdir64_r to \"no\""
-    ac_cv_func_readdir64_r="no"
-  fi
-
-	;;
-    *-sunos4*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSUNOS4\""
-    CPPFLAGS="-DSUNOS4"
-  else
-    apr_addto_bugger="-DSUNOS4"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-unixware1)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=100\""
-    CPPFLAGS="-DUW=100"
-  else
-    apr_addto_bugger="-DUW=100"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-unixware2)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=200\""
-    CPPFLAGS="-DUW=200"
-  else
-    apr_addto_bugger="-DUW=200"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
-    LIBS="-lgen"
-  else
-    apr_addto_bugger="-lgen"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-unixware211)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=211\""
-    CPPFLAGS="-DUW=211"
-  else
-    apr_addto_bugger="-DUW=211"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
-    LIBS="-lgen"
-  else
-    apr_addto_bugger="-lgen"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-unixware212)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=212\""
-    CPPFLAGS="-DUW=212"
-  else
-    apr_addto_bugger="-DUW=212"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
-    LIBS="-lgen"
-  else
-    apr_addto_bugger="-lgen"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-unixware7)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=700\""
-    CPPFLAGS="-DUW=700"
-  else
-    apr_addto_bugger="-DUW=700"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
-    LIBS="-lgen"
-  else
-    apr_addto_bugger="-lgen"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    maxion-*-sysv4*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
-    CPPFLAGS="-DSVR4"
-  else
-    apr_addto_bugger="-DSVR4"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -lgen\""
-    LIBS="-lc -lgen"
-  else
-    apr_addto_bugger="-lc -lgen"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-*-powermax*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
-    CPPFLAGS="-DSVR4"
-  else
-    apr_addto_bugger="-DSVR4"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
-    LIBS="-lgen"
-  else
-    apr_addto_bugger="-lgen"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    TPF)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DTPF -D_POSIX_SOURCE\""
-    CPPFLAGS="-DTPF -D_POSIX_SOURCE"
-  else
-    apr_addto_bugger="-DTPF -D_POSIX_SOURCE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-       ;;
-    bs2000*-siemens-sysv*)
-
-  if test -z "$CFLAGS"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
-    CFLAGS="-O"
-  fi
-
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -D_XPG_IV -D_KMEMUSER\""
-    CPPFLAGS="-DSVR4 -D_XPG_IV -D_KMEMUSER"
-  else
-    apr_addto_bugger="-DSVR4 -D_XPG_IV -D_KMEMUSER"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lsocket\""
-    LIBS="-lsocket"
-  else
-    apr_addto_bugger="-lsocket"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-
-  if test -z "$enable_threads"; then
-    test "x$silent" != "xyes" && echo "  setting enable_threads to \"no\""
-    enable_threads="no"
-  fi
-
-	;;
-    *-siemens-sysv4*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT\""
-    CPPFLAGS="-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT"
-  else
-    apr_addto_bugger="-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
-    LIBS="-lc"
-  else
-    apr_addto_bugger="-lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    pyramid-pyramid-svr4)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DNO_LONG_DOUBLE\""
-    CPPFLAGS="-DSVR4 -DNO_LONG_DOUBLE"
-  else
-    apr_addto_bugger="-DSVR4 -DNO_LONG_DOUBLE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
-    LIBS="-lc"
-  else
-    apr_addto_bugger="-lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    DS/90\ 7000-*-sysv4*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUXPDS\""
-    CPPFLAGS="-DUXPDS"
-  else
-    apr_addto_bugger="-DUXPDS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-tandem-sysv4*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
-    CPPFLAGS="-DSVR4"
-  else
-    apr_addto_bugger="-DSVR4"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-ncr-sysv4)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DMPRAS\""
-    CPPFLAGS="-DSVR4 -DMPRAS"
-  else
-    apr_addto_bugger="-DSVR4 -DMPRAS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -L/usr/ucblib -lucb\""
-    LIBS="-lc -L/usr/ucblib -lucb"
-  else
-    apr_addto_bugger="-lc -L/usr/ucblib -lucb"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sysv4*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
-    CPPFLAGS="-DSVR4"
-  else
-    apr_addto_bugger="-DSVR4"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
-    LIBS="-lc"
-  else
-    apr_addto_bugger="-lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    88k-encore-sysv4)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DENCORE\""
-    CPPFLAGS="-DSVR4 -DENCORE"
-  else
-    apr_addto_bugger="-DSVR4 -DENCORE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lPW\""
-    LIBS="-lPW"
-  else
-    apr_addto_bugger="-lPW"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-uts*)
-	PLATOSVERS=`echo $host | sed 's/^.*,//'`
-	case $PLATOSVERS in
-	    2*)
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUTS21\""
-    CPPFLAGS="-DUTS21"
-  else
-    apr_addto_bugger="-DUTS21"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Xa -eft\""
-    CFLAGS="-Xa -eft"
-  else
-    apr_addto_bugger="-Xa -eft"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbsd -la\""
-    LIBS="-lbsd -la"
-  else
-    apr_addto_bugger="-lbsd -la"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	        ;;
-	    *)
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
-    CPPFLAGS="-DSVR4"
-  else
-    apr_addto_bugger="-DSVR4"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Xa\""
-    CFLAGS="-Xa"
-  else
-    apr_addto_bugger="-Xa"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-	        ;;
-	esac
-	;;
-    *-ultrix)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DULTRIX\""
-    CPPFLAGS="-DULTRIX"
-  else
-    apr_addto_bugger="-DULTRIX"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  test "x$silent" != "xyes" && echo "  forcing SHELL to \"/bin/sh5\""
-  SHELL="/bin/sh5"
-
-	;;
-    *powerpc-tenon-machten*)
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Xlstack=0x14000 -Xldelcsect\""
-    LDFLAGS="-Xlstack=0x14000 -Xldelcsect"
-  else
-    apr_addto_bugger="-Xlstack=0x14000 -Xldelcsect"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-machten*)
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-stack 0x14000\""
-    LDFLAGS="-stack 0x14000"
-  else
-    apr_addto_bugger="-stack 0x14000"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *convex-v11*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DCONVEXOS11\""
-    CPPFLAGS="-DCONVEXOS11"
-  else
-    apr_addto_bugger="-DCONVEXOS11"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test -z "$CFLAGS"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O1\""
-    CFLAGS="-O1"
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-ext\""
-    CFLAGS="-ext"
-  else
-    apr_addto_bugger="-ext"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    i860-intel-osf1)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DPARAGON\""
-    CPPFLAGS="-DPARAGON"
-  else
-    apr_addto_bugger="-DPARAGON"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sequent-ptx2.*.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=20\""
-    CPPFLAGS="-DSEQUENT=20"
-  else
-    apr_addto_bugger="-DSEQUENT=20"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
-    CFLAGS="-Wc,-pw"
-  else
-    apr_addto_bugger="-Wc,-pw"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-linet -lc -lseq\""
-    LIBS="-linet -lc -lseq"
-  else
-    apr_addto_bugger="-linet -lc -lseq"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sequent-ptx4.0.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=40\""
-    CPPFLAGS="-DSEQUENT=40"
-  else
-    apr_addto_bugger="-DSEQUENT=40"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
-    CFLAGS="-Wc,-pw"
-  else
-    apr_addto_bugger="-Wc,-pw"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-linet -lc\""
-    LIBS="-linet -lc"
-  else
-    apr_addto_bugger="-linet -lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sequent-ptx4.[123].*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=41\""
-    CPPFLAGS="-DSEQUENT=41"
-  else
-    apr_addto_bugger="-DSEQUENT=41"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
-    CFLAGS="-Wc,-pw"
-  else
-    apr_addto_bugger="-Wc,-pw"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
-    LIBS="-lc"
-  else
-    apr_addto_bugger="-lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sequent-ptx4.4.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=44\""
-    CPPFLAGS="-DSEQUENT=44"
-  else
-    apr_addto_bugger="-DSEQUENT=44"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
-    CFLAGS="-Wc,-pw"
-  else
-    apr_addto_bugger="-Wc,-pw"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
-    LIBS="-lc"
-  else
-    apr_addto_bugger="-lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sequent-ptx4.5.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=45\""
-    CPPFLAGS="-DSEQUENT=45"
-  else
-    apr_addto_bugger="-DSEQUENT=45"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
-    CFLAGS="-Wc,-pw"
-  else
-    apr_addto_bugger="-Wc,-pw"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
-    LIBS="-lc"
-  else
-    apr_addto_bugger="-lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-sequent-ptx5.0.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=50\""
-    CPPFLAGS="-DSEQUENT=50"
-  else
-    apr_addto_bugger="-DSEQUENT=50"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
-    CFLAGS="-Wc,-pw"
-  else
-    apr_addto_bugger="-Wc,-pw"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
-    LIBS="-lc"
-  else
-    apr_addto_bugger="-lc"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    *NEWS-OS*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNEWSOS\""
-    CPPFLAGS="-DNEWSOS"
-  else
-    apr_addto_bugger="-DNEWSOS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-riscix)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DRISCIX\""
-    CPPFLAGS="-DRISCIX"
-  else
-    apr_addto_bugger="-DRISCIX"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test -z "$CFLAGS"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
-    CFLAGS="-O"
-  fi
-
-	;;
-    *-irix*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_POSIX_THREAD_SAFE_FUNCTIONS\""
-    CPPFLAGS="-D_POSIX_THREAD_SAFE_FUNCTIONS"
-  else
-    apr_addto_bugger="-D_POSIX_THREAD_SAFE_FUNCTIONS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *beos*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DBEOS\""
-    CPPFLAGS="-DBEOS"
-  else
-    apr_addto_bugger="-DBEOS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        PLATOSVERS=`uname -r`
-
-  if test -z "$apr_process_lock_is_global"; then
-    test "x$silent" != "xyes" && echo "  setting apr_process_lock_is_global to \"yes\""
-    apr_process_lock_is_global="yes"
-  fi
-
-        case $PLATOSVERS in
-            5.0.4)
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-L/boot/beos/system/lib\""
-    LDFLAGS="-L/boot/beos/system/lib"
-  else
-    apr_addto_bugger="-L/boot/beos/system/lib"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbind -lsocket\""
-    LIBS="-lbind -lsocket"
-  else
-    apr_addto_bugger="-lbind -lsocket"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DBONE7\""
-    CPPFLAGS="-DBONE7"
-  else
-    apr_addto_bugger="-DBONE7"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-                ;;
-            5.1)
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-L/boot/beos/system/lib\""
-    LDFLAGS="-L/boot/beos/system/lib"
-  else
-    apr_addto_bugger="-L/boot/beos/system/lib"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbind -lsocket\""
-    LIBS="-lbind -lsocket"
-  else
-    apr_addto_bugger="-lbind -lsocket"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-                ;;
-	esac
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSIGPROCMASK_SETS_THREAD_MASK\""
-    CPPFLAGS="-DSIGPROCMASK_SETS_THREAD_MASK"
-  else
-    apr_addto_bugger="-DSIGPROCMASK_SETS_THREAD_MASK"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        ;;
-    4850-*.*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DMPRAS\""
-    CPPFLAGS="-DSVR4 -DMPRAS"
-  else
-    apr_addto_bugger="-DSVR4 -DMPRAS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -L/usr/ucblib -lucb\""
-    LIBS="-lc -L/usr/ucblib -lucb"
-  else
-    apr_addto_bugger="-lc -L/usr/ucblib -lucb"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    drs6000*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
-    CPPFLAGS="-DSVR4"
-  else
-    apr_addto_bugger="-DSVR4"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -L/usr/ucblib -lucb\""
-    LIBS="-lc -L/usr/ucblib -lucb"
-  else
-    apr_addto_bugger="-lc -L/usr/ucblib -lucb"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-	;;
-    m88k-*-CX/SX|CYBER)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_CX_SX\""
-    CPPFLAGS="-D_CX_SX"
-  else
-    apr_addto_bugger="-D_CX_SX"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Xa\""
-    CFLAGS="-Xa"
-  else
-    apr_addto_bugger="-Xa"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-tandem-oss)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1\""
-    CPPFLAGS="-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
-  else
-    apr_addto_bugger="-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *-ibm-os390)
-
-  if test -z "$apr_lock_method"; then
-    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_SYSVSEM_SERIALIZE\""
-    apr_lock_method="USE_SYSVSEM_SERIALIZE"
-  fi
-
-
-  if test -z "$apr_sysvsem_is_global"; then
-    test "x$silent" != "xyes" && echo "  setting apr_sysvsem_is_global to \"yes\""
-    apr_sysvsem_is_global="yes"
-  fi
-
-
-  if test -z "$apr_gethostbyname_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_gethostbyname_is_thread_safe to \"yes\""
-    apr_gethostbyname_is_thread_safe="yes"
-  fi
-
-
-  if test -z "$apr_gethostbyaddr_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_gethostbyaddr_is_thread_safe to \"yes\""
-    apr_gethostbyaddr_is_thread_safe="yes"
-  fi
-
-
-  if test -z "$apr_getservbyname_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_getservbyname_is_thread_safe to \"yes\""
-    apr_getservbyname_is_thread_safe="yes"
-  fi
-
-
-$as_echo "#define HAVE_ZOS_PTHREADS 1" >>confdefs.h
-
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1\""
-    CPPFLAGS="-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1"
-  else
-    apr_addto_bugger="-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-        ;;
-    *-ibm-as400)
-
-  if test -z "$apr_lock_method"; then
-    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_SYSVSEM_SERIALIZE\""
-    apr_lock_method="USE_SYSVSEM_SERIALIZE"
-  fi
-
-
-  if test -z "$apr_process_lock_is_global"; then
-    test "x$silent" != "xyes" && echo "  setting apr_process_lock_is_global to \"yes\""
-    apr_process_lock_is_global="yes"
-  fi
-
-
-  if test -z "$apr_gethostbyname_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_gethostbyname_is_thread_safe to \"yes\""
-    apr_gethostbyname_is_thread_safe="yes"
-  fi
-
-
-  if test -z "$apr_gethostbyaddr_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_gethostbyaddr_is_thread_safe to \"yes\""
-    apr_gethostbyaddr_is_thread_safe="yes"
-  fi
-
-
-  if test -z "$apr_getservbyname_is_thread_safe"; then
-    test "x$silent" != "xyes" && echo "  setting apr_getservbyname_is_thread_safe to \"yes\""
-    apr_getservbyname_is_thread_safe="yes"
-  fi
-
-        ;;
-    *cygwin*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DCYGWIN\""
-    CPPFLAGS="-DCYGWIN"
-  else
-    apr_addto_bugger="-DCYGWIN"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-	;;
-    *mingw*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DWIN32 -D__MSVCRT__\""
-    CPPFLAGS="-DWIN32 -D__MSVCRT__"
-  else
-    apr_addto_bugger="-DWIN32 -D__MSVCRT__"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Wl,--enable-auto-import,--subsystem,console\""
-    LDFLAGS="-Wl,--enable-auto-import,--subsystem,console"
-  else
-    apr_addto_bugger="-Wl,--enable-auto-import,--subsystem,console"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test -z "$have_unicode_fs"; then
-    test "x$silent" != "xyes" && echo "  setting have_unicode_fs to \"1\""
-    have_unicode_fs="1"
-  fi
-
-
-  if test -z "$have_proc_invoked"; then
-    test "x$silent" != "xyes" && echo "  setting have_proc_invoked to \"1\""
-    have_proc_invoked="1"
-  fi
-
-
-  if test -z "$apr_lock_method"; then
-    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"win32\""
-    apr_lock_method="win32"
-  fi
-
-
-  if test -z "$apr_process_lock_is_global"; then
-    test "x$silent" != "xyes" && echo "  setting apr_process_lock_is_global to \"yes\""
-    apr_process_lock_is_global="yes"
-  fi
-
-
-  if test -z "$apr_cv_use_lfs64"; then
-    test "x$silent" != "xyes" && echo "  setting apr_cv_use_lfs64 to \"yes\""
-    apr_cv_use_lfs64="yes"
-  fi
-
-
-  if test -z "$apr_cv_osuuid"; then
-    test "x$silent" != "xyes" && echo "  setting apr_cv_osuuid to \"yes\""
-    apr_cv_osuuid="yes"
-  fi
-
-
-  if test -z "$apr_cv_tcp_nodelay_with_cork"; then
-    test "x$silent" != "xyes" && echo "  setting apr_cv_tcp_nodelay_with_cork to \"no\""
-    apr_cv_tcp_nodelay_with_cork="no"
-  fi
-
-
-  if test -z "$apr_thread_func"; then
-    test "x$silent" != "xyes" && echo "  setting apr_thread_func to \"__stdcall\""
-    apr_thread_func="__stdcall"
-  fi
-
-
-  if test -z "$ac_cv_o_nonblock_inherited"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_o_nonblock_inherited to \"yes\""
-    ac_cv_o_nonblock_inherited="yes"
-  fi
-
-
-  if test -z "$ac_cv_tcp_nodelay_inherited"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_tcp_nodelay_inherited to \"yes\""
-    ac_cv_tcp_nodelay_inherited="yes"
-  fi
-
-
-  if test -z "$ac_cv_file__dev_zero"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_file__dev_zero to \"no\""
-    ac_cv_file__dev_zero="no"
-  fi
-
-
-  if test -z "$ac_cv_func_setpgrp_void"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_setpgrp_void to \"no\""
-    ac_cv_func_setpgrp_void="no"
-  fi
-
-
-  if test -z "$ac_cv_func_mmap"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_mmap to \"yes\""
-    ac_cv_func_mmap="yes"
-  fi
-
-
-  if test -z "$ac_cv_define_sockaddr_in6"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_define_sockaddr_in6 to \"yes\""
-    ac_cv_define_sockaddr_in6="yes"
-  fi
-
-
-  if test -z "$ac_cv_working_getaddrinfo"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_working_getaddrinfo to \"yes\""
-    ac_cv_working_getaddrinfo="yes"
-  fi
-
-
-  if test -z "$ac_cv_working_getnameinfo"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_working_getnameinfo to \"yes\""
-    ac_cv_working_getnameinfo="yes"
-  fi
-
-
-  if test -z "$ac_cv_func_gai_strerror"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_gai_strerror to \"yes\""
-    ac_cv_func_gai_strerror="yes"
-  fi
-
-        case $host in
-            *mingw32*)
-
-  if test -z "$apr_has_xthread_files"; then
-    test "x$silent" != "xyes" && echo "  setting apr_has_xthread_files to \"1\""
-    apr_has_xthread_files="1"
-  fi
-
-
-  if test -z "$apr_has_user"; then
-    test "x$silent" != "xyes" && echo "  setting apr_has_user to \"1\""
-    apr_has_user="1"
-  fi
-
-
-  if test -z "$apr_procattr_user_set_requires_password"; then
-    test "x$silent" != "xyes" && echo "  setting apr_procattr_user_set_requires_password to \"1\""
-    apr_procattr_user_set_requires_password="1"
-  fi
-
-
-  if test -z "$ac_cv_func_sendfile"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_sendfile to \"yes\""
-    ac_cv_func_sendfile="yes"
-  fi
-
-                ;;
-            *mingwce)
-
-  if test -z "$apr_has_xthread_files"; then
-    test "x$silent" != "xyes" && echo "  setting apr_has_xthread_files to \"0\""
-    apr_has_xthread_files="0"
-  fi
-
-
-  if test -z "$apr_has_user"; then
-    test "x$silent" != "xyes" && echo "  setting apr_has_user to \"0\""
-    apr_has_user="0"
-  fi
-
-
-  if test -z "$apr_procattr_user_set_requires_password"; then
-    test "x$silent" != "xyes" && echo "  setting apr_procattr_user_set_requires_password to \"0\""
-    apr_procattr_user_set_requires_password="0"
-  fi
-
-
-  if test -z "$ac_cv_func_sendfile"; then
-    test "x$silent" != "xyes" && echo "  setting ac_cv_func_sendfile to \"no\""
-    ac_cv_func_sendfile="no"
-  fi
-
-                ;;
-        esac
-        ;;
-  esac
-
-fi
-
-
-DEFAULT_OSDIR="unix"
-echo "(Default will be ${DEFAULT_OSDIR})"
-
-apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Extract the first word of "rm", so it can be a program name with args.
-set dummy rm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RM"; then
-  ac_cv_prog_RM="$RM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RM="rm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RM=$ac_cv_prog_RM
-if test -n "$RM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
-$as_echo "$RM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AS="as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "cpp", so it can be a program name with args.
-set dummy cpp; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ASCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ASCPP"; then
-  ac_cv_prog_ASCPP="$ASCPP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ASCPP="cpp"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ASCPP=$ac_cv_prog_ASCPP
-if test -n "$ASCPP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ASCPP" >&5
-$as_echo "$ASCPP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="ar"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
-  MINIX=yes
-else
-  MINIX=
-fi
-
-
-  if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#         define __EXTENSIONS__ 1
-          $ac_includes_default
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
-$as_echo_n "checking for library containing strerror... " >&6; }
-if ${ac_cv_search_strerror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char strerror ();
-int
-main ()
-{
-return strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' cposix; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_strerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_strerror+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_strerror+:} false; then :
-
-else
-  ac_cv_search_strerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
-$as_echo "$ac_cv_search_strerror" >&6; }
-ac_res=$ac_cv_search_strerror
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system uses EBCDIC" >&5
-$as_echo_n "checking whether system uses EBCDIC... " >&6; }
-if ${ac_cv_ebcdic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-
-  ac_cv_ebcdic="no"
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int main(void) {
-  return (unsigned char)'A' != (unsigned char)0xC1;
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-  ac_cv_ebcdic="yes"
-
-else
-
-  ac_cv_ebcdic="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ebcdic" >&5
-$as_echo "$ac_cv_ebcdic" >&6; }
-  if test "$ac_cv_ebcdic" = "yes"; then
-    apr_charset_ebcdic=1
-  else
-    apr_charset_ebcdic=0
-  fi
-
-
-
-APR_LIBNAME="apr${libsuffix}"
-
-
-echo "performing libtool configuration..."
-
-# Check whether --enable-experimental-libtool was given.
-if test "${enable_experimental_libtool+set}" = set; then :
-  enableval=$enable_experimental_libtool; experimental_libtool=$enableval
-else
-  experimental_libtool=no
-fi
-
-
-if test "x$Xsed" = "x"; then
-  Xsed="$SED -e 1s/^X//"
-fi
-
-case $host in
-*-os2*)
-    # Use a custom-made libtool replacement
-    echo "using aplibtool"
-    LIBTOOL="$srcdir/build/aplibtool"
-    gcc $CFLAGS $CPPFLAGS -o $LIBTOOL.exe $LIBTOOL.c
-    ;;
-*)
-    if test "x$LTFLAGS" = "x"; then
-        LTFLAGS='--silent'
-    fi
-    if test "$experimental_libtool" = "yes"; then
-        # Use a custom-made libtool replacement
-        echo "using jlibtool"
-        LIBTOOL="$apr_builddir/libtool"
-        LIBTOOL_SRC="$apr_srcdir/build/jlibtool.c"
-        $CC $CFLAGS $CPPFLAGS -o $LIBTOOL $LIBTOOL_SRC
-        eval `$apr_builddir/libtool --config | grep "^shlibpath_var=[A-Z_]*$"`
-        if test "x$shlibpath_var" = "x"; then
-            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
-        fi
-    else
-        enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AS="as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AS" = x; then
-    AS="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AS=$ac_ct_AS
-  fi
-else
-  AS="$ac_cv_prog_AS"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-  ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&5
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(apr_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl='-Wl,-Wl,,'
-	lt_prog_compiler_pic='-PIC'
-	lt_prog_compiler_static='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fPIC'
-	  lt_prog_compiler_static='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fpic'
-	  lt_prog_compiler_static='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec='$convenience'
-	  fi
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	always_export_symbols=yes
-	file_list_spec='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-	enable_shared_with_static_runtimes=yes
-	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds='chmod 644 $oldlib'
-	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-        # get libtool's setting of shlibpath_var
-        eval `grep "^shlibpath_var=[A-Z_]*$" $apr_builddir/libtool`
-        if test "x$shlibpath_var" = "x"; then
-            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
-        fi
-    fi
-    ;;
-esac
-
-
-# Check whether --with-installbuilddir was given.
-if test "${with_installbuilddir+set}" = set; then :
-  withval=$with_installbuilddir;  installbuilddir=$withval
-else
-   installbuilddir="${datadir}/build-${APR_MAJOR_VERSION}"
-fi
-
-
-
-
-# Check whether --with-libtool was given.
-if test "${with_libtool+set}" = set; then :
-  withval=$with_libtool;  use_libtool=$withval
-else
-   use_libtool="yes"
-fi
-
-
-if test "x$use_libtool" = "xyes"; then
-      lt_compile='$(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -o $@ -c $< && touch $@'
-      LT_VERSION="-version-info `$get_version libtool $version_hdr APR`"
-      link="\$(LIBTOOL) \$(LTFLAGS) --mode=link \$(LT_LDFLAGS) \$(COMPILE) \$(LT_VERSION) \$(ALL_LDFLAGS) -o \$@"
-      so_ext='lo'
-      lib_target='-rpath $(libdir) $(OBJECTS)'
-      export_lib_target='-rpath \$(libdir) \$(OBJECTS)'
-else
-      lt_compile='$(COMPILE) -o $@ -c $<'
-      link='$(AR) cr $(TARGET_LIB) $(OBJECTS); $(RANLIB) $(TARGET_LIB)'
-      so_ext='o'
-      lib_target=''
-      export_lib_target=''
-fi
-
-case $host in
-    *-solaris2*)
-        apr_platform_runtime_link_flag="-R"
-        ;;
-    *)
-        ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-nl='
-'
-echo "${nl}Check for compiler flags..."
-
-
-case $host in
-    *os390)
-        if test "$ac_test_CFLAGS" != set; then
-
-  if test "x$CFLAGS" = "x-g"; then
-    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
-    CFLAGS=""
-  else
-    apr_new_bugger=""
-    apr_removed=0
-    for i in $CFLAGS; do
-      if test "x$i" != "x-g"; then
-        apr_new_bugger="$apr_new_bugger $i"
-      else
-        apr_removed=1
-      fi
-    done
-    if test $apr_removed = "1"; then
-      test "x$silent" != "xyes" && echo "  removed \"-g\" from CFLAGS"
-      CFLAGS=$apr_new_bugger
-    fi
-  fi
-
-        fi
-        ;;
-esac
-
-# Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then :
-  enableval=$enable_debug;
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-g\""
-    CFLAGS="-g"
-  else
-    apr_addto_bugger="-g"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   if test "$GCC" = "yes"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wall\""
-    CFLAGS="-Wall"
-  else
-    apr_addto_bugger="-Wall"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   elif test "$AIX_XLC" = "yes"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-qfullpath\""
-    CFLAGS="-qfullpath"
-  else
-    apr_addto_bugger="-qfullpath"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   fi
-
-fi
-
-# Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
-  enableval=$enable_maintainer_mode;
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-g\""
-    CFLAGS="-g"
-  else
-    apr_addto_bugger="-g"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   if test "$GCC" = "yes"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations\""
-    CFLAGS="-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations"
-  else
-    apr_addto_bugger="-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   elif test "$AIX_XLC" = "yes"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro\""
-    CFLAGS="-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro"
-  else
-    apr_addto_bugger="-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   fi
-
-fi
-
-# Check whether --enable-profile was given.
-if test "${enable_profile+set}" = set; then :
-  enableval=$enable_profile; if test "$GCC" = "yes"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-pg\""
-    CFLAGS="-pg"
-  else
-    apr_addto_bugger="-pg"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x-g"; then
-    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
-    CFLAGS=""
-  else
-    apr_new_bugger=""
-    apr_removed=0
-    for i in $CFLAGS; do
-      if test "x$i" != "x-g"; then
-        apr_new_bugger="$apr_new_bugger $i"
-      else
-        apr_removed=1
-      fi
-    done
-    if test $apr_removed = "1"; then
-      test "x$silent" != "xyes" && echo "  removed \"-g\" from CFLAGS"
-      CFLAGS=$apr_new_bugger
-    fi
-  fi
-
-    if test "$host" = "i586-pc-beos"; then
-
-  if test "x$CFLAGS" = "x-O2"; then
-    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
-    CFLAGS=""
-  else
-    apr_new_bugger=""
-    apr_removed=0
-    for i in $CFLAGS; do
-      if test "x$i" != "x-O2"; then
-        apr_new_bugger="$apr_new_bugger $i"
-      else
-        apr_removed=1
-      fi
-    done
-    if test $apr_removed = "1"; then
-      test "x$silent" != "xyes" && echo "  removed \"-O2\" from CFLAGS"
-      CFLAGS=$apr_new_bugger
-    fi
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O1\""
-    CFLAGS="-O1"
-  else
-    apr_addto_bugger="-O1"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-p\""
-    LDFLAGS="-p"
-  else
-    apr_addto_bugger="-p"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-    fi
-  fi
-
-fi
-
-# Check whether --enable-pool-debug was given.
-if test "${enable_pool_debug+set}" = set; then :
-  enableval=$enable_pool_debug;  if test -z "$enableval"; then
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAPR_POOL_DEBUG=1\""
-    CPPFLAGS="-DAPR_POOL_DEBUG=1"
-  else
-    apr_addto_bugger="-DAPR_POOL_DEBUG=1"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-    elif test ! "$enableval" = "no"; then
-        apr_pool_debug=1
-
-        for i in $enableval
-        do
-            flag=0
-
-            case $i in
-            yes)
-                flag=1
-                ;;
-            verbose)
-                flag=2
-                ;;
-            lifetime)
-                flag=4
-                ;;
-            owner)
-                flag=8
-                ;;
-            verbose-alloc)
-                flag=16
-                ;;
-            all)
-                apr_pool_debug=31
-                ;;
-            *)
-                ;;
-            esac
-
-            if test $flag -gt 0; then
-                apr_pool_debug=`expr '(' $apr_pool_debug - $apr_pool_debug % \
-                    '(' $flag '*' 2 ')' ')' + $flag + $apr_pool_debug % $flag`
-            fi
-        done
-
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAPR_POOL_DEBUG=$apr_pool_debug\""
-    CPPFLAGS="-DAPR_POOL_DEBUG=$apr_pool_debug"
-  else
-    apr_addto_bugger="-DAPR_POOL_DEBUG=$apr_pool_debug"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-    fi
-
-fi
-
-
-if test "$host" = "i586-pc-beos"; then
-  # Check whether --enable-malloc-debug was given.
-if test "${enable_malloc_debug+set}" = set; then :
-  enableval=$enable_malloc_debug;
-  if test "x$CFLAGS" = "x-O2"; then
-    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
-    CFLAGS=""
-  else
-    apr_new_bugger=""
-    apr_removed=0
-    for i in $CFLAGS; do
-      if test "x$i" != "x-O2"; then
-        apr_new_bugger="$apr_new_bugger $i"
-      else
-        apr_removed=1
-      fi
-    done
-    if test $apr_removed = "1"; then
-      test "x$silent" != "xyes" && echo "  removed \"-O2\" from CFLAGS"
-      CFLAGS=$apr_new_bugger
-    fi
-  fi
-
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-fcheck-memory-usage -D_KERNEL_MODE\""
-    CPPFLAGS="-fcheck-memory-usage -D_KERNEL_MODE"
-  else
-    apr_addto_bugger="-fcheck-memory-usage -D_KERNEL_MODE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-fi
- fi
-
-# this is the place to put specific options for platform/compiler
-# combinations
-case "$host:$CC" in
-    *-hp-hpux*:cc )
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Ae +Z\""
-    CFLAGS="-Ae +Z"
-  else
-    apr_addto_bugger="-Ae +Z"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-	case $host in
-	  ia64-* )
-	    ;;
-          * )
-	    if echo "$CFLAGS " | grep '+DA' >/dev/null; then :
-	    else
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"+DAportable\""
-    CFLAGS="+DAportable"
-  else
-    apr_addto_bugger="+DAportable"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-	    fi
-	    ;;
-        esac
-	;;
-    powerpc-*-beos:mwcc* )
-
-  test "x$silent" != "xyes" && echo "  forcing CPP to \"mwcc -E\""
-  CPP="mwcc -E"
-
-
-  test "x$silent" != "xyes" && echo "  forcing CC to \"mwcc\""
-  CC="mwcc"
-
-
-  test "x$silent" != "xyes" && echo "  forcing AR to \"ar\""
-  AR="ar"
-
-	;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler provides atomic builtins" >&5
-$as_echo_n "checking whether the compiler provides atomic builtins... " >&6; }
-if ${ap_cv_atomic_builtins+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ap_cv_atomic_builtins=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int main()
-{
-    unsigned long val = 1010, tmp, *mem = &val;
-
-    if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
-        return 1;
-
-    tmp = val;
-
-    if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
-        return 1;
-
-    if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
-        return 1;
-
-    tmp = 3030;
-
-    if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
-        return 1;
-
-    if (__sync_lock_test_and_set(&val, 4040) != 3030)
-        return 1;
-
-    mem = &tmp;
-
-    if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
-        return 1;
-
-    __sync_synchronize();
-
-    if (mem != &val)
-        return 1;
-
-    return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ap_cv_atomic_builtins=yes
-else
-  ap_cv_atomic_builtins=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ap_cv_atomic_builtins" >&5
-$as_echo "$ap_cv_atomic_builtins" >&6; }
-
-if test "$ap_cv_atomic_builtins" = "yes"; then
-
-$as_echo "#define HAVE_ATOMIC_BUILTINS 1" >>confdefs.h
-
-fi
-
-case $host in
-    powerpc-405-*)
-        # The IBM ppc405cr processor has a bugged stwcx instruction.
-
-$as_echo "#define PPC405_ERRATA 1" >>confdefs.h
-
-        ;;
-    *)
-        ;;
-esac
-
-
-if test "$GCC" = "yes"; then
-  MKDEP='$(CC) -MM'
-else
-  rm -f conftest.c
-  cat > conftest.c <<EOF
-#include <sys/types.h>
-  int main() { return 0; }
-EOF
-  MKDEP="true"
-  for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $i can create proper make dependencies" >&5
-$as_echo_n "checking if $i can create proper make dependencies... " >&6; }
-    if $i conftest.c 2>/dev/null | grep 'conftest.o: conftest.c' >/dev/null; then
-      MKDEP=$i
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-      break;
-    fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  done
-  rm -f conftest.c
-fi
-
-
-
-
-proc_mutex_is_global=0
-
-config_subdirs="none"
-INSTALL_SUBDIRS="none"
-OBJECTS_PLATFORM='$(OBJECTS_unix)'
-
-case $host in
-   i386-ibm-aix* | *-ibm-aix[1-2].* | *-ibm-aix3.* | *-ibm-aix4.1 | *-ibm-aix4.1.* | *-ibm-aix4.2 | *-ibm-aix4.2.*)
-       OSDIR="aix"
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-lld\""
-    LDFLAGS="-lld"
-  else
-    apr_addto_bugger="-lld"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-       eolstr="\\n"
-       OBJECTS_PLATFORM='$(OBJECTS_aix)'
-       ;;
-   *-os2*)
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DOS2\""
-    CPPFLAGS="-DOS2"
-  else
-    apr_addto_bugger="-DOS2"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Zmt\""
-    CFLAGS="-Zmt"
-  else
-    apr_addto_bugger="-Zmt"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for random in -lbsd" >&5
-$as_echo_n "checking for random in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_random+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbsd  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char random ();
-int
-main ()
-{
-return random ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_bsd_random=yes
-else
-  ac_cv_lib_bsd_random=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_random" >&5
-$as_echo "$ac_cv_lib_bsd_random" >&6; }
-if test "x$ac_cv_lib_bsd_random" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBBSD 1
-_ACEOF
-
-  LIBS="-lbsd $LIBS"
-
-fi
-
-       OSDIR="os2"
-       enable_threads="system_threads"
-       eolstr="\\r\\n"
-       file_as_socket="0"
-       proc_mutex_is_global=1
-       OBJECTS_PLATFORM='$(OBJECTS_os2)'
-       ;;
-   *beos*)
-       OSDIR="beos"
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DBEOS\""
-    CPPFLAGS="-DBEOS"
-  else
-    apr_addto_bugger="-DBEOS"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-       enable_threads="system_threads"
-       native_mmap_emul="1"
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BONE_VERSION in sys/socket.h" >&5
-$as_echo_n "checking for BONE_VERSION in sys/socket.h... " >&6; }
-if ${ac_cv_define_BONE_VERSION+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/socket.h>
-#ifdef BONE_VERSION
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_BONE_VERSION=yes
-else
-  ac_cv_define_BONE_VERSION=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_BONE_VERSION" >&5
-$as_echo "$ac_cv_define_BONE_VERSION" >&6; }
-  if test "$ac_cv_define_BONE_VERSION" = "yes"; then
-
-$as_echo "#define HAVE_BONE_VERSION 1" >>confdefs.h
-
-  fi
-
-       eolstr="\\n"
-       osver=`uname -r`
-       proc_mutex_is_global=1
-       OBJECTS_PLATFORM='$(OBJECTS_beos)'
-       case $osver in
-          5.0.4)
-             file_as_socket="1"
-             ;;
-          *)
-             file_as_socket="0"
-             ;;
-       esac
-       ;;
-   *os390)
-       OSDIR="os390"
-       OBJECTS_PLATFORM='$(OBJECTS_os390)'
-       eolstr="\\n"
-       ;;
-   *os400)
-       OSDIR="as400"
-       eolstr="\\n"
-       ;;
-   *mingw*)
-       OSDIR="win32"
-       enable_threads="system_threads"
-       eolstr="\\r\\n"
-       file_as_socket=0
-       proc_mutex_is_global=1
-       OBJECTS_PLATFORM='$(OBJECTS_win32)'
-       ;;
-   *cygwin*)
-       OSDIR="unix"
-       enable_threads="no"
-       eolstr="\\n"
-       ;;
-   *hpux10* )
-       enable_threads="no"
-       OSDIR="unix"
-       eolstr="\\n"
-       ;;
-   *)
-       OSDIR="unix"
-       eolstr="\\n"
-       ;;
-esac
-
-
-
-# Check whether LFS has explicitly been disabled
-# Check whether --enable-lfs was given.
-if test "${enable_lfs+set}" = set; then :
-  enableval=$enable_lfs; apr_lfs_choice=$enableval
-else
-  apr_lfs_choice=yes
-fi
-
-
-if test "$apr_lfs_choice" = "yes"; then
-   # Check whether the transitional LFS API is sufficient
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable -D_LARGEFILE64_SOURCE" >&5
-$as_echo_n "checking whether to enable -D_LARGEFILE64_SOURCE... " >&6; }
-if ${apr_cv_use_lfs64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-   apr_save_CPPFLAGS=$CPPFLAGS
-   CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
-   if test "$cross_compiling" = yes; then :
-  apr_cv_use_lfs64=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-
-void main(void)
-{
-    int fd, ret = 0;
-    struct stat64 st;
-    off64_t off = 4242;
-
-    if (sizeof(off64_t) != 8 || sizeof(off_t) != 4)
-       exit(1);
-    if ((fd = open("conftest.lfs", O_LARGEFILE|O_CREAT|O_WRONLY, 0644)) < 0)
-       exit(2);
-    if (ftruncate64(fd, off) != 0)
-       ret = 3;
-    else if (fstat64(fd, &st) != 0 || st.st_size != off)
-       ret = 4;
-    else if (lseek64(fd, off, SEEK_SET) != off)
-       ret = 5;
-    else if (close(fd) != 0)
-       ret = 6;
-    else if (lstat64("conftest.lfs", &st) != 0 || st.st_size != off)
-       ret = 7;
-    else if (stat64("conftest.lfs", &st) != 0 || st.st_size != off)
-       ret = 8;
-    unlink("conftest.lfs");
-
-    exit(ret);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_use_lfs64=yes
-else
-  apr_cv_use_lfs64=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-   CPPFLAGS=$apr_save_CPPFLAGS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_use_lfs64" >&5
-$as_echo "$apr_cv_use_lfs64" >&6; }
-   if test "$apr_cv_use_lfs64" = "yes"; then
-
-  if test "x$CPPFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_LARGEFILE64_SOURCE\""
-    CPPFLAGS="-D_LARGEFILE64_SOURCE"
-  else
-    apr_addto_bugger="-D_LARGEFILE64_SOURCE"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CPPFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $i"
-      fi
-    done
-  fi
-
-   fi
-fi
-
-# Check whether --enable-nonportable-atomics was given.
-if test "${enable_nonportable_atomics+set}" = set; then :
-  enableval=$enable_nonportable_atomics; if test $enableval = yes; then
-   force_generic_atomics=no
- else
-   force_generic_atomics=yes
- fi
-
-else
-  case $host_cpu in
-   i[456]86) force_generic_atomics=yes ;;
-   *) force_generic_atomics=no ;;
-esac
-
-fi
-
-
-if test $force_generic_atomics = yes; then
-
-$as_echo "#define USE_ATOMICS_GENERIC 1" >>confdefs.h
-
-fi
-
-
-
-
-
-# For some platforms we need a version string which allows easy numeric
-# comparisons.
-case $host in
-    *freebsd*)
-        if test -x /sbin/sysctl; then
-            os_version=`/sbin/sysctl -n kern.osreldate`
-        else
-            os_version=000000
-        fi
-        ;;
-    *linux*)
-        os_version=`uname -r | sed -e 's/\(.\)\.\(.\)\.\(.\).*/\1\2\3/'`
-        ;;
-    *os390)
-        os_version=`uname -r | sed -e 's/\.//g'`
-        ;;
-    *)
-        os_version=OS_VERSION_IS_NOT_SET
-        ;;
-esac
-
-echo "${nl}Checking for libraries..."
-
-case $host in
-   *mingw*)
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock\""
-    LIBS="-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock"
-  else
-    apr_addto_bugger="-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-      ac_cv_func_CreateFileMapping=yes
-      ;;
-   *)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
-$as_echo_n "checking for library containing gethostbyname... " >&6; }
-if ${ac_cv_search_gethostbyname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' nsl; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_gethostbyname=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_gethostbyname+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_gethostbyname+:} false; then :
-
-else
-  ac_cv_search_gethostbyname=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
-$as_echo "$ac_cv_search_gethostbyname" >&6; }
-ac_res=$ac_cv_search_gethostbyname
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostname" >&5
-$as_echo_n "checking for library containing gethostname... " >&6; }
-if ${ac_cv_search_gethostname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostname ();
-int
-main ()
-{
-return gethostname ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' nsl; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_gethostname=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_gethostname+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_gethostname+:} false; then :
-
-else
-  ac_cv_search_gethostname=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostname" >&5
-$as_echo "$ac_cv_search_gethostname" >&6; }
-ac_res=$ac_cv_search_gethostname
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
-$as_echo_n "checking for library containing socket... " >&6; }
-if ${ac_cv_search_socket+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' socket; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_socket=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_socket+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_socket+:} false; then :
-
-else
-  ac_cv_search_socket=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
-$as_echo "$ac_cv_search_socket" >&6; }
-ac_res=$ac_cv_search_socket
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
-$as_echo_n "checking for library containing crypt... " >&6; }
-if ${ac_cv_search_crypt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char crypt ();
-int
-main ()
-{
-return crypt ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' crypt ufc; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_crypt=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_crypt+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_crypt+:} false; then :
-
-else
-  ac_cv_search_crypt=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
-$as_echo "$ac_cv_search_crypt" >&6; }
-ac_res=$ac_cv_search_crypt
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ltruerand" >&5
-$as_echo_n "checking for main in -ltruerand... " >&6; }
-if ${ac_cv_lib_truerand_main+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltruerand  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-return main ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_truerand_main=yes
-else
-  ac_cv_lib_truerand_main=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_truerand_main" >&5
-$as_echo "$ac_cv_lib_truerand_main" >&6; }
-if test "x$ac_cv_lib_truerand_main" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBTRUERAND 1
-_ACEOF
-
-  LIBS="-ltruerand $LIBS"
-
-fi
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing modf" >&5
-$as_echo_n "checking for library containing modf... " >&6; }
-if ${ac_cv_search_modf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char modf ();
-int
-main ()
-{
-return modf ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' m; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_modf=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_modf+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_modf+:} false; then :
-
-else
-  ac_cv_search_modf=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_modf" >&5
-$as_echo "$ac_cv_search_modf" >&6; }
-ac_res=$ac_cv_search_modf
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-       ;;
-esac
-
-echo "${nl}Checking for Threads..."
-
-if test -z "$enable_threads"; then
-	# Check whether --enable-threads was given.
-if test "${enable_threads+set}" = set; then :
-  enableval=$enable_threads;  enable_threads=$enableval
-else
-
-  if test "$GCC" = "yes"; then
-    SAVE_FL="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS -w"
-    for ac_header in pthread.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-   enable_threads="pthread"
-else
-    enable_threads="no"
-fi
-
-done
-
-    CPPFLAGS="$SAVE_FL"
-  else
-    for ac_header in pthread.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-   enable_threads="pthread"
-else
-    enable_threads="no"
-fi
-
-done
-
-  fi
-
-fi
-
-fi
-
-if test "$enable_threads" = "no"; then
-    threads="0"
-    pthreadh="0"
-    pthreadser="0"
-else
-    if test "$enable_threads" = "pthread"; then
-# We have specified pthreads for our threading library, just make sure
-# that we have everything we need
-
-  apr_pthsv_CFLAGS="$CFLAGS"
-  apr_pthsv_LIBS="$LIBS"
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAGS needed for pthreads" >&5
-$as_echo_n "checking for CFLAGS needed for pthreads... " >&6; }
-if ${apr_cv_pthreads_cflags+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  apr_ptc_cflags=$CFLAGS
- for flag in none -kthread -pthread -pthreads -mt -mthreads -Kthread -threads; do
-    CFLAGS=$apr_ptc_cflags
-    test "x$flag" != "xnone" && CFLAGS="$CFLAGS $flag"
-
-if test "$cross_compiling" = yes; then :
-  apr_p_t_r=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <pthread.h>
-#include <stddef.h>
-
-void *thread_routine(void *data) {
-    return data;
-}
-
-int main() {
-    pthread_t thd;
-    pthread_mutexattr_t mattr;
-    pthread_once_t once_init = PTHREAD_ONCE_INIT;
-    int data = 1;
-    pthread_mutexattr_init(&mattr);
-    return pthread_create(&thd, NULL, thread_routine, &data);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_p_t_r=yes
-else
-  apr_p_t_r=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-if test $apr_p_t_r = yes; then
-
-      apr_cv_pthreads_cflags="$flag"
-      break
-
-fi
-
-
- done
- CFLAGS=$apr_ptc_cflags
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_cflags" >&5
-$as_echo "$apr_cv_pthreads_cflags" >&6; }
-
-if test -n "$apr_cv_pthreads_cflags"; then
-   pthreads_working=yes
-   if test "x$apr_cv_pthreads_cflags" != "xnone"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"$apr_cv_pthreads_cflags\""
-    CFLAGS="$apr_cv_pthreads_cflags"
-  else
-    apr_addto_bugger="$apr_cv_pthreads_cflags"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   fi
-fi
-
-# The CFLAGS may or may not be sufficient to ensure that libapr
-# depends on the pthreads library: some versions of libtool
-# drop -pthread when passed on the link line; some versions of
-# gcc ignore -pthread when linking a shared object.  So always
-# try and add the relevant library to LIBS too.
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBS needed for pthreads" >&5
-$as_echo_n "checking for LIBS needed for pthreads... " >&6; }
-if ${apr_cv_pthreads_lib+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  apr_ptc_libs=$LIBS
-  for lib in -lpthread -lpthreads -lc_r; do
-    LIBS="$apr_ptc_libs $lib"
-
-if test "$cross_compiling" = yes; then :
-  apr_p_t_r=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <pthread.h>
-#include <stddef.h>
-
-void *thread_routine(void *data) {
-    return data;
-}
-
-int main() {
-    pthread_t thd;
-    pthread_mutexattr_t mattr;
-    pthread_once_t once_init = PTHREAD_ONCE_INIT;
-    int data = 1;
-    pthread_mutexattr_init(&mattr);
-    return pthread_create(&thd, NULL, thread_routine, &data);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_p_t_r=yes
-else
-  apr_p_t_r=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-if test $apr_p_t_r = yes; then
-
-      apr_cv_pthreads_lib=$lib
-      break
-
-fi
-
-
-  done
-  LIBS=$apr_ptc_libs
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_lib" >&5
-$as_echo "$apr_cv_pthreads_lib" >&6; }
-
-if test -n "$apr_cv_pthreads_lib"; then
-   pthreads_working=yes
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"$apr_cv_pthreads_lib\""
-    LIBS="$apr_cv_pthreads_lib"
-  else
-    apr_addto_bugger="$apr_cv_pthreads_lib"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-fi
-
-if test "$pthreads_working" = "yes"; then
-  threads_result="POSIX Threads found"
-else
-  threads_result="POSIX Threads not found"
-fi
-
-
-  if test "$GCC" = "yes"; then
-    SAVE_FL="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS -w"
-    for ac_header in pthread.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-
-          threads="1"
-          pthreadh="1"
-          pthreadser="1"
-else
-
-          threads="0"
-          pthreadh="0"
-          pthreadser="0"
-
-  CFLAGS="$apr_pthsv_CFLAGS"
-  LIBS="$apr_pthsv_LIBS"
-
-fi
-
-done
-
-    CPPFLAGS="$SAVE_FL"
-  else
-    for ac_header in pthread.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-
-          threads="1"
-          pthreadh="1"
-          pthreadser="1"
-else
-
-          threads="0"
-          pthreadh="0"
-          pthreadser="0"
-
-  CFLAGS="$apr_pthsv_CFLAGS"
-  LIBS="$apr_pthsv_LIBS"
-
-fi
-
-done
-
-  fi
-
-    elif test "$enable_threads" = "system_threads"; then
-        threads="1"
-        pthreadh="0"
-        pthreadser="0"
-    else
-# We basically specified that we wanted threads, but not how to implement
-# them.  In this case, just look for pthreads.  In the future, we can check
-# for other threading libraries as well.
-
-  apr_pthsv_CFLAGS="$CFLAGS"
-  apr_pthsv_LIBS="$LIBS"
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAGS needed for pthreads" >&5
-$as_echo_n "checking for CFLAGS needed for pthreads... " >&6; }
-if ${apr_cv_pthreads_cflags+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  apr_ptc_cflags=$CFLAGS
- for flag in none -kthread -pthread -pthreads -mt -mthreads -Kthread -threads; do
-    CFLAGS=$apr_ptc_cflags
-    test "x$flag" != "xnone" && CFLAGS="$CFLAGS $flag"
-
-if test "$cross_compiling" = yes; then :
-  apr_p_t_r=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <pthread.h>
-#include <stddef.h>
-
-void *thread_routine(void *data) {
-    return data;
-}
-
-int main() {
-    pthread_t thd;
-    pthread_mutexattr_t mattr;
-    pthread_once_t once_init = PTHREAD_ONCE_INIT;
-    int data = 1;
-    pthread_mutexattr_init(&mattr);
-    return pthread_create(&thd, NULL, thread_routine, &data);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_p_t_r=yes
-else
-  apr_p_t_r=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-if test $apr_p_t_r = yes; then
-
-      apr_cv_pthreads_cflags="$flag"
-      break
-
-fi
-
-
- done
- CFLAGS=$apr_ptc_cflags
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_cflags" >&5
-$as_echo "$apr_cv_pthreads_cflags" >&6; }
-
-if test -n "$apr_cv_pthreads_cflags"; then
-   pthreads_working=yes
-   if test "x$apr_cv_pthreads_cflags" != "xnone"; then
-
-  if test "x$CFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"$apr_cv_pthreads_cflags\""
-    CFLAGS="$apr_cv_pthreads_cflags"
-  else
-    apr_addto_bugger="$apr_cv_pthreads_cflags"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $CFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
-        CFLAGS="$CFLAGS $i"
-      fi
-    done
-  fi
-
-   fi
-fi
-
-# The CFLAGS may or may not be sufficient to ensure that libapr
-# depends on the pthreads library: some versions of libtool
-# drop -pthread when passed on the link line; some versions of
-# gcc ignore -pthread when linking a shared object.  So always
-# try and add the relevant library to LIBS too.
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBS needed for pthreads" >&5
-$as_echo_n "checking for LIBS needed for pthreads... " >&6; }
-if ${apr_cv_pthreads_lib+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  apr_ptc_libs=$LIBS
-  for lib in -lpthread -lpthreads -lc_r; do
-    LIBS="$apr_ptc_libs $lib"
-
-if test "$cross_compiling" = yes; then :
-  apr_p_t_r=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <pthread.h>
-#include <stddef.h>
-
-void *thread_routine(void *data) {
-    return data;
-}
-
-int main() {
-    pthread_t thd;
-    pthread_mutexattr_t mattr;
-    pthread_once_t once_init = PTHREAD_ONCE_INIT;
-    int data = 1;
-    pthread_mutexattr_init(&mattr);
-    return pthread_create(&thd, NULL, thread_routine, &data);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_p_t_r=yes
-else
-  apr_p_t_r=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-if test $apr_p_t_r = yes; then
-
-      apr_cv_pthreads_lib=$lib
-      break
-
-fi
-
-
-  done
-  LIBS=$apr_ptc_libs
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_lib" >&5
-$as_echo "$apr_cv_pthreads_lib" >&6; }
-
-if test -n "$apr_cv_pthreads_lib"; then
-   pthreads_working=yes
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"$apr_cv_pthreads_lib\""
-    LIBS="$apr_cv_pthreads_lib"
-  else
-    apr_addto_bugger="$apr_cv_pthreads_lib"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-fi
-
-if test "$pthreads_working" = "yes"; then
-  threads_result="POSIX Threads found"
-else
-  threads_result="POSIX Threads not found"
-fi
-
-
-  if test "$GCC" = "yes"; then
-    SAVE_FL="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS -w"
-    for ac_header in pthread.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-
-          threads="1"
-          pthreadh="1"
-          pthreadser="1"
-else
-
-          threads="0"
-          pthreadser="0"
-          pthreadh="0"
-
-  CFLAGS="$apr_pthsv_CFLAGS"
-  LIBS="$apr_pthsv_LIBS"
-
-fi
-
-done
-
-    CPPFLAGS="$SAVE_FL"
-  else
-    for ac_header in pthread.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-
-          threads="1"
-          pthreadh="1"
-          pthreadser="1"
-else
-
-          threads="0"
-          pthreadser="0"
-          pthreadh="0"
-
-  CFLAGS="$apr_pthsv_CFLAGS"
-  LIBS="$apr_pthsv_LIBS"
-
-fi
-
-done
-
-  fi
-
-    fi
-    if test "$pthreadh" = "1"; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_getspecific takes two arguments" >&5
-$as_echo_n "checking whether pthread_getspecific takes two arguments... " >&6; }
-if ${ac_cv_pthread_getspecific_two_args+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <pthread.h>
-
-int
-main ()
-{
-
-pthread_key_t key;
-void *tmp;
-pthread_getspecific(key,&tmp);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-    ac_cv_pthread_getspecific_two_args=yes
-
-else
-
-    ac_cv_pthread_getspecific_two_args=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_getspecific_two_args" >&5
-$as_echo "$ac_cv_pthread_getspecific_two_args" >&6; }
-
-if test "$ac_cv_pthread_getspecific_two_args" = "yes"; then
-
-$as_echo "#define PTHREAD_GETSPECIFIC_TAKES_TWO_ARGS 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_attr_getdetachstate takes one argument" >&5
-$as_echo_n "checking whether pthread_attr_getdetachstate takes one argument... " >&6; }
-if ${ac_cv_pthread_attr_getdetachstate_one_arg+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <pthread.h>
-
-int
-main ()
-{
-
-pthread_attr_t *attr;
-pthread_attr_getdetachstate(attr);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-    ac_cv_pthread_attr_getdetachstate_one_arg=yes
-
-else
-
-    ac_cv_pthread_attr_getdetachstate_one_arg=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_attr_getdetachstate_one_arg" >&5
-$as_echo "$ac_cv_pthread_attr_getdetachstate_one_arg" >&6; }
-
-if test "$ac_cv_pthread_attr_getdetachstate_one_arg" = "yes"; then
-
-$as_echo "#define PTHREAD_ATTR_GETDETACHSTATE_TAKES_ONE_ARG 1" >>confdefs.h
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recursive mutex support" >&5
-$as_echo_n "checking for recursive mutex support... " >&6; }
-if ${apr_cv_mutex_recursive+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_mutex_recursive=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <pthread.h>
-#include <stdlib.h>
-
-int main() {
-    pthread_mutexattr_t attr;
-    pthread_mutex_t m;
-
-    exit (pthread_mutexattr_init(&attr)
-          || pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)
-          || pthread_mutex_init(&m, &attr));
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_mutex_recursive=yes
-else
-  apr_cv_mutex_recursive=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_mutex_recursive" >&5
-$as_echo "$apr_cv_mutex_recursive" >&6; }
-
-if test "$apr_cv_mutex_recursive" = "yes"; then
-
-$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
-
-fi
-
-        for ac_func in pthread_key_delete pthread_rwlock_init \
-                        pthread_attr_setguardsize pthread_yield
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-        if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_rwlock_t" >&5
-$as_echo_n "checking for pthread_rwlock_t... " >&6; }
-if ${apr_cv_type_rwlock_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <pthread.h>
-int
-main ()
-{
-pthread_rwlock_t *rwlock;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_type_rwlock_t=yes
-else
-  apr_cv_type_rwlock_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_type_rwlock_t" >&5
-$as_echo "$apr_cv_type_rwlock_t" >&6; }
-            if test "$apr_cv_type_rwlock_t" = "yes"; then
-
-$as_echo "#define HAVE_PTHREAD_RWLOCKS 1" >>confdefs.h
-
-            fi
-        fi
-
-        if test "$ac_cv_func_pthread_yield" = "no"; then
-                        for ac_header in sched.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default"
-if test "x$ac_cv_header_sched_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SCHED_H 1
-_ACEOF
-
-fi
-
-done
-
-            for ac_func in sched_yield
-do :
-  ac_fn_c_check_func "$LINENO" "sched_yield" "ac_cv_func_sched_yield"
-if test "x$ac_cv_func_sched_yield" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SCHED_YIELD 1
-_ACEOF
-
-fi
-done
-
-        fi
-    fi
-fi
-
-ac_cv_define_READDIR_IS_THREAD_SAFE=no
-ac_cv_define_GETHOSTBYNAME_IS_THREAD_SAFE=no
-ac_cv_define_GETHOSTBYADDR_IS_THREAD_SAFE=no
-ac_cv_define_GETSERVBYNAME_IS_THREAD_SAFE=no
-if test "$threads" = "1"; then
-    echo "APR will use threads"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readdir in -lc_r" >&5
-$as_echo_n "checking for readdir in -lc_r... " >&6; }
-if ${ac_cv_lib_c_r_readdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc_r  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char readdir ();
-int
-main ()
-{
-return readdir ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_c_r_readdir=yes
-else
-  ac_cv_lib_c_r_readdir=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_readdir" >&5
-$as_echo "$ac_cv_lib_c_r_readdir" >&6; }
-if test "x$ac_cv_lib_c_r_readdir" = xyes; then :
-
-$as_echo "#define READDIR_IS_THREAD_SAFE 1" >>confdefs.h
-
-fi
-
-    if test "x$apr_gethostbyname_is_thread_safe" = "x"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lc_r" >&5
-$as_echo_n "checking for gethostbyname in -lc_r... " >&6; }
-if ${ac_cv_lib_c_r_gethostbyname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc_r  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_c_r_gethostbyname=yes
-else
-  ac_cv_lib_c_r_gethostbyname=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_gethostbyname" >&5
-$as_echo "$ac_cv_lib_c_r_gethostbyname" >&6; }
-if test "x$ac_cv_lib_c_r_gethostbyname" = xyes; then :
-  apr_gethostbyname_is_thread_safe=yes
-fi
-
-    fi
-    if test "$apr_gethostbyname_is_thread_safe" = "yes"; then
-
-$as_echo "#define GETHOSTBYNAME_IS_THREAD_SAFE 1" >>confdefs.h
-
-    fi
-    if test "x$apr_gethostbyaddr_is_thread_safe" = "x"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr in -lc_r" >&5
-$as_echo_n "checking for gethostbyaddr in -lc_r... " >&6; }
-if ${ac_cv_lib_c_r_gethostbyaddr+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc_r  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyaddr ();
-int
-main ()
-{
-return gethostbyaddr ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_c_r_gethostbyaddr=yes
-else
-  ac_cv_lib_c_r_gethostbyaddr=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_gethostbyaddr" >&5
-$as_echo "$ac_cv_lib_c_r_gethostbyaddr" >&6; }
-if test "x$ac_cv_lib_c_r_gethostbyaddr" = xyes; then :
-  apr_gethostbyaddr_is_thread_safe=yes
-fi
-
-    fi
-    if test "$apr_gethostbyaddr_is_thread_safe" = "yes"; then
-
-$as_echo "#define GETHOSTBYADDR_IS_THREAD_SAFE 1" >>confdefs.h
-
-    fi
-    if test "x$apr_getservbyname_is_thread_safe" = "x"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getservbyname in -lc_r" >&5
-$as_echo_n "checking for getservbyname in -lc_r... " >&6; }
-if ${ac_cv_lib_c_r_getservbyname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc_r  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getservbyname ();
-int
-main ()
-{
-return getservbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_c_r_getservbyname=yes
-else
-  ac_cv_lib_c_r_getservbyname=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_getservbyname" >&5
-$as_echo "$ac_cv_lib_c_r_getservbyname" >&6; }
-if test "x$ac_cv_lib_c_r_getservbyname" = xyes; then :
-  apr_getservbyname_is_thread_safe=yes
-fi
-
-    fi
-    if test "$apr_getservbyname_is_thread_safe" = "yes"; then
-
-$as_echo "#define GETSERVBYNAME_IS_THREAD_SAFE 1" >>confdefs.h
-
-    fi
-    for ac_func in gethostbyname_r gethostbyaddr_r getservbyname_r
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-else
-    echo "APR will be non-threaded"
-fi
-
-
-# Check whether --with-efence was given.
-if test "${with_efence+set}" = set; then :
-  withval=$with_efence;  apr_efence_dir="$withval"
-    if test "$apr_efence_dir" != "yes"; then
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-L$apr_efence_dir/lib\""
-    LDFLAGS="-L$apr_efence_dir/lib"
-  else
-    apr_addto_bugger="-L$apr_efence_dir/lib"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-      if test "x$apr_platform_runtime_link_flag" != "x"; then
-
-  if test "x$LDFLAGS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"$apr_platform_runtime_link_flag$apr_efence_dir/lib\""
-    LDFLAGS="$apr_platform_runtime_link_flag$apr_efence_dir/lib"
-  else
-    apr_addto_bugger="$apr_platform_runtime_link_flag$apr_efence_dir/lib"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LDFLAGS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
-        LDFLAGS="$LDFLAGS $i"
-      fi
-    done
-  fi
-
-      fi
-    fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for malloc in -lefence" >&5
-$as_echo_n "checking for malloc in -lefence... " >&6; }
-if ${ac_cv_lib_efence_malloc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lefence  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char malloc ();
-int
-main ()
-{
-return malloc ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_efence_malloc=yes
-else
-  ac_cv_lib_efence_malloc=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_efence_malloc" >&5
-$as_echo "$ac_cv_lib_efence_malloc" >&6; }
-if test "x$ac_cv_lib_efence_malloc" = xyes; then :
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lefence\""
-    LIBS="-lefence"
-  else
-    apr_addto_bugger="-lefence"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-else
-   as_fn_error $? "Electric Fence requested but not detected" "$LINENO" 5
-fi
-
-
-fi
-
-
-for ac_func in sigsuspend
-do :
-  ac_fn_c_check_func "$LINENO" "sigsuspend" "ac_cv_func_sigsuspend"
-if test "x$ac_cv_func_sigsuspend" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGSUSPEND 1
-_ACEOF
-  have_sigsuspend="1"
-else
-   have_sigsuspend="0"
-fi
-done
-
-for ac_func in sigwait
-do :
-  ac_fn_c_check_func "$LINENO" "sigwait" "ac_cv_func_sigwait"
-if test "x$ac_cv_func_sigwait" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGWAIT 1
-_ACEOF
-  have_sigwait="1"
-else
-   have_sigwait="0"
-fi
-done
-
-case $host in
-    *alpha*-dec-osf* )
-        have_sigwait="1"
-        ;;
-esac
-
-
-
-
-
-for ac_func in poll kqueue port_create
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-# Check for the Linux epoll interface; epoll* may be available in libc
-# but return ENOSYS on a pre-2.6 kernel, so do a run-time check.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll support" >&5
-$as_echo_n "checking for epoll support... " >&6; }
-if ${apr_cv_epoll+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_epoll=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/epoll.h>
-#include <unistd.h>
-
-int main()
-{
-    return epoll_create(5) == -1;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_epoll=yes
-else
-  apr_cv_epoll=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_epoll" >&5
-$as_echo "$apr_cv_epoll" >&6; }
-
-if test "$apr_cv_epoll" = "yes"; then
-
-$as_echo "#define HAVE_EPOLL 1" >>confdefs.h
-
-fi
-
-# test for epoll_create1
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll_create1 support" >&5
-$as_echo_n "checking for epoll_create1 support... " >&6; }
-if ${apr_cv_epoll_create1+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_epoll_create1=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/epoll.h>
-#include <unistd.h>
-
-int main()
-{
-    return epoll_create1(0) == -1;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_epoll_create1=yes
-else
-  apr_cv_epoll_create1=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_epoll_create1" >&5
-$as_echo "$apr_cv_epoll_create1" >&6; }
-
-if test "$apr_cv_epoll_create1" = "yes"; then
-
-$as_echo "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h
-
-fi
-
-# test for dup3
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dup3 support" >&5
-$as_echo_n "checking for dup3 support... " >&6; }
-if ${apr_cv_dup3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_dup3=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <unistd.h>
-
-int main()
-{
-    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_dup3=yes
-else
-  apr_cv_dup3=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dup3" >&5
-$as_echo "$apr_cv_dup3" >&6; }
-
-if test "$apr_cv_dup3" = "yes"; then
-
-$as_echo "#define HAVE_DUP3 1" >>confdefs.h
-
-fi
-
-# test for accept4
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for accept4 support" >&5
-$as_echo_n "checking for accept4 support... " >&6; }
-if ${apr_cv_accept4+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_accept4=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <errno.h>
-
-#define A4_SOCK "./apr_accept4_test_socket"
-
-int main()
-{
-    pid_t pid;
-    int fd;
-    struct sockaddr_un loc, rem;
-    socklen_t rem_sz;
-
-    if ((pid = fork())) {
-        int status;
-
-        unlink(A4_SOCK);
-
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            goto cleanup_failure2;
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        if (bind(fd, (struct sockaddr *) &loc,
-                 sizeof(struct sockaddr_un)) == -1)
-            goto cleanup_failure;
-
-        if (listen(fd, 5) == -1)
-            goto cleanup_failure;
-
-        rem_sz = sizeof(struct sockaddr_un);
-        if (accept4(fd, (struct sockaddr *) &rem, &rem_sz, 0) == -1) {
-            goto cleanup_failure;
-        }
-        else {
-            close(fd);
-            waitpid(pid, &status, 0);
-            unlink(A4_SOCK);
-            return 0;
-        }
-
-cleanup_failure:
-        close(fd);
-cleanup_failure2:
-        kill(pid, SIGKILL);
-        waitpid(pid, &status, 0);
-        unlink(A4_SOCK);
-        return 1;
-    }
-    else {
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            return 1; /* this will be bad: we'll hang */
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        while(connect(fd, (struct sockaddr *) &loc,
-                      sizeof(struct sockaddr_un)) == -1 &&
-              (errno==ENOENT || errno==ECONNREFUSED))
-            ;
-
-        close(fd);
-        return 0;
-    }
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_accept4=yes
-else
-  apr_cv_accept4=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_accept4" >&5
-$as_echo "$apr_cv_accept4" >&6; }
-
-if test "$apr_cv_accept4" = "yes"; then
-
-$as_echo "#define HAVE_ACCEPT4 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOCK_CLOEXEC support" >&5
-$as_echo_n "checking for SOCK_CLOEXEC support... " >&6; }
-if ${apr_cv_sock_cloexec+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_sock_cloexec=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-
-int main()
-{
-    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_sock_cloexec=yes
-else
-  apr_cv_sock_cloexec=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_sock_cloexec" >&5
-$as_echo "$apr_cv_sock_cloexec" >&6; }
-
-if test "$apr_cv_sock_cloexec" = "yes"; then
-
-$as_echo "#define HAVE_SOCK_CLOEXEC 1" >>confdefs.h
-
-fi
-
-for ac_func in fdatasync
-do :
-  ac_fn_c_check_func "$LINENO" "fdatasync" "ac_cv_func_fdatasync"
-if test "x$ac_cv_func_fdatasync" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_FDATASYNC 1
-_ACEOF
-
-fi
-done
-
-
-# test for epoll_create1
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll_create1 support" >&5
-$as_echo_n "checking for epoll_create1 support... " >&6; }
-if ${apr_cv_epoll_create1+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_epoll_create1=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/epoll.h>
-#include <unistd.h>
-
-int main()
-{
-    return epoll_create1(0) == -1;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_epoll_create1=yes
-else
-  apr_cv_epoll_create1=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_epoll_create1" >&5
-$as_echo "$apr_cv_epoll_create1" >&6; }
-
-if test "$apr_cv_epoll_create1" = "yes"; then
-
-$as_echo "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h
-
-fi
-
-# test for dup3
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dup3 support" >&5
-$as_echo_n "checking for dup3 support... " >&6; }
-if ${apr_cv_dup3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_dup3=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <unistd.h>
-
-int main()
-{
-    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_dup3=yes
-else
-  apr_cv_dup3=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dup3" >&5
-$as_echo "$apr_cv_dup3" >&6; }
-
-if test "$apr_cv_dup3" = "yes"; then
-
-$as_echo "#define HAVE_DUP3 1" >>confdefs.h
-
-fi
-
-# test for accept4
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for accept4 support" >&5
-$as_echo_n "checking for accept4 support... " >&6; }
-if ${apr_cv_accept4+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_accept4=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <errno.h>
-
-#define A4_SOCK "./apr_accept4_test_socket"
-
-int main()
-{
-    pid_t pid;
-    int fd;
-    struct sockaddr_un loc, rem;
-    socklen_t rem_sz;
-
-    if ((pid = fork())) {
-        int status;
-
-        unlink(A4_SOCK);
-
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            goto cleanup_failure2;
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        if (bind(fd, (struct sockaddr *) &loc,
-                 sizeof(struct sockaddr_un)) == -1)
-            goto cleanup_failure;
-
-        if (listen(fd, 5) == -1)
-            goto cleanup_failure;
-
-        rem_sz = sizeof(struct sockaddr_un);
-        if (accept4(fd, (struct sockaddr *) &rem, &rem_sz, 0) == -1) {
-            goto cleanup_failure;
-        }
-        else {
-            close(fd);
-            waitpid(pid, &status, 0);
-            unlink(A4_SOCK);
-            return 0;
-        }
-
-cleanup_failure:
-        close(fd);
-cleanup_failure2:
-        kill(pid, SIGKILL);
-        waitpid(pid, &status, 0);
-        unlink(A4_SOCK);
-        return 1;
-    }
-    else {
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            return 1; /* this will be bad: we'll hang */
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        while(connect(fd, (struct sockaddr *) &loc,
-                      sizeof(struct sockaddr_un)) == -1 &&
-              (errno==ENOENT || errno==ECONNREFUSED))
-            ;
-
-        close(fd);
-        return 0;
-    }
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_accept4=yes
-else
-  apr_cv_accept4=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_accept4" >&5
-$as_echo "$apr_cv_accept4" >&6; }
-
-if test "$apr_cv_accept4" = "yes"; then
-
-$as_echo "#define HAVE_ACCEPT4 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOCK_CLOEXEC support" >&5
-$as_echo_n "checking for SOCK_CLOEXEC support... " >&6; }
-if ${apr_cv_sock_cloexec+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  apr_cv_sock_cloexec=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-
-int main()
-{
-    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_sock_cloexec=yes
-else
-  apr_cv_sock_cloexec=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_sock_cloexec" >&5
-$as_echo "$apr_cv_sock_cloexec" >&6; }
-
-if test "$apr_cv_sock_cloexec" = "yes"; then
-
-$as_echo "#define HAVE_SOCK_CLOEXEC 1" >>confdefs.h
-
-fi
-
-for ac_func in getpwnam_r getpwuid_r getgrnam_r getgrgid_r
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-echo "${nl}Checking for Shared Memory Support..."
-
-# The real-time POSIX extensions (e.g. shm_*, sem_*) may only
-# be available if linking against librt.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5
-$as_echo_n "checking for library containing shm_open... " >&6; }
-if ${ac_cv_search_shm_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shm_open ();
-int
-main ()
-{
-return shm_open ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' rt; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_shm_open=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_shm_open+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_shm_open+:} false; then :
-
-else
-  ac_cv_search_shm_open=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5
-$as_echo "$ac_cv_search_shm_open" >&6; }
-ac_res=$ac_cv_search_shm_open
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-
-case $host in
- *-sysv*)
-   ac_includes_default="$ac_includes_default
-#if HAVE_SYS_MUTEX_H /* needed to define lock_t for sys/shm.h */
-# include <sys/mutex.h>
-#endif";;
-esac
-
-for ac_header in sys/types.h sys/mman.h sys/ipc.h sys/mutex.h sys/shm.h sys/file.h kernel/OS.h os2.h windows.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-for ac_func in mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \
-                create_area
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON in sys/mman.h" >&5
-$as_echo_n "checking for MAP_ANON in sys/mman.h... " >&6; }
-if ${ac_cv_define_MAP_ANON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/mman.h>
-#ifdef MAP_ANON
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_MAP_ANON=yes
-else
-  ac_cv_define_MAP_ANON=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_MAP_ANON" >&5
-$as_echo "$ac_cv_define_MAP_ANON" >&6; }
-  if test "$ac_cv_define_MAP_ANON" = "yes"; then
-
-$as_echo "#define HAVE_MAP_ANON 1" >>confdefs.h
-
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/zero" >&5
-$as_echo_n "checking for /dev/zero... " >&6; }
-if ${ac_cv_file__dev_zero+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
-if test -r "/dev/zero"; then
-  ac_cv_file__dev_zero=yes
-else
-  ac_cv_file__dev_zero=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_zero" >&5
-$as_echo "$ac_cv_file__dev_zero" >&6; }
-if test "x$ac_cv_file__dev_zero" = xyes; then :
-
-fi
-
-
-# Not all systems can mmap /dev/zero (such as HP-UX).  Check for that.
-if test "$ac_cv_func_mmap" = "yes" &&
-   test "$ac_cv_file__dev_zero" = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mmap that can map /dev/zero" >&5
-$as_echo_n "checking for mmap that can map /dev/zero... " >&6; }
-    if test "$cross_compiling" = yes; then :
-  ac_cv_file__dev_zero=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#ifdef HAVE_SYS_MMAN_H
-#include <sys/mman.h>
-#endif
-    int main()
-    {
-        int fd;
-        void *m;
-        fd = open("/dev/zero", O_RDWR);
-        if (fd < 0) {
-            return 1;
-        }
-        m = mmap(0, sizeof(void*), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
-        if (m == (void *)-1) {  /* aka MAP_FAILED */
-            return 2;
-        }
-        if (munmap(m, sizeof(void*)) < 0) {
-            return 3;
-        }
-        return 0;
-    }
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_file__dev_zero=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_zero" >&5
-$as_echo "$ac_cv_file__dev_zero" >&6; }
-fi
-
-# Now we determine which one is our anonymous shmem preference.
-haveshmgetanon="0"
-havemmapzero="0"
-havemmapanon="0"
-ac_decision_item='anonymous shared memory allocation method'
-ac_decision_msg='FAILED'
-ac_decision=''
-
-ac_rc=yes
-for ac_spec in header:sys/ipc.h header:sys/shm.h header:sys/file.h              func:shmget func:shmat func:shmdt func:shmctl; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    haveshmgetanon="1"
-
-ac_decision='USE_SHMEM_SHMGET_ANON'
-ac_decision_msg='SysV IPC shmget()'
-ac_decision_USE_SHMEM_SHMGET_ANON=yes
-ac_decision_USE_SHMEM_SHMGET_ANON_msg='SysV IPC shmget()'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:sys/mman.h func:mmap func:munmap file:/dev/zero; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havemmapzero="1"
-
-ac_decision='USE_SHMEM_MMAP_ZERO'
-ac_decision_msg='SVR4-style mmap() on /dev/zero'
-ac_decision_USE_SHMEM_MMAP_ZERO=yes
-ac_decision_USE_SHMEM_MMAP_ZERO_msg='SVR4-style mmap() on /dev/zero'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:sys/mman.h func:mmap func:munmap define:MAP_ANON; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havemmapanon="1"
-
-ac_decision='USE_SHMEM_MMAP_ANON'
-ac_decision_msg='4.4BSD-style mmap() via MAP_ANON'
-ac_decision_USE_SHMEM_MMAP_ANON=yes
-ac_decision_USE_SHMEM_MMAP_ANON_msg='4.4BSD-style mmap() via MAP_ANON'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:os2.h; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    haveos2shm="1"
-
-ac_decision='USE_SHMEM_OS2_ANON'
-ac_decision_msg='OS/2 DosAllocSharedMem()'
-ac_decision_USE_SHMEM_OS2_ANON=yes
-ac_decision_USE_SHMEM_OS2_ANON_msg='OS/2 DosAllocSharedMem()'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:kernel/OS.h func:create_area; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havebeosshm="1"
-
-ac_decision='USE_SHMEM_BEOS_ANON'
-ac_decision_msg='BeOS areas'
-ac_decision_USE_SHMEM_BEOS_ANON=yes
-ac_decision_USE_SHMEM_BEOS_ANON_msg='BeOS areas'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:windows.h func:CreateFileMapping; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havewin32shm="1"
-
-ac_decision='USE_SHMEM_WIN32_ANON'
-ac_decision_msg='Windows CreateFileMapping()'
-ac_decision_USE_SHMEM_WIN32_ANON=yes
-ac_decision_USE_SHMEM_WIN32_ANON_msg='Windows CreateFileMapping()'
-
-else
-    :
-
-fi
-
-case $host in
-    *linux* )
-        # Linux has problems with MM_SHMT_MMANON even though it reports
-        # that it has it.
-        # FIXME - find exact 2.3 version that MMANON was fixed in.  It is
-        # confirmed fixed in 2.4 series.
-        if test $os_version -le "240"; then
-                ac_decision=''
-    for ac_item in USE_SHMEM_MMAP_ZERO USE_SHMEM_SHMGET_ANON; do
-         eval "ac_decision_this=\$ac_decision_${ac_item}"
-         if test ".$ac_decision_this" = .yes; then
-             ac_decision=$ac_item
-             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
-         fi
-    done
-
-        fi
-        ;;
-    *hpux11* )
-            ac_decision=''
-    for ac_item in USE_SHMEM_SHMGET_ANON; do
-         eval "ac_decision_this=\$ac_decision_${ac_item}"
-         if test ".$ac_decision_this" = .yes; then
-             ac_decision=$ac_item
-             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
-         fi
-    done
-
-        ;;
-esac
-if test ".$ac_decision" = .; then
-    echo "$0:Error: decision on $ac_decision_item failed" 1>&2
-    exit 1
-else
-    if test ".$ac_decision_msg" = .; then
-        ac_decision_msg="$ac_decision"
-    fi
-    cat >>confdefs.h <<_ACEOF
-#define ${ac_decision_item} 1
-_ACEOF
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: decision on $ac_decision_item... $ac_decision_msg" >&5
-$as_echo "decision on $ac_decision_item... $ac_decision_msg" >&6; }
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define $ac_decision 1
-_ACEOF
-
-
-useshmgetanon="0"
-usemmapzero="0"
-usemmapanon="0"
-
-case $ac_decision in
-    USE_SHMEM_SHMGET_ANON )
-        useshmgetanon="1"
-        ;;
-    USE_SHMEM_MMAP_ZERO )
-        usemmapzero="1"
-        ;;
-    USE_SHMEM_MMAP_ANON )
-        usemmapanon="1"
-        ;;
-esac
-
-
-
-
-
-
-
-
-# Now we determine which one is our name-based shmem preference.
-havemmaptmp="0"
-havemmapshm="0"
-haveshmget="0"
-havebeosarea="0"
-haveos2shm="0"
-havewin32shm="0"
-ac_decision_item='namebased memory allocation method'
-ac_decision_msg='FAILED'
-ac_decision=''
-
-ac_rc=yes
-for ac_spec in header:sys/mman.h func:mmap func:munmap; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havemmaptmp="1"
-
-ac_decision='USE_SHMEM_MMAP_TMP'
-ac_decision_msg='Classical mmap() on temporary file'
-ac_decision_USE_SHMEM_MMAP_TMP=yes
-ac_decision_USE_SHMEM_MMAP_TMP_msg='Classical mmap() on temporary file'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:sys/mman.h func:mmap func:munmap func:shm_open              func:shm_unlink; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havemmapshm="1"
-
-ac_decision='USE_SHMEM_MMAP_SHM'
-ac_decision_msg='mmap() via POSIX.1 shm_open() on temporary file'
-ac_decision_USE_SHMEM_MMAP_SHM=yes
-ac_decision_USE_SHMEM_MMAP_SHM_msg='mmap() via POSIX.1 shm_open() on temporary file'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:sys/ipc.h header:sys/shm.h header:sys/file.h              func:shmget func:shmat func:shmdt func:shmctl; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    haveshmget="1"
-
-ac_decision='USE_SHMEM_SHMGET'
-ac_decision_msg='SysV IPC shmget()'
-ac_decision_USE_SHMEM_SHMGET=yes
-ac_decision_USE_SHMEM_SHMGET_msg='SysV IPC shmget()'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:kernel/OS.h func:create_area; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havebeosshm="1"
-
-ac_decision='USE_SHMEM_BEOS'
-ac_decision_msg='BeOS areas'
-ac_decision_USE_SHMEM_BEOS=yes
-ac_decision_USE_SHMEM_BEOS_msg='BeOS areas'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:os2.h; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    haveos2shm="1"
-
-ac_decision='USE_SHMEM_OS2'
-ac_decision_msg='OS/2 DosAllocSharedMem()'
-ac_decision_USE_SHMEM_OS2=yes
-ac_decision_USE_SHMEM_OS2_msg='OS/2 DosAllocSharedMem()'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:windows.h; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    havewin32shm="1"
-
-ac_decision='USE_SHMEM_WIN32'
-ac_decision_msg='Windows shared memory'
-ac_decision_USE_SHMEM_WIN32=yes
-ac_decision_USE_SHMEM_WIN32_msg='Windows shared memory'
-
-else
-    :
-
-fi
-
-case $host in
-    *linux* )
-        # Linux has problems with MM_SHMT_MMANON even though it reports
-        # that it has it.
-        # FIXME - find exact 2.3 version that MMANON was fixed in.  It is
-        # confirmed fixed in 2.4 series.
-        if test $os_version -le "240"; then
-                ac_decision=''
-    for ac_item in USE_SHMEM_MMAP_TMP USE_SHMEM_MMAP_SHM                                   USE_SHMEM_SHMGET; do
-         eval "ac_decision_this=\$ac_decision_${ac_item}"
-         if test ".$ac_decision_this" = .yes; then
-             ac_decision=$ac_item
-             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
-         fi
-    done
-
-        fi
-        ;;
-esac
-if test ".$ac_decision" = .; then
-    echo "$0:Error: decision on $ac_decision_item failed" 1>&2
-    exit 1
-else
-    if test ".$ac_decision_msg" = .; then
-        ac_decision_msg="$ac_decision"
-    fi
-    cat >>confdefs.h <<_ACEOF
-#define ${ac_decision_item} 1
-_ACEOF
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: decision on $ac_decision_item... $ac_decision_msg" >&5
-$as_echo "decision on $ac_decision_item... $ac_decision_msg" >&6; }
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define $ac_decision 1
-_ACEOF
-
-
-usemmaptmp="0"
-usemmapshm="0"
-useshmget="0"
-usebeosarea="0"
-useos2shm="0"
-usewin32shm="0"
-
-case $ac_decision in
-    USE_SHMEM_MMAP_TMP )
-        usemmaptmp="1"
-        ;;
-    USE_SHMEM_MMAP_SHM )
-        usemmapshm="1"
-        ;;
-    USE_SHMEM_SHMGET )
-        useshmget="1"
-        ;;
-    USE_SHMEM_BEOS )
-        usebeosarea="1"
-        ;;
-    USE_SHMEM_OS2 )
-        useos2shm="1"
-        ;;
-    USE_SHMEM_WIN32 )
-        usewin32shm="1"
-        ;;
-esac
-
-# Do we have any shared memory support?
-if test "$usemmaptmp$usemmapshm$usemmapzero$useshmget$usemmapanon$usebeosarea$useos2shm$usewin32shm" = "00000000"; then
-  sharedmem="0"
-else
-  sharedmem="1"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments.  Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
-			  if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_working_alloca_h=yes
-else
-  ac_cv_working_alloca_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-#  include <malloc.h>
-#  define alloca _alloca
-# else
-#  ifdef HAVE_ALLOCA_H
-#   include <alloca.h>
-#  else
-#   ifdef _AIX
- #pragma alloca
-#   else
-#    ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-#    endif
-#   endif
-#  endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
-				    if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_func_alloca_works=yes
-else
-  ac_cv_func_alloca_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
-
-else
-  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble.  Some versions do not even contain alloca or
-# contain a buggy version.  If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "webecray" >/dev/null 2>&1; then :
-  ac_cv_os_cray=yes
-else
-  ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
-  for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
-    break
-fi
-
-  done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_c_stack_direction=0
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
-  int dir, dummy = 0;
-  if (! addr)
-    addr = &dummy;
-  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
-  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
-  return dir + dummy;
-}
-
-int
-main (int argc, char **argv)
-{
-  return find_stack_direction (0, argc + !argv + 20) < 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_stack_direction=1
-else
-  ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-
-for ac_func in calloc setsid isinf isnan \
-                getenv putenv setenv unsetenv \
-                writev getifaddrs utime utimes
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-for ac_func in setrlimit
-do :
-  ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit"
-if test "x$ac_cv_func_setrlimit" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SETRLIMIT 1
-_ACEOF
-  have_setrlimit="1"
-else
-   have_setrlimit="0"
-fi
-done
-
-for ac_func in getrlimit
-do :
-  ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit"
-if test "x$ac_cv_func_getrlimit" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETRLIMIT 1
-_ACEOF
-  have_getrlimit="1"
-else
-   have_getrlimit="0"
-fi
-done
-
-sendfile="0"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfilev in -lsendfile" >&5
-$as_echo_n "checking for sendfilev in -lsendfile... " >&6; }
-if ${ac_cv_lib_sendfile_sendfilev+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsendfile  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char sendfilev ();
-int
-main ()
-{
-return sendfilev ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_sendfile_sendfilev=yes
-else
-  ac_cv_lib_sendfile_sendfilev=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sendfile_sendfilev" >&5
-$as_echo "$ac_cv_lib_sendfile_sendfilev" >&6; }
-if test "x$ac_cv_lib_sendfile_sendfilev" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSENDFILE 1
-_ACEOF
-
-  LIBS="-lsendfile $LIBS"
-
-fi
-
-for ac_func in sendfile send_file sendfilev
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-  sendfile="1"
-fi
-done
-
-
-
-
-# Check whether --with-sendfile was given.
-if test "${with_sendfile+set}" = set; then :
-  withval=$with_sendfile;  if test "$withval" = "yes"; then
-        sendfile="1"
-    else
-        sendfile="0"
-    fi
-else
-
-    orig_sendfile=$sendfile
-    case $host in
-        *freebsd*)
-            # FreeBSD < 4.2 has issues with threads+sendfile
-            if test $os_version -le "401999"; then
-                if test "$threads" = "1"; then
-                    sendfile="0"
-                fi
-            fi
-            ;;
-        *alpha*-dec-osf* )
-            sendfile="0"
-            ;;
-        s390-*-linux-gnu)
-            # disable sendfile support for 2.2 on S/390
-            if test $os_version -lt 240; then
-                sendfile="0"
-            fi
-            ;;
-        *aix*)
-            # compiler-independent check for 64-bit build
-            # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5
-$as_echo_n "checking size of void*... " >&6; }
-if ${ac_cv_sizeof_voidp+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_voidp" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (void*)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_voidp=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5
-$as_echo "$ac_cv_sizeof_voidp" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
-_ACEOF
-
-
-            if test "x$ac_cv_sizeof_voidp" = "x8"; then
-                # sendfile not working for 64-bit build
-                sendfile="0"
-            fi
-            ;;
-    esac
-    if test "$orig_sendfile" != "$sendfile"; then
-      echo "sendfile support disabled to avoid system problem"
-    fi
-fi
-
-
-
-for ac_func in sigaction
-do :
-  ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
-if test "x$ac_cv_func_sigaction" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGACTION 1
-_ACEOF
-  have_sigaction="1"
-else
-   have_sigaction="0"
-fi
-done
-
-ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include <signal.h>
-/* NetBSD declares sys_siglist in unistd.h.  */
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-"
-if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_SIGLIST $ac_have_decl
-_ACEOF
-
-
-
-for ac_func in fork
-do :
-  ac_fn_c_check_func "$LINENO" "fork" "ac_cv_func_fork"
-if test "x$ac_cv_func_fork" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_FORK 1
-_ACEOF
-  fork="1"
-else
-   fork="0"
-fi
-done
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_addr" >&5
-$as_echo_n "checking for inet_addr... " >&6; }
-if ${ac_cv_func_inet_addr+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-
-int
-main ()
-{
-
-inet_addr("127.0.0.1");
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-    ac_cv_func_inet_addr=yes
-
-else
-
-    ac_cv_func_inet_addr=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_addr" >&5
-$as_echo "$ac_cv_func_inet_addr" >&6; }
-
-if test "$ac_cv_func_inet_addr" = "yes"; then
-  have_inet_addr=1
-else
-  have_inet_addr=0
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_network" >&5
-$as_echo_n "checking for inet_network... " >&6; }
-if ${ac_cv_func_inet_network+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-
-int
-main ()
-{
-
-inet_network("127.0.0.1");
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-    ac_cv_func_inet_network=yes
-
-else
-
-    ac_cv_func_inet_network=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_network" >&5
-$as_echo "$ac_cv_func_inet_network" >&6; }
-
-if test "$ac_cv_func_inet_network" = "yes"; then
-  have_inet_network=1
-else
-  have_inet_network=0
-fi
-
-
-ac_fn_c_check_func "$LINENO" "_getch" "ac_cv_func__getch"
-if test "x$ac_cv_func__getch" = xyes; then :
-
-fi
-
-for ac_func in strerror_r
-do :
-  ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
-if test "x$ac_cv_func_strerror_r" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRERROR_R 1
-_ACEOF
-  strerror_r="1"
-else
-   strerror_r="0"
-fi
-done
-
-if test "$strerror_r" = "1"; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of return code from strerror_r" >&5
-$as_echo_n "checking for type of return code from strerror_r... " >&6; }
-if test "$cross_compiling" = yes; then :
-
-    ac_cv_strerror_r_rc_int=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-main()
-{
-  char buf[1024];
-  if (strerror_r(ERANGE, buf, sizeof buf) < 1) {
-    exit(0);
-  }
-  else {
-    exit(1);
-  }
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-    ac_cv_strerror_r_rc_int=yes
-else
-
-    ac_cv_strerror_r_rc_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-if test "x$ac_cv_strerror_r_rc_int" = xyes; then
-
-$as_echo "#define STRERROR_R_RC_INT 1" >>confdefs.h
-
-  msg="int"
-else
-  msg="pointer"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $msg" >&5
-$as_echo "$msg" >&6; }
-
-fi
-for ac_func in mmap
-do :
-  ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
-if test "x$ac_cv_func_mmap" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-  mmap="1"
-else
-   mmap="0"
-fi
-done
-
-if test "$native_mmap_emul" = "1"; then
-    mmap="1"
-fi
-for ac_func in memmove
-do :
-  ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove"
-if test "x$ac_cv_func_memmove" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_MEMMOVE 1
-_ACEOF
-  have_memmove="1"
-else
-  have_memmove="0"
-fi
-done
-
-for ac_func in getpass getpassphrase gmtime_r localtime_r mkstemp
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sigwait takes one argument" >&5
-$as_echo_n "checking whether sigwait takes one argument... " >&6; }
-if ${ac_cv_sigwait_one_arg+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#if defined(__NETBSD__) || defined(DARWIN)
-    /* When using the unproven-pthreads package, we need to pull in this
-     * header to get a prototype for sigwait().  Else things will fail later
-     * on.  XXX Should probably be fixed in the unproven-pthreads package.
-     * Darwin is declaring sigwait() in the wrong place as well.
-     */
-#include <pthread.h>
-#endif
-#include <signal.h>
-
-int
-main ()
-{
-
-  sigset_t set;
-
-  sigwait(&set);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-  ac_cv_sigwait_one_arg=yes
-
-else
-
-  ac_cv_sigwait_one_arg=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sigwait_one_arg" >&5
-$as_echo "$ac_cv_sigwait_one_arg" >&6; }
-  if test "$ac_cv_sigwait_one_arg" = "yes"; then
-
-$as_echo "#define SIGWAIT_TAKES_ONE_ARG 1" >>confdefs.h
-
-  fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-
-
-for ac_header in ByteOrder.h		\
-    conio.h		\
-    crypt.h		\
-    ctype.h		\
-    dir.h		\
-    dirent.h		\
-    dl.h		\
-    dlfcn.h		\
-    errno.h		\
-    fcntl.h		\
-    grp.h		\
-    io.h		\
-    limits.h		\
-    mach-o/dyld.h	\
-    malloc.h		\
-    memory.h		\
-    netdb.h		\
-    osreldate.h		\
-    poll.h		\
-    process.h		\
-    pwd.h		\
-    semaphore.h		\
-    signal.h		\
-    stdarg.h		\
-    stddef.h		\
-    stdio.h		\
-    stdlib.h		\
-    string.h		\
-    strings.h		\
-    sysapi.h		\
-    sysgtime.h		\
-    termios.h		\
-    time.h		\
-    tpfeq.h		\
-    tpfio.h		\
-    unistd.h		\
-    unix.h		\
-    windows.h		\
-    winsock2.h		\
-    arpa/inet.h		\
-    kernel/OS.h		\
-    net/errno.h		\
-    netinet/in.h	\
-    netinet/sctp.h      \
-    netinet/sctp_uio.h  \
-    sys/file.h		\
-    sys/ioctl.h         \
-    sys/mman.h		\
-    sys/param.h         \
-    sys/poll.h		\
-    sys/resource.h	\
-    sys/select.h	\
-    sys/sem.h		\
-    sys/sendfile.h	\
-    sys/signal.h	\
-    sys/socket.h	\
-    sys/sockio.h	\
-    sys/stat.h          \
-    sys/sysctl.h	\
-    sys/syslimits.h	\
-    sys/time.h		\
-    sys/types.h		\
-    sys/uio.h		\
-    sys/un.h		\
-    sys/wait.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-for aprt_i in ByteOrder.h		\
-    conio.h		\
-    crypt.h		\
-    ctype.h		\
-    dir.h		\
-    dirent.h		\
-    dl.h		\
-    dlfcn.h		\
-    errno.h		\
-    fcntl.h		\
-    grp.h		\
-    io.h		\
-    limits.h		\
-    mach-o/dyld.h	\
-    malloc.h		\
-    memory.h		\
-    netdb.h		\
-    osreldate.h		\
-    poll.h		\
-    process.h		\
-    pwd.h		\
-    semaphore.h		\
-    signal.h		\
-    stdarg.h		\
-    stddef.h		\
-    stdio.h		\
-    stdlib.h		\
-    string.h		\
-    strings.h		\
-    sysapi.h		\
-    sysgtime.h		\
-    termios.h		\
-    time.h		\
-    tpfeq.h		\
-    tpfio.h		\
-    unistd.h		\
-    unix.h		\
-    windows.h		\
-    winsock2.h		\
-    arpa/inet.h		\
-    kernel/OS.h		\
-    net/errno.h		\
-    netinet/in.h	\
-    netinet/sctp.h      \
-    netinet/sctp_uio.h  \
-    sys/file.h		\
-    sys/ioctl.h         \
-    sys/mman.h		\
-    sys/param.h         \
-    sys/poll.h		\
-    sys/resource.h	\
-    sys/select.h	\
-    sys/sem.h		\
-    sys/sendfile.h	\
-    sys/signal.h	\
-    sys/socket.h	\
-    sys/sockio.h	\
-    sys/stat.h          \
-    sys/sysctl.h	\
-    sys/syslimits.h	\
-    sys/time.h		\
-    sys/types.h		\
-    sys/uio.h		\
-    sys/un.h		\
-    sys/wait.h
-do
-    ac_safe=`echo "$aprt_i" | sed 'y%./+-%__p_%'`
-    aprt_2=`echo "$aprt_i" | sed -e 's%/%_%g' -e 's/\.//g' -e 's/-//g'`
-    if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-       eval "$aprt_2=1"
-    else
-       eval "$aprt_2=0"
-    fi
-done
-
-
-# IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from
-# being included by itself.  Check for <netinet/tcp.h> manually,
-# including another header file first.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for netinet/tcp.h" >&5
-$as_echo_n "checking for netinet/tcp.h... " >&6; }
-if ${apr_cv_hdr_netinet_tcp_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#include <netinet/tcp.h>
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  apr_cv_hdr_netinet_tcp_h=yes
-else
-  apr_cv_hdr_netinet_tcp_h=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_hdr_netinet_tcp_h" >&5
-$as_echo "$apr_cv_hdr_netinet_tcp_h" >&6; }
-if test "$apr_cv_hdr_netinet_tcp_h" = "yes"; then
-   netinet_tcph=1
-
-$as_echo "#define HAVE_NETINET_TCP_H 1" >>confdefs.h
-
-else
-   netinet_tcph=0
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Checking for h_errno in <netdb.h>
-if test "$netdbh" = "1"; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for h_errno in netdb.h" >&5
-$as_echo_n "checking for h_errno in netdb.h... " >&6; }
-  if ${ac_cv_h_errno_cppflags+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-
-  if test x != x; then
-    CPPFLAGS="-D $CPPFLAGS"
-  fi
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-int
-main ()
-{
-
-int h_e = h_errno;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-  if test x != x; then
-    ac_cv_h_errno_cppflags=""
-  else
-    ac_cv_h_errno_cppflags=yes
-  fi
-
-else
-
-  ac_cv_h_errno_cppflags=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    if test "$ac_cv_h_errno_cppflags" = "no"; then
-      ac_save="$CPPFLAGS"
-      for flag in _XOPEN_SOURCE_EXTENDED; do
-
-  if test x$flag != x; then
-    CPPFLAGS="-D$flag $CPPFLAGS"
-  fi
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-int
-main ()
-{
-
-int h_e = h_errno;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-  if test x$flag != x; then
-    ac_cv_h_errno_cppflags="$flag"
-  else
-    ac_cv_h_errno_cppflags=yes
-  fi
-
-else
-
-  ac_cv_h_errno_cppflags=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-        if test "$ac_cv_h_errno_cppflags" != "no"; then
-          break
-        fi
-      done
-      CPPFLAGS="$ac_save"
-    fi
-
-fi
-
-  if test "$ac_cv_h_errno_cppflags" != "no"; then
-    if test "$ac_cv_h_errno_cppflags" != "yes"; then
-      CPPFLAGS="-D$ac_cv_h_errno_cppflags $CPPFLAGS"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, with -D$ac_cv_h_errno_cppflags" >&5
-$as_echo "yes, with -D$ac_cv_h_errno_cppflags" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_h_errno_cppflags" >&5
-$as_echo "$ac_cv_h_errno_cppflags" >&6; }
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_h_errno_cppflags" >&5
-$as_echo "$ac_cv_h_errno_cppflags" >&6; }
-  fi
-
-  if test "$ac_cv_h_errno_cflags" = "no"; then
-    as_fn_error $? "can not find h_errno in netdb.h" "$LINENO" 5
-  fi
-fi
-
-# Check whether --enable-allocator-uses-mmap was given.
-if test "${enable_allocator_uses_mmap+set}" = set; then :
-  enableval=$enable_allocator_uses_mmap;  if test "$enableval" = "yes"; then
-        ac_rc=yes
-for ac_spec in header:sys/mman.h func:mmap func:munmap define:MAP_ANON; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-
-$as_echo "#define APR_ALLOCATOR_USES_MMAP 1" >>confdefs.h
-
-else
-    :
-    as_fn_error $? "mmap()/MAP_ANON not supported" "$LINENO" 5
-
-fi
-
-    fi
-
-fi
-
-
-ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then :
-  ac_cv_type_uid_t=yes
-else
-  ac_cv_type_uid_t=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
-if test $ac_cv_type_uid_t = no; then
-
-$as_echo "#define uid_t int" >>confdefs.h
-
-
-$as_echo "#define gid_t int" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
-if test "x$ac_cv_type_ssize_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define ssize_t int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_inline=$ac_kw
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
-
-case $ac_cv_c_inline in
-  inline | yes) ;;
-  *)
-    case $ac_cv_c_inline in
-      no) ac_val=;;
-      *) ac_val=$ac_cv_c_inline;;
-    esac
-    cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this sort of thing.  */
-  typedef int charset[2];
-  const charset cs = { 0, 0 };
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this sort of thing.  */
-    char tx;
-    char *t = &tx;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; } bx;
-    struct s *b = &bx; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_const=yes
-else
-  ac_cv_c_const=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether setpgrp takes no argument" >&5
-$as_echo_n "checking whether setpgrp takes no argument... " >&6; }
-if ${ac_cv_func_setpgrp_void+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  as_fn_error $? "cannot check setpgrp when cross compiling" "$LINENO" 5
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-/* If this system has a BSD-style setpgrp which takes arguments,
-  setpgrp(1, 1) will fail with ESRCH and return -1, in that case
-  exit successfully. */
-  return setpgrp (1,1) != -1;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_setpgrp_void=no
-else
-  ac_cv_func_setpgrp_void=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setpgrp_void" >&5
-$as_echo "$ac_cv_func_setpgrp_void" >&6; }
-if test $ac_cv_func_setpgrp_void = yes; then
-
-$as_echo "#define SETPGRP_VOID 1" >>confdefs.h
-
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5
-$as_echo_n "checking for socklen_t... " >&6; }
-if ${ac_cv_socklen_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-int
-main ()
-{
-
-socklen_t foo = (socklen_t) 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-    ac_cv_socklen_t=yes
-
-else
-
-    ac_cv_socklen_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_socklen_t" >&5
-$as_echo "$ac_cv_socklen_t" >&6; }
-
-if test "$ac_cv_socklen_t" = "yes"; then
-
-$as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h
-
-fi
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5
-$as_echo_n "checking size of void*... " >&6; }
-if ${ac_cv_sizeof_voidp+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_voidp" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (void*)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_voidp=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5
-$as_echo "$ac_cv_sizeof_voidp" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
-_ACEOF
-
-
-
-if test "x$ac_cv_sizeof_voidp" != "x"; then
-    voidp_size=$ac_cv_sizeof_voidp
-else
-    as_fn_error $? "Cannot determine size of void*" "$LINENO" 5
-fi
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
-$as_echo_n "checking size of char... " >&6; }
-if ${ac_cv_sizeof_char+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_char" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (char)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_char=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
-$as_echo "$ac_cv_sizeof_char" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_CHAR $ac_cv_sizeof_char
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_int" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (int)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_int=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_long" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (long)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_long=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if ${ac_cv_sizeof_short+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_short" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (short)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_short=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
-$as_echo_n "checking size of long long... " >&6; }
-if ${ac_cv_sizeof_long_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_long_long" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (long long)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_long_long=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-$as_echo "$ac_cv_sizeof_long_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
-
-
-
-if test "$ac_cv_sizeof_short" = "2"; then
-    short_value=short
-fi
-if test "$ac_cv_sizeof_int" = "4"; then
-    int_value=int
-fi
-# Now we need to find what apr_int64_t (sizeof == 8) will be.
-# The first match is our preference.
-if test "$ac_cv_sizeof_int" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val)'
-    uint64_literal='#define APR_UINT64_C(val) (val##U)'
-    int64_t_fmt='#define APR_INT64_T_FMT "d"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "u"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "x"'
-    int64_value="int"
-    long_value=int
-    int64_strfn="strtoi"
-elif test "$ac_cv_sizeof_long" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val##L)'
-    uint64_literal='#define APR_UINT64_C(val) (val##UL)'
-    int64_t_fmt='#define APR_INT64_T_FMT "ld"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "lu"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "lx"'
-    int64_value="long"
-    long_value=long
-    int64_strfn="strtol"
-elif test "$ac_cv_sizeof_long_long" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val##LL)'
-    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
-    # Linux, Solaris, FreeBSD all support ll with printf.
-    # BSD 4.4 originated 'q'.  Solaris is more popular and
-    # doesn't support 'q'.  Solaris wins.  Exceptions can
-    # go to the OS-dependent section.
-    int64_t_fmt='#define APR_INT64_T_FMT "lld"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "llu"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "llx"'
-    int64_value="long long"
-    long_value="long long"
-    int64_strfn="strtoll"
-elif test "$ac_cv_sizeof_longlong" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val##LL)'
-    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
-    int64_t_fmt='#define APR_INT64_T_FMT "qd"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "qu"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "qx"'
-    int64_value="__int64"
-    long_value="__int64"
-    int64_strfn="strtoll"
-else
-    # int64_literal may be overriden if your compiler thinks you have
-    # a 64-bit value but APR does not agree.
-    as_fn_error $? "could not detect a 64-bit integer type" "$LINENO" 5
-fi
-
-# If present, allow the C99 macro INT64_C to override our conversion.
-#
-# HP-UX's ANSI C compiler provides this without any includes, so we
-# will first look for INT64_C without adding stdint.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for INT64_C" >&5
-$as_echo_n "checking for INT64_C... " >&6; }
-if ${apr_cv_define_INT64_C+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef INT64_C
-YES_IS_DEFINED
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  apr_cv_define_INT64_C=yes
-else
-
-    # Now check for INT64_C in stdint.h
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdint.h>
-#ifdef INT64_C
-YES_IS_DEFINED
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  apr_cv_define_INT64_C=yes
-else
-  apr_cv_define_INT64_C=no
-fi
-rm -f conftest*
-
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_define_INT64_C" >&5
-$as_echo "$apr_cv_define_INT64_C" >&6; }
-
-if test "$apr_cv_define_INT64_C" = "yes"; then
-    int64_literal='#define APR_INT64_C(val) INT64_C(val)'
-    uint64_literal='#define APR_UINT64_C(val) UINT64_C(val)'
-    stdint=1
-else
-    stdint=0
-fi
-
-if test "$ac_cv_type_size_t" = "yes"; then
-    size_t_value="size_t"
-else
-    size_t_value="apr_int32_t"
-fi
-if test "$ac_cv_type_ssize_t" = "yes"; then
-    ssize_t_value="ssize_t"
-else
-    ssize_t_value="apr_int32_t"
-fi
-if test "$ac_cv_socklen_t" = "yes"; then
-    socklen_t_value="socklen_t"
-    case $host in
-        *-hp-hpux*)
-            if test "$ac_cv_sizeof_long" = "8"; then
-                # 64-bit HP-UX requires 32-bit socklens in
-                # kernel, but user-space declarations say
-                # 64-bit (socklen_t == size_t == long).
-                # This will result in many compile warnings,
-                # but we're functionally busted otherwise.
-                socklen_t_value="int"
-            fi
-            ;;
-    esac
-else
-    socklen_t_value="int"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5
-$as_echo_n "checking size of pid_t... " >&6; }
-if ${ac_cv_sizeof_pid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_sizeof_pid_t=8
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <sys/types.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(pid_t));
-  exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_sizeof_pid_t=`cat conftestval`
-else
-  ac_cv_sizeof_pid_t=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5
-$as_echo "$ac_cv_sizeof_pid_t" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_PID_T $ac_cv_sizeof_pid_t
-_ACEOF
-
-
-
-if test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then
-    pid_t_fmt='#define APR_PID_T_FMT "hd"'
-elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_int"; then
-    pid_t_fmt='#define APR_PID_T_FMT "d"'
-elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long"; then
-    pid_t_fmt='#define APR_PID_T_FMT "ld"'
-elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long_long"; then
-    pid_t_fmt='#define APR_PID_T_FMT APR_INT64_T_FMT'
-else
-    pid_t_fmt='#error Can not determine the proper size for pid_t'
-fi
-
-# Basically, we have tried to figure out the correct format strings
-# for APR types which vary between platforms, but we don't always get
-# it right.
-case $host in
-   s390*linux*)
-       # uniquely, the 31-bit Linux/s390 uses "unsigned long int"
-       # for size_t rather than "unsigned int":
-       size_t_fmt="lu"
-       ssize_t_fmt="ld"
-       ;;
-   *-os2*)
-       size_t_fmt="lu"
-       ;;
-   *-solaris*)
-       if test "$ac_cv_sizeof_long" = "8"; then
-         pid_t_fmt='#define APR_PID_T_FMT "d"'
-       else
-         pid_t_fmt='#define APR_PID_T_FMT "ld"'
-       fi
-       ;;
-   *aix4*|*aix5*)
-       ssize_t_fmt="ld"
-       size_t_fmt="lu"
-       ;;
-    *beos*)
-        ssize_t_fmt="ld"
-        size_t_fmt="ld"
-        ;;
-    *apple-darwin*)
-        osver=`uname -r`
-        case $osver in
-           [0-7].*)
-              ssize_t_fmt="d"
-              ;;
-           *)
-              ssize_t_fmt="ld"
-              ;;
-        esac
-        size_t_fmt="lu"
-        ;;
-    *-mingw*)
-        int64_t_fmt='#define APR_INT64_T_FMT "I64d"'
-        uint64_t_fmt='#define APR_UINT64_T_FMT "I64u"'
-        uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "I64x"'
-        int64_value="__int64"
-        long_value="__int64"
-        int64_strfn="_strtoi64"
-        ;;
-esac
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ssize_t and int are the same" >&5
-$as_echo_n "checking whether ssize_t and int are the same... " >&6; }
-if ${apr_cv_typematch_ssize_t_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-    int foo[0 - !__builtin_types_compatible_p(ssize_t, int)];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_typematch_ssize_t_int=yes
-ssize_t_fmt="d"
-else
-  apr_cv_typematch_ssize_t_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_ssize_t_int" >&5
-$as_echo "$apr_cv_typematch_ssize_t_int" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ssize_t and long are the same" >&5
-$as_echo_n "checking whether ssize_t and long are the same... " >&6; }
-if ${apr_cv_typematch_ssize_t_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-    int foo[0 - !__builtin_types_compatible_p(ssize_t, long)];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_typematch_ssize_t_long=yes
-ssize_t_fmt="ld"
-else
-  apr_cv_typematch_ssize_t_long=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_ssize_t_long" >&5
-$as_echo "$apr_cv_typematch_ssize_t_long" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether size_t and unsigned int are the same" >&5
-$as_echo_n "checking whether size_t and unsigned int are the same... " >&6; }
-if ${apr_cv_typematch_size_t_unsigned_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-    int foo[0 - !__builtin_types_compatible_p(size_t, unsigned int)];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_typematch_size_t_unsigned_int=yes
-size_t_fmt="u"
-else
-  apr_cv_typematch_size_t_unsigned_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_size_t_unsigned_int" >&5
-$as_echo "$apr_cv_typematch_size_t_unsigned_int" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether size_t and unsigned long are the same" >&5
-$as_echo_n "checking whether size_t and unsigned long are the same... " >&6; }
-if ${apr_cv_typematch_size_t_unsigned_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-    int foo[0 - !__builtin_types_compatible_p(size_t, unsigned long)];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_typematch_size_t_unsigned_long=yes
-size_t_fmt="lu"
-else
-  apr_cv_typematch_size_t_unsigned_long=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_size_t_unsigned_long" >&5
-$as_echo "$apr_cv_typematch_size_t_unsigned_long" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5
-$as_echo_n "checking size of ssize_t... " >&6; }
-if ${ac_cv_sizeof_ssize_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_sizeof_ssize_t=8
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <sys/types.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(ssize_t));
-  exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_sizeof_ssize_t=`cat conftestval`
-else
-  ac_cv_sizeof_ssize_t=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ssize_t" >&5
-$as_echo "$ac_cv_sizeof_ssize_t" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t
-_ACEOF
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_ssize_t" >&5
-$as_echo_n "checking which format to use for apr_ssize_t... " >&6; }
-if test -n "$ssize_t_fmt"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %$ssize_t_fmt" >&5
-$as_echo "%$ssize_t_fmt" >&6; }
-elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_int"; then
-    ssize_t_fmt="d"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %d" >&5
-$as_echo "%d" >&6; }
-elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_long"; then
-    ssize_t_fmt="ld"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %ld" >&5
-$as_echo "%ld" >&6; }
-else
-    as_fn_error $? "could not determine the proper format for apr_ssize_t" "$LINENO" 5
-fi
-
-ssize_t_fmt="#define APR_SSIZE_T_FMT \"$ssize_t_fmt\""
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
-$as_echo_n "checking size of size_t... " >&6; }
-if ${ac_cv_sizeof_size_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_sizeof_size_t=8
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <stddef.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(size_t));
-  exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_sizeof_size_t=`cat conftestval`
-else
-  ac_cv_sizeof_size_t=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
-$as_echo "$ac_cv_sizeof_size_t" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
-_ACEOF
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_size_t" >&5
-$as_echo_n "checking which format to use for apr_size_t... " >&6; }
-if test -n "$size_t_fmt"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %$size_t_fmt" >&5
-$as_echo "%$size_t_fmt" >&6; }
-elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_int"; then
-    size_t_fmt="d"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %d" >&5
-$as_echo "%d" >&6; }
-elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_long"; then
-    size_t_fmt="ld"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %ld" >&5
-$as_echo "%ld" >&6; }
-else
-    as_fn_error $? "could not determine the proper format for apr_size_t" "$LINENO" 5
-fi
-
-size_t_fmt="#define APR_SIZE_T_FMT \"$size_t_fmt\""
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
-$as_echo_n "checking size of off_t... " >&6; }
-if ${ac_cv_sizeof_off_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_sizeof_off_t=8
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <sys/types.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(off_t));
-  exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_sizeof_off_t=`cat conftestval`
-else
-  ac_cv_sizeof_off_t=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
-$as_echo "$ac_cv_sizeof_off_t" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
-_ACEOF
-
-
-
-if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
-    # Enable LFS
-    aprlfs=1
-    for ac_func in mmap64 sendfile64 sendfilev64 mkstemp64 readdir64_r
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-elif test "${ac_cv_sizeof_off_t}" != "${ac_cv_sizeof_size_t}"; then
-    # unsure of using -gt above is as portable, can can't forsee where
-    # off_t can legitimately be smaller than size_t
-    aprlfs=1
-else
-    aprlfs=0
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which type to use for apr_off_t" >&5
-$as_echo_n "checking which type to use for apr_off_t... " >&6; }
-if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
-    # LFS is go!
-    off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
-    off_t_value='off64_t'
-    off_t_strfn='apr_strtoi64'
-elif test "${ac_cv_sizeof_off_t}x${ac_cv_sizeof_long}" = "4x4"; then
-    # Special case: off_t may change size with _FILE_OFFSET_BITS
-    # on 32-bit systems with LFS support.  To avoid compatibility
-    # issues when other packages do define _FILE_OFFSET_BITS,
-    # hard-code apr_off_t to long.
-    off_t_value=long
-    off_t_fmt='#define APR_OFF_T_FMT "ld"'
-    off_t_strfn='strtol'
-elif test "$ac_cv_type_off_t" = "yes"; then
-    off_t_value=off_t
-    # off_t is more commonly a long than an int; prefer that case
-    # where int and long are the same size.
-    if test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long"; then
-        off_t_fmt='#define APR_OFF_T_FMT "ld"'
-        off_t_strfn='strtol'
-    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_int"; then
-        off_t_fmt='#define APR_OFF_T_FMT "d"'
-        off_t_strfn='strtoi'
-    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long_long"; then
-        off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
-        off_t_strfn='apr_strtoi64'
-    else
-        as_fn_error $? "could not determine the size of off_t" "$LINENO" 5
-    fi
-    # Per OS tuning...
-    case $host in
-    *-mingw*)
-        off_t_value=apr_int64_t
-        off_t_fmt='#define APR_OFF_T_FMT "I64d"'
-        off_t_strfn='_strtoi64'
-        ;;
-    esac
-else
-   # Fallback on int
-   off_t_value=apr_int32_t
-   off_t_fmt=d
-   off_t_strfn='strtoi'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $off_t_value" >&5
-$as_echo "$off_t_value" >&6; }
-
-# Regardless of whether _LARGEFILE64_SOURCE is used, on some
-# platforms _FILE_OFFSET_BITS will affect the size of ino_t and hence
-# the build-time ABI may be different from the apparent ABI when using
-# APR with another package which *does* define _FILE_OFFSET_BITS.
-# (Exactly as per the case above with off_t where LFS is *not* used)
-#
-# To be safe, hard-code apr_ino_t as 'unsigned long' or 'unsigned int'
-# iff that is exactly the size of ino_t here; otherwise use ino_t as existing
-# releases did.  To be correct, apr_ino_t should have been made an
-# ino64_t as apr_off_t is off64_t, but this can't be done now without
-# breaking ABI.
-
-# Per OS tuning...
-case $host in
-*mingw*)
-    ino_t_value=apr_int64_t
-    ;;
-*)
-    ino_t_value=ino_t
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ino_t" >&5
-$as_echo_n "checking size of ino_t... " >&6; }
-if ${ac_cv_sizeof_ino_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_sizeof_ino_t=$ac_cv_sizeof_long
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-$ac_includes_default
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(ino_t));
-  exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_sizeof_ino_t=`cat conftestval`
-else
-  ac_cv_sizeof_ino_t=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ino_t" >&5
-$as_echo "$ac_cv_sizeof_ino_t" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INO_T $ac_cv_sizeof_ino_t
-_ACEOF
-
-
-    if test $ac_cv_sizeof_ino_t = 4; then
-        if test $ac_cv_sizeof_long = 4; then
-            ino_t_value="unsigned long"
-        else
-            ino_t_value="unsigned int"
-        fi
-    fi
-    ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: using $ino_t_value for ino_t" >&5
-$as_echo "$as_me: using $ino_t_value for ino_t" >&6;}
-
-# Checks for endianness
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_bigendian=unknown
-    # See if we're dealing with a universal compiler.
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __APPLE_CC__
-	       not a universal capable compiler
-	     #endif
-	     typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-	# Check for potential -arch flags.  It is not universal unless
-	# there are at least two -arch flags with different values.
-	ac_arch=
-	ac_prev=
-	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
-	 if test -n "$ac_prev"; then
-	   case $ac_word in
-	     i?86 | x86_64 | ppc | ppc64)
-	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
-		 ac_arch=$ac_word
-	       else
-		 ac_cv_c_bigendian=universal
-		 break
-	       fi
-	       ;;
-	   esac
-	   ac_prev=
-	 elif test "x$ac_word" = "x-arch"; then
-	   ac_prev=arch
-	 fi
-       done
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if sys/param.h defines the BYTE_ORDER macro.
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-	     #include <sys/param.h>
-
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
-		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
-		     && LITTLE_ENDIAN)
-	      bogus endian macros
-	     #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-		#include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
-		 not big endian
-		#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
-else
-  ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
-	      bogus endian macros
-	     #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to _BIG_ENDIAN or not.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
-		 not big endian
-		#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
-else
-  ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # Compile a test program.
-      if test "$cross_compiling" = yes; then :
-  # Try to guess by grepping values from an object file.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-short int ascii_mm[] =
-		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-		short int ascii_ii[] =
-		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-		int use_ascii (int i) {
-		  return ascii_mm[i] + ascii_ii[i];
-		}
-		short int ebcdic_ii[] =
-		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-		short int ebcdic_mm[] =
-		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-		int use_ebcdic (int i) {
-		  return ebcdic_mm[i] + ebcdic_ii[i];
-		}
-		extern int foo;
-
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
-	      ac_cv_c_bigendian=yes
-	    fi
-	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
-	      if test "$ac_cv_c_bigendian" = unknown; then
-		ac_cv_c_bigendian=no
-	      else
-		# finding both strings is unlikely to happen, but who knows?
-		ac_cv_c_bigendian=unknown
-	      fi
-	    fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-	     /* Are we little or big endian?  From Harbison&Steele.  */
-	     union
-	     {
-	       long int l;
-	       char c[sizeof (long int)];
-	     } u;
-	     u.l = 1;
-	     return u.c[sizeof (long int) - 1] == 1;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_bigendian=no
-else
-  ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
-   yes)
-     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
-;; #(
-   no)
-      ;; #(
-   universal)
-
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
-
-     ;; #(
-   *)
-     as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
- esac
-
-if test $ac_cv_c_bigendian = yes; then
-    bigendian=1
-else
-    bigendian=0
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of struct iovec" >&5
-$as_echo_n "checking size of struct iovec... " >&6; }
-if ${ac_cv_sizeof_struct_iovec+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_sizeof_struct_iovec=0
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(struct iovec));
-  exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_sizeof_struct_iovec=`cat conftestval`
-else
-  ac_cv_sizeof_struct_iovec=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_struct_iovec" >&5
-$as_echo "$ac_cv_sizeof_struct_iovec" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_STRUCT_IOVEC $ac_cv_sizeof_struct_iovec
-_ACEOF
-
-
-if test "$ac_cv_sizeof_struct_iovec" = "0"; then
-    have_iovec=0
-else
-    have_iovec=1
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in strnicmp
-do :
-  ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp"
-if test "x$ac_cv_func_strnicmp" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRNICMP 1
-_ACEOF
- have_strnicmp="1"
-else
-  have_strnicmp="0"
-fi
-done
-
-for ac_func in strncasecmp
-do :
-  ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp"
-if test "x$ac_cv_func_strncasecmp" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRNCASECMP 1
-_ACEOF
- have_strncasecmp="1"
-else
-  have_strncasecmp="0"
-fi
-done
-
-for ac_func in stricmp
-do :
-  ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp"
-if test "x$ac_cv_func_stricmp" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRICMP 1
-_ACEOF
- have_stricmp="1"
-else
-  have_stricmp="0"
-fi
-done
-
-for ac_func in strcasecmp
-do :
-  ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
-if test "x$ac_cv_func_strcasecmp" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRCASECMP 1
-_ACEOF
- have_strcasecmp="1"
-else
-  have_strcasecmp="0"
-fi
-done
-
-for ac_func in strdup
-do :
-  ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
-if test "x$ac_cv_func_strdup" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRDUP 1
-_ACEOF
- have_strdup="1"
-else
-  have_strdup="0"
-fi
-done
-
-for ac_func in strstr
-do :
-  ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr"
-if test "x$ac_cv_func_strstr" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRSTR 1
-_ACEOF
- have_strstr="1"
-else
-  have_strstr="0"
-fi
-done
-
-for ac_func in memchr
-do :
-  ac_fn_c_check_func "$LINENO" "memchr" "ac_cv_func_memchr"
-if test "x$ac_cv_func_memchr" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_MEMCHR 1
-_ACEOF
- have_memchr="1"
-else
-  have_memchr="0"
-fi
-done
-
-as_ac_var=`$as_echo "ac_cv_func_$int64_strfn" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$int64_strfn" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  have_int64_strfn="1"
-else
-  have_int64_strfn="0"
-fi
-
-
-if test "$have_int64_strfn" = "0" && test "$int64_strfn" = "strtoll"; then
-    int64_strfn="strtoq"
-    ac_fn_c_check_func "$LINENO" "strtoq" "ac_cv_func_strtoq"
-if test "x$ac_cv_func_strtoq" = xyes; then :
-  have_int64_strfn=1
-else
-  have_int64_strfn=0
-fi
-
-fi
-
-if test "$have_int64_strfn" = "1"; then
-
-cat >>confdefs.h <<_ACEOF
-#define APR_INT64_STRFN $int64_strfn
-_ACEOF
-
-fi
-
-
-
-
-
-
-
-
-
-if test "$off_t_strfn" = "apr_strtoi64" && test "$have_int64_strfn" = "1"; then
-    off_t_strfn=$int64_strfn
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define APR_OFF_T_STRFN $off_t_strfn
-_ACEOF
-
-
-echo "${nl}Checking for DSO..."
-# Check whether --enable-dso was given.
-if test "${enable_dso+set}" = set; then :
-  enableval=$enable_dso; if test "x$enableval" = "xyes"; then
-      dsotype=any
-   else
-      dsotype=$enableval
-   fi
-
-else
-  dsotype=any
-fi
-
-
-if test "$dsotype" = "any"; then
-    if test "$dsotype" = "any"; then
-      case $host in
-        *darwin[0-8]\.*)
-          # Original Darwin, not for 9.0!:
-          ac_fn_c_check_func "$LINENO" "NSLinkModule" "ac_cv_func_NSLinkModule"
-if test "x$ac_cv_func_NSLinkModule" = xyes; then :
-  dsotype=dyld
-fi
-;;
-        hppa*-hpux[1-9]\.*|hppa*-hpux1[01]*)
-          # shl is specific to parisc hpux SOM binaries, not used for 64 bit
-          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  have_shl=1
-fi
-
-          if test "$ac_cv_sizeof_voidp$have_shl" = "41"; then
-            dsotype=shl;
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldld\""
-    LIBS="-ldld"
-  else
-    apr_addto_bugger="-ldld"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-          fi;;
-        *mingw*|*-os2*)
-          # several 'other's below probably belong up here.  If they always
-          # use a platform implementation and shouldn't test the dlopen/dlfcn
-          # features, then bring them up here.
-          # But if they -should- optionally use dlfcn, and/or need the config
-          # detection of dlopen/dlsym, do not move them up.
-          dsotype=other ;;
-      esac
-    fi
-    # Normal POSIX:
-    if test "$dsotype" = "any"; then
-      ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  dsotype=dlfcn
-fi
-
-    fi
-    if test "$dsotype" = "any"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  dsotype=dlfcn;
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldl\""
-    LIBS="-ldl"
-  else
-    apr_addto_bugger="-ldl"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-fi
-
-    fi
-    if test "$dsotype" = "dlfcn"; then
-        # ReliantUnix has dlopen() in libc but dlsym() in libdl :(
-        ac_fn_c_check_func "$LINENO" "dlsym" "ac_cv_func_dlsym"
-if test "x$ac_cv_func_dlsym" = xyes; then :
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
-$as_echo_n "checking for dlsym in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlsym+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlsym ();
-int
-main ()
-{
-return dlsym ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlsym=yes
-else
-  ac_cv_lib_dl_dlsym=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5
-$as_echo "$ac_cv_lib_dl_dlsym" >&6; }
-if test "x$ac_cv_lib_dl_dlsym" = xyes; then :
-
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldl\""
-    LIBS="-ldl"
-  else
-    apr_addto_bugger="-ldl"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-else
-  dsotype=any
-              echo "Weird: dlopen() was found but dlsym() was not found!"
-fi
-
-fi
-
-    fi
-    if test "$dsotype" = "any"; then
-      # BeOS:
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for load_image in -lroot" >&5
-$as_echo_n "checking for load_image in -lroot... " >&6; }
-if ${ac_cv_lib_root_load_image+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lroot  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char load_image ();
-int
-main ()
-{
-return load_image ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_root_load_image=yes
-else
-  ac_cv_lib_root_load_image=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_root_load_image" >&5
-$as_echo "$ac_cv_lib_root_load_image" >&6; }
-if test "x$ac_cv_lib_root_load_image" = xyes; then :
-  dsotype=other
-fi
-
-    fi
-    # Everything else:
-    if test "$dsotype" = "any"; then
-        case $host in
-        *os390|*os400|*-aix*)
-          # Some -aix5 will use dl, no hassles.  Keep that pattern here.
-          dsotype=other ;;
-        *-hpux*)
-          if test "$have_shl" = "1"; then
-            dsotype=shl;
-  if test "x$LIBS" = "x"; then
-    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldld\""
-    LIBS="-ldld"
-  else
-    apr_addto_bugger="-ldld"
-    for i in $apr_addto_bugger; do
-      apr_addto_duplicate="0"
-      for j in $LIBS; do
-        if test "x$i" = "x$j"; then
-          apr_addto_duplicate="1"
-          break
-        fi
-      done
-      if test $apr_addto_duplicate = "0"; then
-        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
-        LIBS="$LIBS $i"
-      fi
-    done
-  fi
-
-          fi;;
-        esac
-    fi
-fi
-
-if test "$dsotype" = "any"; then
-    as_fn_error $? "Could not detect suitable DSO implementation" "$LINENO" 5
-elif test "$dsotype" = "no"; then
-    aprdso="0"
-else
-    case "$dsotype" in
-    dlfcn)
-$as_echo "#define DSO_USE_DLFCN 1" >>confdefs.h
-;;
-    shl)
-$as_echo "#define DSO_USE_SHL 1" >>confdefs.h
-;;
-    dyld)
-$as_echo "#define DSO_USE_DYLD 1" >>confdefs.h
-;;
-    other) ;; # Use whatever is in dso/OSDIR
-    *) as_fn_error $? "Unknown DSO implementation \"$dsotype\"" "$LINENO" 5;;
-    esac
-    aprdso="1"
-    apr_modules="$apr_modules dso"
-fi
-
-
-
-echo "${nl}Checking for Processes..."
-
-for ac_func in waitpid
-do :
-  ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid"
-if test "x$ac_cv_func_waitpid" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_WAITPID 1
-_ACEOF
-
-fi
-done
-
-
-# Check whether --enable-other-child was given.
-if test "${enable_other_child+set}" = set; then :
-  enableval=$enable_other_child;  if test "$enableval" = "yes"; then
-        oc="1"
-    else
-        oc="0"
-    fi
-else
-   oc=1
-fi
-
-
-
-
-if test -z "$have_proc_invoked"; then
-  have_proc_invoked="0"
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Variable Length Arrays" >&5
-$as_echo_n "checking for Variable Length Arrays... " >&6; }
-apr_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $CFLAGS_WARN"
- if test "$ac_cv_c_compiler_gnu" = "yes"; then
-   CFLAGS="$CFLAGS -Werror"
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "confdefs.h"
-
-
-   int main(int argc, const char *const *argv) {
-
-    int foo[argc];
-    foo[0] = 0;
-
-      return 0; }
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  vla_msg=yes
-else
-  vla_msg=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$apr_save_CFLAGS
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vla_msg" >&5
-$as_echo "$vla_msg" >&6; }
-if test "$vla_msg" = "yes"; then
-
-$as_echo "#define HAVE_VLA 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking struct rlimit" >&5
-$as_echo_n "checking struct rlimit... " >&6; }
-if ${ac_cv_struct_rlimit+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-if test "$cross_compiling" = yes; then :
-
-    ac_cv_struct_rlimit=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-main()
-{
-    struct rlimit limit;
-    limit.rlim_cur = 0;
-    limit.rlim_max = 0;
-    exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-    ac_cv_struct_rlimit=yes
-else
-
-    ac_cv_struct_rlimit=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_rlimit" >&5
-$as_echo "$ac_cv_struct_rlimit" >&6; }
-struct_rlimit=0
-test "x$ac_cv_struct_rlimit" = xyes && struct_rlimit=1
-
-
-echo "${nl}Checking for Locking..."
-
-for ac_func in semget semctl flock
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-for ac_header in semaphore.h OS.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sem_open" >&5
-$as_echo_n "checking for library containing sem_open... " >&6; }
-if ${ac_cv_search_sem_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char sem_open ();
-int
-main ()
-{
-return sem_open ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' rt; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_sem_open=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_sem_open+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_sem_open+:} false; then :
-
-else
-  ac_cv_search_sem_open=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_open" >&5
-$as_echo "$ac_cv_search_sem_open" >&6; }
-ac_res=$ac_cv_search_sem_open
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-for ac_func in sem_close sem_unlink sem_post sem_wait create_sem
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-# Some systems return ENOSYS from sem_open.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sem_open" >&5
-$as_echo_n "checking for working sem_open... " >&6; }
-if ${ac_cv_func_sem_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-if test "$cross_compiling" = yes; then :
-  ac_cv_func_sem_open=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <semaphore.h>
-#ifndef SEM_FAILED
-#define SEM_FAILED (-1)
-#endif
-main()
-{
-    sem_t *psem;
-    const char *sem_name = "/apr_autoconf";
-
-    psem = sem_open(sem_name, O_CREAT, 0644, 1);
-    if (psem == (sem_t *)SEM_FAILED) {
-	exit(1);
-    }
-    sem_close(psem);
-    psem = sem_open(sem_name, O_CREAT | O_EXCL, 0644, 1);
-    if (psem != (sem_t *)SEM_FAILED) {
-        sem_close(psem);
-        exit(1);
-    }
-    sem_unlink(sem_name);
-    exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_sem_open=yes
-else
-  ac_cv_func_sem_open=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sem_open" >&5
-$as_echo "$ac_cv_func_sem_open" >&6; }
-
-# It's stupid, but not all platforms have union semun, even those that need it.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for union semun in sys/sem.h" >&5
-$as_echo_n "checking for union semun in sys/sem.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/sem.h>
-
-int
-main ()
-{
-
-union semun arg;
-semctl(0, 0, 0, arg);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  have_union_semun="1" union_semun=yes
-msg=yes
-else
-
-have_union_semun="0"
-msg=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $msg" >&5
-$as_echo "$msg" >&6; }
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LOCK_EX in sys/file.h" >&5
-$as_echo_n "checking for LOCK_EX in sys/file.h... " >&6; }
-if ${ac_cv_define_LOCK_EX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/file.h>
-#ifdef LOCK_EX
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_LOCK_EX=yes
-else
-  ac_cv_define_LOCK_EX=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_LOCK_EX" >&5
-$as_echo "$ac_cv_define_LOCK_EX" >&6; }
-  if test "$ac_cv_define_LOCK_EX" = "yes"; then
-
-$as_echo "#define HAVE_LOCK_EX 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for F_SETLK in fcntl.h" >&5
-$as_echo_n "checking for F_SETLK in fcntl.h... " >&6; }
-if ${ac_cv_define_F_SETLK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <fcntl.h>
-#ifdef F_SETLK
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_F_SETLK=yes
-else
-  ac_cv_define_F_SETLK=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_F_SETLK" >&5
-$as_echo "$ac_cv_define_F_SETLK" >&6; }
-  if test "$ac_cv_define_F_SETLK" = "yes"; then
-
-$as_echo "#define HAVE_F_SETLK 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SEM_UNDO in sys/sem.h" >&5
-$as_echo_n "checking for SEM_UNDO in sys/sem.h... " >&6; }
-if ${ac_cv_define_SEM_UNDO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/sem.h>
-#ifdef SEM_UNDO
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_SEM_UNDO=yes
-else
-  ac_cv_define_SEM_UNDO=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_SEM_UNDO" >&5
-$as_echo "$ac_cv_define_SEM_UNDO" >&6; }
-  if test "$ac_cv_define_SEM_UNDO" = "yes"; then
-
-$as_echo "#define HAVE_SEM_UNDO 1" >>confdefs.h
-
-  fi
-
-
-# We are assuming that if the platform doesn't have POLLIN, it doesn't have
-# any POLL definitions.
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POLLIN in poll.h sys/poll.h" >&5
-$as_echo_n "checking for POLLIN in poll.h sys/poll.h... " >&6; }
-if ${ac_cv_define_POLLIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    ac_cv_define_POLLIN=no
-    for curhdr in poll.h sys/poll.h
-    do
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <$curhdr>
-#ifdef POLLIN
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_POLLIN=yes
-fi
-rm -f conftest*
-
-    done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_POLLIN" >&5
-$as_echo "$ac_cv_define_POLLIN" >&6; }
-  if test "$ac_cv_define_POLLIN" = "yes"; then
-
-$as_echo "#define HAVE_POLLIN 1" >>confdefs.h
-
-  fi
-
-
-if test "$threads" = "1"; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PROCESS_SHARED in pthread.h" >&5
-$as_echo_n "checking for PTHREAD_PROCESS_SHARED in pthread.h... " >&6; }
-if ${ac_cv_define_PTHREAD_PROCESS_SHARED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <pthread.h>
-#ifdef PTHREAD_PROCESS_SHARED
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_PTHREAD_PROCESS_SHARED=yes
-else
-  ac_cv_define_PTHREAD_PROCESS_SHARED=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_PTHREAD_PROCESS_SHARED" >&5
-$as_echo "$ac_cv_define_PTHREAD_PROCESS_SHARED" >&6; }
-  if test "$ac_cv_define_PTHREAD_PROCESS_SHARED" = "yes"; then
-
-$as_echo "#define HAVE_PTHREAD_PROCESS_SHARED 1" >>confdefs.h
-
-  fi
-
-    for ac_func in pthread_mutexattr_setpshared
-do :
-  ac_fn_c_check_func "$LINENO" "pthread_mutexattr_setpshared" "ac_cv_func_pthread_mutexattr_setpshared"
-if test "x$ac_cv_func_pthread_mutexattr_setpshared" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_MUTEXATTR_SETPSHARED 1
-_ACEOF
-
-fi
-done
-
-    # Some systems have setpshared and define PROCESS_SHARED, but don't
-    # really support PROCESS_SHARED locks.  So, we must validate that we
-    # can go through the steps without receiving some sort of system error.
-    # Linux and older versions of AIX have this problem.
-    ac_rc=yes
-for ac_spec in header:pthread.h define:PTHREAD_PROCESS_SHARED func:pthread_mutexattr_setpshared; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working PROCESS_SHARED locks" >&5
-$as_echo_n "checking for working PROCESS_SHARED locks... " >&6; }
-if ${apr_cv_process_shared_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-      if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <pthread.h>
-        int main()
-        {
-            pthread_mutex_t mutex;
-            pthread_mutexattr_t attr;
-            if (pthread_mutexattr_init(&attr))
-                exit(1);
-            if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED))
-                exit(2);
-            if (pthread_mutex_init(&mutex, &attr))
-                exit(3);
-            if (pthread_mutexattr_destroy(&attr))
-                exit(4);
-            if (pthread_mutex_destroy(&mutex))
-                exit(5);
-            exit(0);
-        }
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_process_shared_works=yes
-else
-  apr_cv_process_shared_works=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_process_shared_works" >&5
-$as_echo "$apr_cv_process_shared_works" >&6; }
-      # Override detection of pthread_mutexattr_setpshared
-      ac_cv_func_pthread_mutexattr_setpshared=$apr_cv_process_shared_works
-else
-    :
-
-fi
-
-
-    if test "$ac_cv_func_pthread_mutexattr_setpshared" = "yes"; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for robust cross-process mutex support" >&5
-$as_echo_n "checking for robust cross-process mutex support... " >&6; }
-if ${apr_cv_mutex_robust_shared+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <pthread.h>
-#include <stdlib.h>
-
-int main(int argc, char **argv)
-{
-    pthread_mutex_t mutex;
-    pthread_mutexattr_t attr;
-
-    if (pthread_mutexattr_init(&attr))
-        exit(1);
-    if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED))
-        exit(2);
-    if (pthread_mutexattr_setrobust_np(&attr, PTHREAD_MUTEX_ROBUST_NP))
-        exit(3);
-    if (pthread_mutexattr_setprotocol(&attr, PTHREAD_PRIO_INHERIT))
-        exit(4);
-    if (pthread_mutex_init(&mutex, &attr))
-        exit(5);
-    if (pthread_mutexattr_destroy(&attr))
-        exit(6);
-    if (pthread_mutex_destroy(&mutex))
-        exit(7);
-
-    exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_mutex_robust_shared=yes
-else
-  apr_cv_mutex_robust_shared=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_mutex_robust_shared" >&5
-$as_echo "$apr_cv_mutex_robust_shared" >&6; }
-
-if test "$apr_cv_mutex_robust_shared" = "yes"; then
-
-$as_echo "#define HAVE_PTHREAD_MUTEX_ROBUST 1" >>confdefs.h
-
-fi
-
-    fi
-fi
-
-# See which lock mechanisms we can support on this system.
-ac_rc=yes
-for ac_spec in header:semaphore.h func:sem_open func:sem_close              func:sem_unlink func:sem_post func:sem_wait; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    hasposixser="1"
-else
-    :
-    hasposixser="0"
-fi
-
-ac_rc=yes
-for ac_spec in func:semget func:semctl define:SEM_UNDO; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    hassysvser="1"
-else
-    :
-    hassysvser="0"
-fi
-
-ac_rc=yes
-for ac_spec in func:flock define:LOCK_EX; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    hasflockser="1"
-else
-    :
-    hasflockser="0"
-fi
-
-ac_rc=yes
-for ac_spec in header:fcntl.h define:F_SETLK; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    hasfcntlser="1"
-else
-    :
-    hasfcntlser="0"
-fi
-
-# note: the current APR use of shared mutex requires /dev/zero
-ac_rc=yes
-for ac_spec in header:pthread.h define:PTHREAD_PROCESS_SHARED              func:pthread_mutexattr_setpshared              file:/dev/zero; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    hasprocpthreadser="1"
-else
-    :
-    hasprocpthreadser="0"
-fi
-
-ac_rc=yes
-for ac_spec in header:OS.h func:create_sem; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-    hasbeossem="1"
-else
-    :
-    hasbeossem="0"
-fi
-
-
-# See which lock mechanism we'll select by default on this system.
-# The last APR_DECIDE to execute sets the default.
-# At this stage, we match the ordering in Apache 1.3
-# which is (highest to lowest): sysvsem -> fcntl -> flock.
-# POSIX semaphores and cross-process pthread mutexes are not
-# used by default since they have less desirable behaviour when
-# e.g. a process holding the mutex segfaults.
-# The BEOSSEM decision doesn't require any substitutions but is
-# included here to prevent the fcntl() branch being selected
-# from the decision making.
-ac_decision_item='apr_lock implementation method'
-ac_decision_msg='FAILED'
-ac_decision=''
-
-ac_rc=yes
-for ac_spec in func:flock define:LOCK_EX; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-
-ac_decision='USE_FLOCK_SERIALIZE'
-ac_decision_msg='4.2BSD-style flock()'
-ac_decision_USE_FLOCK_SERIALIZE=yes
-ac_decision_USE_FLOCK_SERIALIZE_msg='4.2BSD-style flock()'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:fcntl.h define:F_SETLK; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-
-ac_decision='USE_FCNTL_SERIALIZE'
-ac_decision_msg='SVR4-style fcntl()'
-ac_decision_USE_FCNTL_SERIALIZE=yes
-ac_decision_USE_FCNTL_SERIALIZE_msg='SVR4-style fcntl()'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in func:semget func:semctl define:SEM_UNDO; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-
-ac_decision='USE_SYSVSEM_SERIALIZE'
-ac_decision_msg='SysV IPC semget()'
-ac_decision_USE_SYSVSEM_SERIALIZE=yes
-ac_decision_USE_SYSVSEM_SERIALIZE_msg='SysV IPC semget()'
-
-else
-    :
-
-fi
-
-ac_rc=yes
-for ac_spec in header:OS.h func:create_sem; do
-    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
-    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
-    case $ac_type in
-        header )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_header_$ac_item"
-            ;;
-        file )
-            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
-            ac_var="ac_cv_file_$ac_item"
-            ;;
-        func )   ac_var="ac_cv_func_$ac_item"   ;;
-        struct ) ac_var="ac_cv_struct_$ac_item" ;;
-        define ) ac_var="ac_cv_define_$ac_item" ;;
-        custom ) ac_var="$ac_item" ;;
-    esac
-    eval "ac_val=\$$ac_var"
-    if test ".$ac_val" != .yes; then
-        ac_rc=no
-        break
-    fi
-done
-if test ".$ac_rc" = .yes; then
-    :
-
-ac_decision='USE_BEOSSEM'
-ac_decision_msg='BeOS Semaphores'
-ac_decision_USE_BEOSSEM=yes
-ac_decision_USE_BEOSSEM_msg='BeOS Semaphores'
-
-else
-    :
-
-fi
-
-if test "x$apr_lock_method" != "x"; then
-    ac_decision="$apr_lock_method"
-eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\""
-
-fi
-if test ".$ac_decision" = .; then
-    echo "$0:Error: decision on $ac_decision_item failed" 1>&2
-    exit 1
-else
-    if test ".$ac_decision_msg" = .; then
-        ac_decision_msg="$ac_decision"
-    fi
-    cat >>confdefs.h <<_ACEOF
-#define ${ac_decision_item} 1
-_ACEOF
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: decision on $ac_decision_item... $ac_decision_msg" >&5
-$as_echo "decision on $ac_decision_item... $ac_decision_msg" >&6; }
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define $ac_decision 1
-_ACEOF
-
-
-flockser="0"
-sysvser="0"
-posixser="0"
-procpthreadser="0"
-fcntlser="0"
-case $ac_decision in
-    USE_FLOCK_SERIALIZE )
-        flockser="1"
-        ;;
-    USE_FCNTL_SERIALIZE )
-        fcntlser="1"
-        ;;
-    USE_SYSVSEM_SERIALIZE )
-        sysvser="1"
-        ;;
-    USE_POSIXSEM_SERIALIZE )
-        posixser="1"
-        ;;
-    USE_PROC_PTHREAD_SERIALIZE )
-        procpthreadser="1"
-        ;;
-    USE_BEOSSEM )
-        beossem="1"
-        ;;
-esac
-
-if test $hasfcntlser = "1"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fcntl returns EACCES when F_SETLK is already held" >&5
-$as_echo_n "checking if fcntl returns EACCES when F_SETLK is already held... " >&6; }
-if test "$cross_compiling" = yes; then :
-  apr_fcntl_tryacquire_eacces=0
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#if defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#include <fcntl.h>
-#include <errno.h>
-
-int fd;
-struct flock proc_mutex_lock_it = {0};
-const char *fname = "conftest.fcntl";
-
-int main()
-{
-    int rc, status;;
-    proc_mutex_lock_it.l_whence = SEEK_SET;   /* from current point */
-    proc_mutex_lock_it.l_type = F_WRLCK;      /* set exclusive/write lock */
-
-    fd = creat(fname, S_IRWXU);
-    unlink(fname);
-
-    if (rc = lockit()) {
-        exit(-1);
-    }
-
-    if (fork()) {
-        wait(&status);
-    }
-    else {
-      return(lockit());
-    }
-
-    close(fd);
-    exit(WEXITSTATUS(status) != EACCES);
-}
-
-int lockit() {
-    int rc;
-    do {
-        rc = fcntl(fd, F_SETLK, &proc_mutex_lock_it);
-    } while ( rc < 0 && errno == EINTR);
-
-    return (rc < 0) ? errno : 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_fcntl_tryacquire_eacces=1
-else
-  apr_fcntl_tryacquire_eacces=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-
-if test "$apr_fcntl_tryacquire_eacces" = "1"; then
-
-$as_echo "#define FCNTL_TRYACQUIRE_EACCES 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if all interprocess locks affect threads" >&5
-$as_echo_n "checking if all interprocess locks affect threads... " >&6; }
-if test "x$apr_process_lock_is_global" = "xyes"; then
-    proclockglobal="1"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-    proclockglobal="0"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if POSIX sems affect threads in the same process" >&5
-$as_echo_n "checking if POSIX sems affect threads in the same process... " >&6; }
-if test "x$apr_posixsem_is_global" = "xyes"; then
-
-$as_echo "#define POSIXSEM_IS_GLOBAL 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if SysV sems affect threads in the same process" >&5
-$as_echo_n "checking if SysV sems affect threads in the same process... " >&6; }
-if test "x$apr_sysvsem_is_global" = "xyes"; then
-
-$as_echo "#define SYSVSEM_IS_GLOBAL 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fcntl locks affect threads in the same process" >&5
-$as_echo_n "checking if fcntl locks affect threads in the same process... " >&6; }
-if test "x$apr_fcntl_is_global" = "xyes"; then
-
-$as_echo "#define FCNTL_IS_GLOBAL 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if flock locks affect threads in the same process" >&5
-$as_echo_n "checking if flock locks affect threads in the same process... " >&6; }
-if test "x$apr_flock_is_global" = "xyes"; then
-
-$as_echo "#define FLOCK_IS_GLOBAL 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for entropy source" >&5
-$as_echo_n "checking for entropy source... " >&6; }
-
-why_no_rand=""
-
-
-# Check whether --with-egd was given.
-if test "${with_egd+set}" = set; then :
-  withval=$with_egd;
-$as_echo "#define HAVE_EGD 1" >>confdefs.h
-
-    if test "$withval" = "yes"; then
-
-cat >>confdefs.h <<_ACEOF
-#define EGD_DEFAULT_SOCKET "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"
-_ACEOF
-
-    else
-        cat >>confdefs.h <<_ACEOF
-#define EGD_DEFAULT_SOCKET "$withval"
-_ACEOF
-
-    fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: EGD-compatible daemon" >&5
-$as_echo "EGD-compatible daemon" >&6; }
-    rand="1"
-
-fi
-
-
-if test "$rand" != "1"; then
-
-# Check whether --with-devrandom was given.
-if test "${with_devrandom+set}" = set; then :
-  withval=$with_devrandom;  apr_devrandom="$withval"
-else
-   apr_devrandom="yes"
-fi
-
-
-  if test "$apr_devrandom" = "yes"; then
-    # /dev/random on OpenBSD doesn't provide random data, so
-    # prefer /dev/arandom, which does; see random(4).
-    for f in /dev/arandom /dev/urandom /dev/random; do
-      if test -r $f; then
-        apr_devrandom=$f
-        rand=1
-        break
-      fi
-    done
-  elif test "$apr_devrandom" != "no"; then
-    if test -r "$apr_devrandom"; then
-      rand="1"
-    else
-      as_fn_error $? "$apr_devrandom not found or unreadable." "$LINENO" 5
-    fi
-  fi
-
-  if test "$rand" = "1"; then
-    case $host in
-      *os390)
-        if test $os_version -lt 1700; then
-          rand="0"
-          why_no_rand=" ($apr_devrandom unusable on z/OS before V1R7)"
-        fi
-        ;;
-    esac
-  fi
-
-  if test "$rand" = "1"; then
-
-cat >>confdefs.h <<_ACEOF
-#define DEV_RANDOM "$apr_devrandom"
-_ACEOF
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_devrandom" >&5
-$as_echo "$apr_devrandom" >&6; }
-  fi
-fi
-
-if test "$rand" != "1"; then
-    case $host in
-        # we have built in support for OS/2
-        *-os2*)
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using OS/2 builtin random" >&5
-$as_echo "Using OS/2 builtin random" >&6; }
-            rand="1"
-            ;;
-        *)
-            if test "$rand" != "1"; then
-              if test "$ac_cv_lib_truerand_main" = "yes"; then
-
-$as_echo "#define HAVE_TRUERAND 1" >>confdefs.h
-
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: truerand" >&5
-$as_echo "truerand" >&6; }
-                rand="1"
-              else
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found$why_no_rand" >&5
-$as_echo "not found$why_no_rand" >&6; }
-                rand="0"
-              fi
-            fi
-            ;;
-    esac
-fi
-
-
-
-echo "${nl}Checking for File Info Support..."
-ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_ctimensec" "ac_cv_member_struct_stat_st_ctimensec" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_ctimensec" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_CTIMENSEC 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimensec" "ac_cv_member_struct_stat_st_mtimensec" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_mtimensec" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIMENSEC 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_ctim.tv_nsec" "ac_cv_member_struct_stat_st_ctim_tv_nsec" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_ctim_tv_nsec" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim.tv_nsec" "ac_cv_member_struct_stat_st_mtim_tv_nsec" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_atime_n" "ac_cv_member_struct_stat_st_atime_n" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_atime_n" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_ATIME_N 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_ctime_n" "ac_cv_member_struct_stat_st_ctime_n" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_ctime_n" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_CTIME_N 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime_n" "ac_cv_member_struct_stat_st_mtime_n" "
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-"
-if test "x$ac_cv_member_struct_stat_st_mtime_n" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIME_N 1
-_ACEOF
-
-
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inode member of struct dirent" >&5
-$as_echo_n "checking for inode member of struct dirent... " >&6; }
-if ${apr_cv_dirent_inode+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-apr_cv_dirent_inode=no
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <dirent.h>
-
-int
-main ()
-{
-
-#ifdef d_ino
-#undef d_ino
-#endif
-struct dirent de; de.d_fileno;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_dirent_inode=d_fileno
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-if test "$apr_cv_dirent_inode" = "no"; then
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <dirent.h>
-
-int
-main ()
-{
-
-#ifdef d_fileno
-#undef d_fileno
-#endif
-struct dirent de; de.d_ino;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_dirent_inode=d_ino
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dirent_inode" >&5
-$as_echo "$apr_cv_dirent_inode" >&6; }
-if test "$apr_cv_dirent_inode" != "no"; then
-
-cat >>confdefs.h <<_ACEOF
-#define DIRENT_INODE $apr_cv_dirent_inode
-_ACEOF
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for file type member of struct dirent" >&5
-$as_echo_n "checking for file type member of struct dirent... " >&6; }
-if ${apr_cv_dirent_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-apr_cv_dirent_type=no
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <dirent.h>
-
-int
-main ()
-{
-
-struct dirent de; de.d_type = DT_REG;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_dirent_type=d_type
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dirent_type" >&5
-$as_echo "$apr_cv_dirent_type" >&6; }
-if test "$apr_cv_dirent_type" != "no"; then
-
-cat >>confdefs.h <<_ACEOF
-#define DIRENT_TYPE $apr_cv_dirent_type
-_ACEOF
-
-fi
-
-
-echo "${nl}Checking for OS UUID Support..."
-
-for ac_header in uuid.h uuid/uuid.h sys/uuid.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- break
-fi
-
-done
-
-
-apr_revert_save_LIBS=$LIBS
-
-# Prefer the flavor(s) that live in libc;
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing uuid_create" >&5
-$as_echo_n "checking for library containing uuid_create... " >&6; }
-if ${ac_cv_search_uuid_create+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char uuid_create ();
-int
-main ()
-{
-return uuid_create ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' uuid; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_uuid_create=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_uuid_create+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_uuid_create+:} false; then :
-
-else
-  ac_cv_search_uuid_create=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_uuid_create" >&5
-$as_echo "$ac_cv_search_uuid_create" >&6; }
-ac_res=$ac_cv_search_uuid_create
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing uuid_generate" >&5
-$as_echo_n "checking for library containing uuid_generate... " >&6; }
-if ${ac_cv_search_uuid_generate+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char uuid_generate ();
-int
-main ()
-{
-return uuid_generate ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' uuid; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_uuid_generate=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_uuid_generate+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_uuid_generate+:} false; then :
-
-else
-  ac_cv_search_uuid_generate=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_uuid_generate" >&5
-$as_echo "$ac_cv_search_uuid_generate" >&6; }
-ac_res=$ac_cv_search_uuid_generate
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-if test "$ac_cv_search_uuid_create" = "none required" -o \
-        "$ac_cv_search_uuid_generate" = "none required"; then
- LIBS=$apr_revert_save_LIBS
-fi
-
-for ac_func in uuid_create uuid_generate
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for os uuid usability" >&5
-$as_echo_n "checking for os uuid usability... " >&6; }
-if ${apr_cv_osuuid+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# Ensure this test closely mirrors misc/unix/rand.c!
-uuid_includes="
-#if defined(HAVE_SYS_TYPES_H)
-#include <sys/types.h>
-#endif
-#if defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#if defined(HAVE_UUID_H)
-#include <uuid.h>
-#elif defined(HAVE_UUID_UUID_H)
-#include <uuid/uuid.h>
-#elif defined(HAVE_SYS_UUID_H)
-#include <sys/uuid.h>
-#endif
-"
- apr_cv_osuuid=no
- if test $ac_cv_func_uuid_create = yes; then
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$uuid_includes
-int
-main ()
-{
-
-    uuid_t g;
-    uint32_t s;
-    uuid_create(&g, &s);
-    if (s == uuid_s_ok) s = 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  apr_cv_osuuid=yes
-else
-  apr_cv_func_uuid_create=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
- fi
- if test $ac_cv_func_uuid_generate = yes; then
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$uuid_includes
-int
-main ()
-{
-
-    uuid_t g;
-    uuid_generate(g);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  apr_cv_osuuid=yes
-else
-  apr_cv_func_uuid_generate=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
- fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_osuuid" >&5
-$as_echo "$apr_cv_osuuid" >&6; }
-
-if test $apr_cv_osuuid = yes; then
-  osuuid="1"
-else
-  osuuid="0"
-  LIBS=$apr_revert_save_LIBS
-fi
-
-
-
-echo "${nl}Checking for Time Support..."
-
-ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "
-#include <sys/types.h>
-#include <time.h>
-"
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM_TM_GMTOFF 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" "
-#include <sys/types.h>
-#include <time.h>
-"
-if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM___TM_GMTOFF 1
-_ACEOF
-
-
-fi
-
-
-echo "${nl}Checking for Networking support..."
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type in_addr" >&5
-$as_echo_n "checking for type in_addr... " >&6; }
-if ${ac_cv_type_in_addr+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-
-int
-main ()
-{
-
- struct in_addr arg;
- arg.s_addr = htonl(INADDR_ANY);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-   ac_cv_type_in_addr="yes"
-else
-
-ac_cv_type_in_addr="no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_in_addr" >&5
-$as_echo "$ac_cv_type_in_addr" >&6; }
-
-if test "$ac_cv_type_in_addr" = "yes"; then
-  have_in_addr="1"
-else
-  have_in_addr="0"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fd == socket on this platform" >&5
-$as_echo_n "checking if fd == socket on this platform... " >&6; }
-if test "x$file_as_socket" != "x0" ; then
-    file_as_socket="1";
-    echo "yes"
-else
-    echo "no"
-fi
-
-
-
-
-if test "$ac_cv_func_poll $file_as_socket" = "yes 1"; then
-
-$as_echo "#define WAITIO_USES_POLL 1" >>confdefs.h
-
-fi
-
-# Check the types only if we have gethostbyname_r
-if test "$ac_cv_func_gethostbyname_r" = "yes"; then
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking style of gethostbyname_r routine" >&5
-$as_echo_n "checking style of gethostbyname_r routine... " >&6; }
-if ${ac_cv_gethostbyname_r_style+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  apr_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $CFLAGS_WARN"
- if test "$ac_cv_c_compiler_gnu" = "yes"; then
-   CFLAGS="$CFLAGS -Werror"
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "confdefs.h"
-
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-   int main(int argc, const char *const *argv) {
-
-int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0,
-                          (char *) 0, 0, (struct hostent **) 0, &tmp);
-/* use tmp to suppress the warning */
-tmp=0;
-
-      return 0; }
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_gethostbyname_r_style=glibc2
-else
-  ac_cv_gethostbyname_r_style=none
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$apr_save_CFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gethostbyname_r_style" >&5
-$as_echo "$ac_cv_gethostbyname_r_style" >&6; }
-
-if test "$ac_cv_gethostbyname_r_style" = "glibc2"; then
-
-$as_echo "#define GETHOSTBYNAME_R_GLIBC2 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking 3rd argument to the gethostbyname_r routines" >&5
-$as_echo_n "checking 3rd argument to the gethostbyname_r routines... " >&6; }
-if ${ac_cv_gethostbyname_r_arg+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  apr_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $CFLAGS_WARN"
- if test "$ac_cv_c_compiler_gnu" = "yes"; then
-   CFLAGS="$CFLAGS -Werror"
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "confdefs.h"
-
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-   int main(int argc, const char *const *argv) {
-
-int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0,
-                          (struct hostent_data *) 0);
-/* use tmp to suppress the warning */
-tmp=0;
-
-      return 0; }
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_gethostbyname_r_arg=hostent_data
-else
-  ac_cv_gethostbyname_r_arg=char
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$apr_save_CFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gethostbyname_r_arg" >&5
-$as_echo "$ac_cv_gethostbyname_r_arg" >&6; }
-
-if test "$ac_cv_gethostbyname_r_arg" = "hostent_data"; then
-
-$as_echo "#define GETHOSTBYNAME_R_HOSTENT_DATA 1" >>confdefs.h
-
-fi
-
-fi
-
-# Check the types only if we have getservbyname_r
-if test "$ac_cv_func_getservbyname_r" = "yes"; then
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking style of getservbyname_r routine" >&5
-$as_echo_n "checking style of getservbyname_r routine... " >&6; }
-if ${ac_cv_getservbyname_r_style+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-apr_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $CFLAGS_WARN"
- if test "$ac_cv_c_compiler_gnu" = "yes"; then
-   CFLAGS="$CFLAGS -Werror"
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "confdefs.h"
-
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-   int main(int argc, const char *const *argv) {
-
-int tmp = getservbyname_r((const char *) 0, (const char *) 0,
-                          (struct servent *) 0, (char *) 0, 0,
-                          (struct servent **) 0);
-/* use tmp to suppress the warning */
-tmp=0;
-
-      return 0; }
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_getservbyname_r_style=glibc2
-else
-  ac_cv_getservbyname_r_style=none
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$apr_save_CFLAGS
-
-
-if test "$ac_cv_getservbyname_r_style" = "none"; then
-            apr_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $CFLAGS_WARN"
- if test "$ac_cv_c_compiler_gnu" = "yes"; then
-   CFLAGS="$CFLAGS -Werror"
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "confdefs.h"
-
-
-    #ifdef HAVE_SYS_TYPES_H
-    #include <sys/types.h>
-    #endif
-    #ifdef HAVE_NETINET_IN_H
-    #include <netinet/in.h>
-    #endif
-    #ifdef HAVE_ARPA_INET_H
-    #include <arpa/inet.h>
-    #endif
-    #ifdef HAVE_NETDB_H
-    #include <netdb.h>
-    #endif
-    #ifdef HAVE_STDLIB_H
-    #include <stdlib.h>
-    #endif
-
-   int main(int argc, const char *const *argv) {
-
-    struct servent *tmp = getservbyname_r((const char *) 0, (const char *) 0,
-                                          (struct servent *) 0, (char *) 0, 0);
-    /* use tmp to suppress the warning */
-    tmp=NULL;
-
-      return 0; }
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_getservbyname_r_style=solaris
-else
-  ac_cv_getservbyname_r_style=none
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$apr_save_CFLAGS
-
-fi
-
-if test "$ac_cv_getservbyname_r_style" = "none"; then
-            apr_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $CFLAGS_WARN"
- if test "$ac_cv_c_compiler_gnu" = "yes"; then
-   CFLAGS="$CFLAGS -Werror"
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "confdefs.h"
-
-
-    #ifdef HAVE_SYS_TYPES_H
-    #include <sys/types.h>
-    #endif
-    #ifdef HAVE_NETINET_IN_H
-    #include <netinet/in.h>
-    #endif
-    #ifdef HAVE_ARPA_INET_H
-    #include <arpa/inet.h>
-    #endif
-    #ifdef HAVE_NETDB_H
-    #include <netdb.h>
-    #endif
-    #ifdef HAVE_STDLIB_H
-    #include <stdlib.h>
-    #endif
-
-   int main(int argc, const char *const *argv) {
-
-    int tmp = getservbyname_r((const char *) 0, (const char *) 0,
-                              (struct servent *) 0, (struct servent_data *) 0);
-    /* use tmp to suppress the warning */
-    tmp=0;
-
-      return 0; }
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_getservbyname_r_style=osf1
-else
-  ac_cv_getservbyname_r_style=none
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$apr_save_CFLAGS
-
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_getservbyname_r_style" >&5
-$as_echo "$ac_cv_getservbyname_r_style" >&6; }
-
-if test "$ac_cv_getservbyname_r_style" = "glibc2"; then
-
-$as_echo "#define GETSERVBYNAME_R_GLIBC2 1" >>confdefs.h
-
-elif test "$ac_cv_getservbyname_r_style" = "solaris"; then
-
-$as_echo "#define GETSERVBYNAME_R_SOLARIS 1" >>confdefs.h
-
-elif test "$ac_cv_getservbyname_r_style" = "osf1"; then
-
-$as_echo "#define GETSERVBYNAME_R_OSF1 1" >>confdefs.h
-
-fi
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if TCP_NODELAY setting is inherited from listening sockets" >&5
-$as_echo_n "checking if TCP_NODELAY setting is inherited from listening sockets... " >&6; }
-if ${ac_cv_tcp_nodelay_inherited+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-
-    ac_cv_tcp_nodelay_inherited="yes"
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#ifndef HAVE_SOCKLEN_T
-typedef int socklen_t;
-#endif
-int main(void) {
-    int listen_s, connected_s, client_s;
-    int listen_port, rc;
-    struct sockaddr_in sa;
-    socklen_t sa_len;
-    socklen_t option_len;
-    int option;
-
-    listen_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (listen_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    option = 1;
-    rc = setsockopt(listen_s, IPPROTO_TCP, TCP_NODELAY, &option, sizeof option);
-    if (rc < 0) {
-        perror("setsockopt TCP_NODELAY");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave port 0 to get ephemeral */
-    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("bind for ephemeral port");
-        exit(1);
-    }
-    /* find ephemeral port */
-    sa_len = sizeof(sa);
-    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (rc < 0) {
-        perror("getsockname");
-        exit(1);
-    }
-    listen_port = sa.sin_port;
-    rc = listen(listen_s, 5);
-    if (rc < 0) {
-        perror("listen");
-        exit(1);
-    }
-    client_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (client_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-    sa.sin_port   = listen_port;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave sin_addr all zeros to use loopback */
-    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("connect");
-        exit(1);
-    }
-    sa_len = sizeof sa;
-    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (connected_s < 0) {
-        perror("accept");
-        exit(1);
-    }
-    option_len = sizeof option;
-    rc = getsockopt(connected_s, IPPROTO_TCP, TCP_NODELAY, &option, &option_len);
-    if (rc < 0) {
-        perror("getsockopt");
-        exit(1);
-    }
-    if (!option) {
-        fprintf(stderr, "TCP_NODELAY is not set in the child.\n");
-        exit(1);
-    }
-    return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-    ac_cv_tcp_nodelay_inherited="yes"
-
-else
-
-    ac_cv_tcp_nodelay_inherited="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tcp_nodelay_inherited" >&5
-$as_echo "$ac_cv_tcp_nodelay_inherited" >&6; }
-if test "$ac_cv_tcp_nodelay_inherited" = "yes"; then
-    tcp_nodelay_inherited=1
-else
-    tcp_nodelay_inherited=0
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if O_NONBLOCK setting is inherited from listening sockets" >&5
-$as_echo_n "checking if O_NONBLOCK setting is inherited from listening sockets... " >&6; }
-if ${ac_cv_o_nonblock_inherited+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-
-    ac_cv_o_nonblock_inherited="yes"
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#ifndef HAVE_SOCKLEN_T
-typedef int socklen_t;
-#endif
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-int main(void) {
-    int listen_s, connected_s, client_s;
-    int listen_port, rc;
-    struct sockaddr_in sa;
-    socklen_t sa_len;
-
-    listen_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (listen_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave port 0 to get ephemeral */
-    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("bind for ephemeral port");
-        exit(1);
-    }
-    /* find ephemeral port */
-    sa_len = sizeof(sa);
-    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (rc < 0) {
-        perror("getsockname");
-        exit(1);
-    }
-    listen_port = sa.sin_port;
-    rc = listen(listen_s, 5);
-    if (rc < 0) {
-        perror("listen");
-        exit(1);
-    }
-    rc = fcntl(listen_s, F_SETFL, O_NONBLOCK);
-    if (rc < 0) {
-        perror("fcntl(F_SETFL)");
-        exit(1);
-    }
-    client_s = socket(AF_INET, SOCK_STREAM, 0);
-    if (client_s < 0) {
-        perror("socket");
-        exit(1);
-    }
-    memset(&sa, 0, sizeof sa);
-    sa.sin_family = AF_INET;
-    sa.sin_port   = listen_port;
-#ifdef BEOS
-    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-#endif
-    /* leave sin_addr all zeros to use loopback */
-    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
-    if (rc < 0) {
-        perror("connect");
-        exit(1);
-    }
-    sa_len = sizeof sa;
-    /* 1 second select timeout */
-    tv.tv_sec = 1;
-    tv.tv_usec = 0;
-    /* Set up fd set */
-    FD_ZERO(&fds);
-    FD_SET(listen_s, &fds);
-    /* Wait for socket to become readable */
-    rc = select(listen_s + 1, &fds, NULL, NULL, &tv);
-    if (rc < 0) {
-        perror("select");
-        exit(1);
-    }
-    if (rc == 0) {
-        fprintf(stderr, "Socket failed to become readable (timeout)\n");
-        exit(1);
-    }
-    if (!FD_ISSET(listen_s, &fds)) {
-        fprintf(stderr, "Socket failed to become readable (selected another fd)\n");
-        exit(1);
-    }
-    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
-    if (connected_s < 0) {
-        perror("accept");
-        exit(1);
-    }
-    rc = fcntl(connected_s, F_GETFL, 0);
-    if (rc < 0) {
-        perror("fcntl(F_GETFL)");
-        exit(1);
-    }
-    if (!(rc & O_NONBLOCK)) {
-        fprintf(stderr, "O_NONBLOCK is not set in the child.\n");
-        exit(1);
-    }
-    return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-    ac_cv_o_nonblock_inherited="yes"
-
-else
-
-    ac_cv_o_nonblock_inherited="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_o_nonblock_inherited" >&5
-$as_echo "$ac_cv_o_nonblock_inherited" >&6; }
-if test "$ac_cv_o_nonblock_inherited" = "yes"; then
-    o_nonblock_inherited=1
-else
-    o_nonblock_inherited=0
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether TCP_NODELAY and TCP_CORK can both be enabled" >&5
-$as_echo_n "checking whether TCP_NODELAY and TCP_CORK can both be enabled... " >&6; }
-if ${apr_cv_tcp_nodelay_with_cork+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main ()
-{
-
-    int fd, flag, rc;
-
-    fd = socket(AF_INET, SOCK_STREAM, 0);
-    if (fd < 0) {
-       exit(1);
-    }
-
-    flag = 1;
-    rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof flag);
-    if (rc < 0) {
-        perror("setsockopt TCP_NODELAY");
-        exit(2);
-    }
-
-    flag = 1;
-    rc = setsockopt(fd, IPPROTO_TCP, TCP_CORK, &flag, sizeof flag);
-    if (rc < 0) {
-        perror("setsockopt TCP_CORK");
-        exit(3);
-    }
-
-    exit(0);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_tcp_nodelay_with_cork=yes
-else
-  apr_cv_tcp_nodelay_with_cork=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_tcp_nodelay_with_cork" >&5
-$as_echo "$apr_cv_tcp_nodelay_with_cork" >&6; }
-
-if test "$apr_cv_tcp_nodelay_with_cork" = "yes"; then
-
-$as_echo "#define HAVE_TCP_NODELAY_WITH_CORK 1" >>confdefs.h
-
-fi
-
-
-# Look for a way of corking TCP...
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TCP_CORK in netinet/tcp.h" >&5
-$as_echo_n "checking for TCP_CORK in netinet/tcp.h... " >&6; }
-if ${ac_cv_define_TCP_CORK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <netinet/tcp.h>
-#ifdef TCP_CORK
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_TCP_CORK=yes
-else
-  ac_cv_define_TCP_CORK=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_TCP_CORK" >&5
-$as_echo "$ac_cv_define_TCP_CORK" >&6; }
-  if test "$ac_cv_define_TCP_CORK" = "yes"; then
-
-$as_echo "#define HAVE_TCP_CORK 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TCP_NOPUSH in netinet/tcp.h" >&5
-$as_echo_n "checking for TCP_NOPUSH in netinet/tcp.h... " >&6; }
-if ${ac_cv_define_TCP_NOPUSH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <netinet/tcp.h>
-#ifdef TCP_NOPUSH
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_TCP_NOPUSH=yes
-else
-  ac_cv_define_TCP_NOPUSH=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_TCP_NOPUSH" >&5
-$as_echo "$ac_cv_define_TCP_NOPUSH" >&6; }
-  if test "$ac_cv_define_TCP_NOPUSH" = "yes"; then
-
-$as_echo "#define HAVE_TCP_NOPUSH 1" >>confdefs.h
-
-  fi
-
-apr_tcp_nopush_flag="0"
-have_corkable_tcp="0"
-if test "x$ac_cv_define_TCP_CORK" = "xyes"; then
-    apr_tcp_nopush_flag="TCP_CORK"
-    have_corkable_tcp="1"
-else
-    case $host in
-        *linux*)
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <linux/socket.h>
-#ifdef TCP_CORK
-yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then :
-
-                apr_tcp_nopush_flag="3"
-                have_corkable_tcp="1"
-
-fi
-rm -f conftest*
-
-            ;;
-        *)
-            ;;
-    esac
-fi
-if test "x$ac_cv_define_TCP_NOPUSH" = "xyes"; then
-    apr_tcp_nopush_flag="TCP_NOPUSH"
-    have_corkable_tcp="1"
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SO_ACCEPTFILTER in sys/socket.h" >&5
-$as_echo_n "checking for SO_ACCEPTFILTER in sys/socket.h... " >&6; }
-if ${ac_cv_define_SO_ACCEPTFILTER+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/socket.h>
-#ifdef SO_ACCEPTFILTER
-YES_IS_DEFINED
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
-  ac_cv_define_SO_ACCEPTFILTER=yes
-else
-  ac_cv_define_SO_ACCEPTFILTER=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_SO_ACCEPTFILTER" >&5
-$as_echo "$ac_cv_define_SO_ACCEPTFILTER" >&6; }
-  if test "$ac_cv_define_SO_ACCEPTFILTER" = "yes"; then
-
-$as_echo "#define HAVE_SO_ACCEPTFILTER 1" >>confdefs.h
-
-  fi
-
-if test "x$ac_cv_define_SO_ACCEPTFILTER" = "xyes"; then
-    acceptfilter="1"
-else
-    acceptfilter="0"
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether SCTP is supported" >&5
-$as_echo_n "checking whether SCTP is supported... " >&6; }
-if ${apr_cv_sctp+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-  apr_cv_sctp=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_SCTP_H
-#include <netinet/sctp.h>
-#endif
-#ifdef HAVE_NETINET_SCTP_UIO_H
-#include <netinet/sctp_uio.h>
-#endif
-#include <stdlib.h>
-int main(void) {
-    int s, opt = 1;
-    if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)) < 0)
-       exit(1);
-    if (setsockopt(s, IPPROTO_SCTP, SCTP_NODELAY, &opt, sizeof(int)) < 0)
-       exit(2);
-    exit(0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_sctp=yes
-else
-  apr_cv_sctp=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_sctp" >&5
-$as_echo "$apr_cv_sctp" >&6; }
-
-if test "$apr_cv_sctp" = "yes"; then
-    have_sctp=1
-else
-    have_sctp=0
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct ip_mreq" >&5
-$as_echo_n "checking for struct ip_mreq... " >&6; }
-if ${apr_cv_struct_ipmreq+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-
-    struct ip_mreq mip;
-    mip.imr_interface.s_addr = INADDR_ANY;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_struct_ipmreq=yes
-else
-  apr_cv_struct_ipmreq=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_struct_ipmreq" >&5
-$as_echo "$apr_cv_struct_ipmreq" >&6; }
-
-if test $apr_cv_struct_ipmreq = yes; then
-
-$as_echo "#define HAVE_STRUCT_IPMREQ 1" >>confdefs.h
-
-fi
-
-
-
-
-
-
-
-for ac_func in set_h_errno
-do :
-  ac_fn_c_check_func "$LINENO" "set_h_errno" "ac_cv_func_set_h_errno"
-if test "x$ac_cv_func_set_h_errno" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SET_H_ERRNO 1
-_ACEOF
-
-fi
-done
-
-
-echo "${nl}Checking for IPv6 Networking support..."
-
-# Check whether --enable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then :
-  enableval=$enable_ipv6;  if test "$enableval" = "no"; then
-        user_disabled_ipv6=1
-    fi
-else
-   user_disabled_ipv6=0
-fi
-
-
-case $host in
-  *)
-    broken_ipv6=0
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getaddrinfo" >&5
-$as_echo_n "checking for library containing getaddrinfo... " >&6; }
-if ${ac_cv_search_getaddrinfo+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getaddrinfo ();
-int
-main ()
-{
-return getaddrinfo ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' socket inet6; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_getaddrinfo=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_getaddrinfo+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_getaddrinfo+:} false; then :
-
-else
-  ac_cv_search_getaddrinfo=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getaddrinfo" >&5
-$as_echo "$ac_cv_search_getaddrinfo" >&6; }
-ac_res=$ac_cv_search_getaddrinfo
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gai_strerror" >&5
-$as_echo_n "checking for library containing gai_strerror... " >&6; }
-if ${ac_cv_search_gai_strerror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gai_strerror ();
-int
-main ()
-{
-return gai_strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' socket inet6; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_gai_strerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_gai_strerror+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_gai_strerror+:} false; then :
-
-else
-  ac_cv_search_gai_strerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gai_strerror" >&5
-$as_echo "$ac_cv_search_gai_strerror" >&6; }
-ac_res=$ac_cv_search_gai_strerror
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getnameinfo" >&5
-$as_echo_n "checking for library containing getnameinfo... " >&6; }
-if ${ac_cv_search_getnameinfo+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getnameinfo ();
-int
-main ()
-{
-return getnameinfo ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' socket inet6; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_getnameinfo=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_getnameinfo+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_getnameinfo+:} false; then :
-
-else
-  ac_cv_search_getnameinfo=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getnameinfo" >&5
-$as_echo "$ac_cv_search_getnameinfo" >&6; }
-ac_res=$ac_cv_search_getnameinfo
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-for ac_func in gai_strerror
-do :
-  ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"
-if test "x$ac_cv_func_gai_strerror" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GAI_STRERROR 1
-_ACEOF
-
-fi
-done
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getaddrinfo" >&5
-$as_echo_n "checking for working getaddrinfo... " >&6; }
-if ${ac_cv_working_getaddrinfo+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-
-  ac_cv_working_getaddrinfo="yes"
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-void main(void) {
-    struct addrinfo hints, *ai;
-    int error;
-
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = AF_UNSPEC;
-    hints.ai_socktype = SOCK_STREAM;
-    error = getaddrinfo("127.0.0.1", NULL, &hints, &ai);
-    if (error) {
-        exit(1);
-    }
-    if (ai->ai_addr->sa_family != AF_INET) {
-        exit(1);
-    }
-    exit(0);
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-  ac_cv_working_getaddrinfo="yes"
-
-else
-
-  ac_cv_working_getaddrinfo="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_getaddrinfo" >&5
-$as_echo "$ac_cv_working_getaddrinfo" >&6; }
-if test "$ac_cv_working_getaddrinfo" = "yes"; then
-  if test "$ac_cv_func_gai_strerror" != "yes"; then
-    ac_cv_working_getaddrinfo="no"
-  else
-
-$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
-
-  fi
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for negative error codes for getaddrinfo" >&5
-$as_echo_n "checking for negative error codes for getaddrinfo... " >&6; }
-if ${ac_cv_negative_eai+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-
-  ac_cv_negative_eai="no"
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-void main(void) {
-    if (EAI_ADDRFAMILY < 0) {
-        exit(0);
-    }
-    exit(1);
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-  ac_cv_negative_eai="yes"
-
-else
-
-  ac_cv_negative_eai="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_negative_eai" >&5
-$as_echo "$ac_cv_negative_eai" >&6; }
-if test "$ac_cv_negative_eai" = "yes"; then
-
-$as_echo "#define NEGATIVE_EAI 1" >>confdefs.h
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getnameinfo" >&5
-$as_echo_n "checking for working getnameinfo... " >&6; }
-if ${ac_cv_working_getnameinfo+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-
-  ac_cv_working_getnameinfo="yes"
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-void main(void) {
-    struct sockaddr_in sa;
-    char hbuf[256];
-    int error;
-
-    sa.sin_family = AF_INET;
-    sa.sin_port = 0;
-    sa.sin_addr.s_addr = inet_addr("127.0.0.1");
-#ifdef SIN6_LEN
-    sa.sin_len = sizeof(sa);
-#endif
-
-    error = getnameinfo((const struct sockaddr *)&sa, sizeof(sa),
-                        hbuf, 256, NULL, 0,
-                        NI_NUMERICHOST);
-    if (error) {
-        exit(1);
-    } else {
-        exit(0);
-    }
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-  ac_cv_working_getnameinfo="yes"
-
-else
-
-  ac_cv_working_getnameinfo="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_getnameinfo" >&5
-$as_echo "$ac_cv_working_getnameinfo" >&6; }
-if test "$ac_cv_working_getnameinfo" = "yes"; then
-
-$as_echo "#define HAVE_GETNAMEINFO 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sockaddr_in6" >&5
-$as_echo_n "checking for sockaddr_in6... " >&6; }
-if ${ac_cv_define_sockaddr_in6+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-int
-main ()
-{
-
-struct sockaddr_in6 sa;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-    ac_cv_define_sockaddr_in6=yes
-
-else
-
-    ac_cv_define_sockaddr_in6=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_sockaddr_in6" >&5
-$as_echo "$ac_cv_define_sockaddr_in6" >&6; }
-
-if test "$ac_cv_define_sockaddr_in6" = "yes"; then
-  have_sockaddr_in6=1
-else
-  have_sockaddr_in6=0
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sockaddr_storage" >&5
-$as_echo_n "checking for sockaddr_storage... " >&6; }
-if ${apr_cv_define_sockaddr_storage+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-int
-main ()
-{
-struct sockaddr_storage sa;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  apr_cv_define_sockaddr_storage=yes
-else
-  apr_cv_define_sockaddr_storage=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_define_sockaddr_storage" >&5
-$as_echo "$apr_cv_define_sockaddr_storage" >&6; }
-
-if test "$apr_cv_define_sockaddr_storage" = "yes"; then
-  have_sa_storage=1
-else
-  have_sa_storage=0
-fi
-
-
-
-have_ipv6="0"
-if test "$user_disabled_ipv6" = 1; then
-    ipv6_result="no -- disabled by user"
-else
-    if test "x$broken_ipv6" = "x0"; then
-        if test "x$have_sockaddr_in6" = "x1"; then
-            if test "x$ac_cv_working_getaddrinfo" = "xyes"; then
-                if test "x$ac_cv_working_getnameinfo" = "xyes"; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working AI_ADDRCONFIG" >&5
-$as_echo_n "checking for working AI_ADDRCONFIG... " >&6; }
-if ${apr_cv_gai_addrconfig+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  if test "$cross_compiling" = yes; then :
-  apr_cv_gai_addrconfig=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-int main(int argc, char **argv) {
-    struct addrinfo hints, *ai;
-
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = AF_UNSPEC;
-    hints.ai_socktype = SOCK_STREAM;
-    hints.ai_flags = AI_ADDRCONFIG;
-    return getaddrinfo("localhost", NULL, &hints, &ai) != 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  apr_cv_gai_addrconfig=yes
-else
-  apr_cv_gai_addrconfig=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_gai_addrconfig" >&5
-$as_echo "$apr_cv_gai_addrconfig" >&6; }
-
-if test $apr_cv_gai_addrconfig = yes; then
-
-$as_echo "#define HAVE_GAI_ADDRCONFIG 1" >>confdefs.h
-
-fi
-
-                    have_ipv6="1"
-                    ipv6_result="yes"
-                else
-                    ipv6_result="no -- no getnameinfo"
-                fi
-            else
-                ipv6_result="no -- no working getaddrinfo"
-            fi
-        else
-            ipv6_result="no -- no sockaddr_in6"
-        fi
-    else
-        ipv6_result="no -- the platform has known problems supporting IPv6"
-    fi
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if APR supports IPv6" >&5
-$as_echo_n "checking if APR supports IPv6... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6_result" >&5
-$as_echo "$ipv6_result" >&6; }
-
-
-
-# hstrerror is only needed if IPv6 is not enabled,
-# so getaddrinfo/gai_strerror are not used.
-if test $have_ipv6 = 0; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing hstrerror" >&5
-$as_echo_n "checking for library containing hstrerror... " >&6; }
-if ${ac_cv_search_hstrerror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char hstrerror ();
-int
-main ()
-{
-return hstrerror ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' resolv; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_hstrerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_hstrerror+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_hstrerror+:} false; then :
-
-else
-  ac_cv_search_hstrerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_hstrerror" >&5
-$as_echo "$ac_cv_search_hstrerror" >&6; }
-ac_res=$ac_cv_search_hstrerror
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-$as_echo "#define HAVE_HSTRERROR 1" >>confdefs.h
-
-fi
-
-fi
-
-
-for ac_header in langinfo.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
-if test "x$ac_cv_header_langinfo_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LANGINFO_H 1
-_ACEOF
-
-fi
-
-done
-
-for ac_func in nl_langinfo
-do :
-  ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo"
-if test "x$ac_cv_func_nl_langinfo" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_NL_LANGINFO 1
-_ACEOF
-
-fi
-done
-
-
-
-
-  if test -z "$have_unicode_fs"; then
-    test "x$silent" != "xyes" && echo "  setting have_unicode_fs to \"0\""
-    have_unicode_fs="0"
-  fi
-
-
-
-
-  if test -z "$apr_has_xthread_files"; then
-    test "x$silent" != "xyes" && echo "  setting apr_has_xthread_files to \"0\""
-    apr_has_xthread_files="0"
-  fi
-
-
-
-
-  if test -z "$apr_procattr_user_set_requires_password"; then
-    test "x$silent" != "xyes" && echo "  setting apr_procattr_user_set_requires_password to \"0\""
-    apr_procattr_user_set_requires_password="0"
-  fi
-
-
-
-
-  if test -z "$apr_thread_func"; then
-    test "x$silent" != "xyes" && echo "  setting apr_thread_func to \"\""
-    apr_thread_func=""
-  fi
-
-
-
-
-  if test -z "$apr_has_user"; then
-    test "x$silent" != "xyes" && echo "  setting apr_has_user to \"1\""
-    apr_has_user="1"
-  fi
-
-
-
-
-echo "${nl}Restore user-defined environment settings..."
-
-
-set X $apr_ste_save_CPPFLAGS
-if test ${#} -eq 1; then
-  EXTRA_CPPFLAGS="$CPPFLAGS"
-  CPPFLAGS=
-else
-  if test "x$apr_ste_save_CPPFLAGS" = "x$CPPFLAGS"; then
-    EXTRA_CPPFLAGS=
-  else
-    EXTRA_CPPFLAGS=`echo "$CPPFLAGS" | sed -e "s%${apr_ste_save_CPPFLAGS}%%"`
-    CPPFLAGS="$apr_ste_save_CPPFLAGS"
-  fi
-fi
-if test "x$silent" != "xyes"; then
-  echo "  restoring CPPFLAGS to \"$CPPFLAGS\""
-  echo "  setting EXTRA_CPPFLAGS to \"$EXTRA_CPPFLAGS\""
-fi
-
-
-
-set X $apr_ste_save_CFLAGS
-if test ${#} -eq 1; then
-  EXTRA_CFLAGS="$CFLAGS"
-  CFLAGS=
-else
-  if test "x$apr_ste_save_CFLAGS" = "x$CFLAGS"; then
-    EXTRA_CFLAGS=
-  else
-    EXTRA_CFLAGS=`echo "$CFLAGS" | sed -e "s%${apr_ste_save_CFLAGS}%%"`
-    CFLAGS="$apr_ste_save_CFLAGS"
-  fi
-fi
-if test "x$silent" != "xyes"; then
-  echo "  restoring CFLAGS to \"$CFLAGS\""
-  echo "  setting EXTRA_CFLAGS to \"$EXTRA_CFLAGS\""
-fi
-
-
-
-set X $apr_ste_save_LDFLAGS
-if test ${#} -eq 1; then
-  EXTRA_LDFLAGS="$LDFLAGS"
-  LDFLAGS=
-else
-  if test "x$apr_ste_save_LDFLAGS" = "x$LDFLAGS"; then
-    EXTRA_LDFLAGS=
-  else
-    EXTRA_LDFLAGS=`echo "$LDFLAGS" | sed -e "s%${apr_ste_save_LDFLAGS}%%"`
-    LDFLAGS="$apr_ste_save_LDFLAGS"
-  fi
-fi
-if test "x$silent" != "xyes"; then
-  echo "  restoring LDFLAGS to \"$LDFLAGS\""
-  echo "  setting EXTRA_LDFLAGS to \"$EXTRA_LDFLAGS\""
-fi
-
-
-
-set X $apr_ste_save_LIBS
-if test ${#} -eq 1; then
-  EXTRA_LIBS="$LIBS"
-  LIBS=
-else
-  if test "x$apr_ste_save_LIBS" = "x$LIBS"; then
-    EXTRA_LIBS=
-  else
-    EXTRA_LIBS=`echo "$LIBS" | sed -e "s%${apr_ste_save_LIBS}%%"`
-    LIBS="$apr_ste_save_LIBS"
-  fi
-fi
-if test "x$silent" != "xyes"; then
-  echo "  restoring LIBS to \"$LIBS\""
-  echo "  setting EXTRA_LIBS to \"$EXTRA_LIBS\""
-fi
-
-
-
-set X $apr_ste_save_INCLUDES
-if test ${#} -eq 1; then
-  EXTRA_INCLUDES="$INCLUDES"
-  INCLUDES=
-else
-  if test "x$apr_ste_save_INCLUDES" = "x$INCLUDES"; then
-    EXTRA_INCLUDES=
-  else
-    EXTRA_INCLUDES=`echo "$INCLUDES" | sed -e "s%${apr_ste_save_INCLUDES}%%"`
-    INCLUDES="$apr_ste_save_INCLUDES"
-  fi
-fi
-if test "x$silent" != "xyes"; then
-  echo "  restoring INCLUDES to \"$INCLUDES\""
-  echo "  setting EXTRA_INCLUDES to \"$EXTRA_INCLUDES\""
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Use -no-install to link the test programs on all platforms
-# but Darwin, where it would cause the programs to be linked
-# against installed versions of libapr instead of those just
-# built.
-case $host in
-*-apple-darwin*) LT_NO_INSTALL="" ;;
-*) LT_NO_INSTALL="-no-install" ;;
-esac
-
-
-#
-# BSD/OS (BSDi) needs to use a different include syntax in the Makefiles
-#
-case $host in
-*bsdi*)
-    # Check whether they've installed GNU make
-    if make --version > /dev/null 2>&1; then
-	INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
-	INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
-    else
-	# BSDi make
-	INCLUDE_RULES=".include \"$apr_buildout/apr_rules.mk\""
-	INCLUDE_OUTPUTS=".include \"$apr_srcdir/build-outputs.mk\""
-    fi
-    ;;
-*)
-    INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
-    INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
-    ;;
-esac
-
-
-
-ac_config_files="$ac_config_files Makefile include/apr.h build/apr_rules.mk build/pkg/pkginfo apr-$APR_MAJOR_VERSION-config:apr-config.in apr.pc"
-
-
-if test -d $srcdir/test; then
-   ac_config_files="$ac_config_files test/Makefile test/internal/Makefile"
-
-fi
-
-dir=include/arch/unix
-test -d $dir || $MKDIR $dir
-
-ac_config_commands="$ac_config_commands default"
-
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to the package provider."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in AS \
-DLLTOOL \
-OBJDUMP \
-SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-# Commands run at the beginning of config.status:
-APR_SAVE_HEADERS="include/apr.h include/arch/unix/apr_private.h"
-APR_MAJOR_VERSION=$APR_MAJOR_VERSION
-APR_PLATFORM=$host
-
-for apri in \${APR_SAVE_HEADERS}; do
-  test -r \${apri} && mv \${apri} \${apri}.save
-done
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "include/arch/unix/apr_private.h") CONFIG_HEADERS="$CONFIG_HEADERS include/arch/unix/apr_private.h" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "include/apr.h") CONFIG_FILES="$CONFIG_FILES include/apr.h" ;;
-    "build/apr_rules.mk") CONFIG_FILES="$CONFIG_FILES build/apr_rules.mk" ;;
-    "build/pkg/pkginfo") CONFIG_FILES="$CONFIG_FILES build/pkg/pkginfo" ;;
-    "apr-$APR_MAJOR_VERSION-config") CONFIG_FILES="$CONFIG_FILES apr-$APR_MAJOR_VERSION-config:apr-config.in" ;;
-    "apr.pc") CONFIG_FILES="$CONFIG_FILES apr.pc" ;;
-    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
-    "test/internal/Makefile") CONFIG_FILES="$CONFIG_FILES test/internal/Makefile" ;;
-    "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags=""
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Assembler program.
-AS=$lt_AS
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$lt_OBJDUMP
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
- ;;
-    "default":C)
-# Commands run at the end of config.status:
-for i in $APR_SAVE_HEADERS; do
-  if cmp -s $i $i.save 2>/dev/null; then
-    mv $i.save $i
-    { $as_echo "$as_me:${as_lineno-$LINENO}: $i is unchanged" >&5
-$as_echo "$as_me: $i is unchanged" >&6;}
-  fi
-  rm -f $i.save
-done
-chmod +x apr-$APR_MAJOR_VERSION-config
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-

Copied: vendor/apache/apr/1.5.2/configure (from rev 9273, vendor/apache/apr/dist/configure)
===================================================================
--- vendor/apache/apr/1.5.2/configure	                        (rev 0)
+++ vendor/apache/apr/1.5.2/configure	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,30878 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+PACKAGE_URL=
+
+ac_unique_file="build/apr_common.m4"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+INCLUDE_OUTPUTS
+INCLUDE_RULES
+LT_NO_INSTALL
+LIBTOOL_LIBS
+DEFAULT_OSDIR
+OSDIR
+INCLUDES
+LDLIBS
+INTERNAL_CPPFLAGS
+NOTEST_INCLUDES
+NOTEST_LIBS
+NOTEST_LDFLAGS
+NOTEST_CFLAGS
+NOTEST_CPPFLAGS
+EXTRA_INCLUDES
+EXTRA_LIBS
+EXTRA_LDFLAGS
+EXTRA_CFLAGS
+EXTRA_CPPFLAGS
+apr_has_user
+apr_thread_func
+apr_procattr_user_set_requires_password
+apr_has_xthread_files
+have_unicode_fs
+have_ipv6
+have_sa_storage
+have_sctp
+acceptfilter
+have_corkable_tcp
+apr_tcp_nopush_flag
+file_as_socket
+have_in_addr
+osuuid
+rand
+proclockglobal
+pthreadser
+procpthreadser
+fcntlser
+posixser
+sysvser
+flockser
+hasprocpthreadser
+hasfcntlser
+hasposixser
+hassysvser
+hasflockser
+have_union_semun
+struct_rlimit
+have_proc_invoked
+oc
+aprdso
+have_memchr
+have_strstr
+have_strdup
+have_strcasecmp
+have_stricmp
+have_strncasecmp
+have_strnicmp
+ino_t_value
+have_iovec
+aprlfs
+bigendian
+stdint
+uint64_literal
+int64_literal
+pid_t_fmt
+off_t_fmt
+size_t_fmt
+ssize_t_fmt
+uint64_t_hex_fmt
+uint64_t_fmt
+int64_t_fmt
+socklen_t_value
+ssize_t_value
+size_t_value
+off_t_value
+int64_value
+long_value
+int_value
+short_value
+voidp_size
+winsock2h
+windowsh
+semaphoreh
+pthreadh
+processh
+sys_waith
+signalh
+unistdh
+timeh
+sys_unh
+sys_uioh
+sys_timeh
+sys_typesh
+sys_sockioh
+sys_socketh
+sys_signalh
+sys_sendfileh
+sys_ioctlh
+stringsh
+stringh
+stdlibh
+stdioh
+stdargh
+netinet_tcph
+netinet_sctp_uioh
+netinet_sctph
+netinet_inh
+sys_syslimitsh
+netdbh
+limitsh
+ioh
+fcntlh
+direnth
+errnoh
+crypth
+ctypeh
+conioh
+arpa_ineth
+have_memmove
+mmap
+have_getrlimit
+have_setrlimit
+have_sigaction
+have_inet_network
+o_nonblock_inherited
+tcp_nodelay_inherited
+have_inet_addr
+fork
+apr_inaddr_none
+sendfile
+ALLOCA
+sharedmem
+havewin32shm
+haveos2shm
+havebeosarea
+haveshmget
+havemmapshm
+havemmaptmp
+usewin32shm
+useos2shm
+usebeosarea
+useshmget
+usemmapshm
+usemmaptmp
+havemmapanon
+havemmapzero
+haveshmgetanon
+usemmapanon
+usemmapzero
+useshmgetanon
+have_sigwait
+have_sigsuspend
+threads
+INSTALL_SUBDIRS
+eolstr
+proc_mutex_is_global
+OBJECTS_PLATFORM
+MKDEP
+LT_VERSION
+LT_LDFLAGS
+LTFLAGS
+shlibpath_var
+export_lib_target
+lib_target
+so_ext
+link
+lt_compile
+installbuilddir
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+STRIP
+ac_ct_AR
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+LIBTOOL
+OBJDUMP
+DLLTOOL
+APR_LIBNAME
+apr_charset_ebcdic
+EGREP
+GREP
+AR
+ASCPP
+AS
+RM
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+RANLIB
+LN_S
+AWK
+CPP
+SET_MAKE
+SED
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+APR_MAJOR_VERSION
+APR_DOTTED_VERSION
+apr_builders
+top_builddir
+APR_CONFIG_LOCATION
+apr_builddir
+apr_srcdir
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_layout
+enable_experimental_libtool
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+with_installbuilddir
+with_libtool
+enable_debug
+enable_maintainer_mode
+enable_profile
+enable_pool_debug
+enable_malloc_debug
+enable_lfs
+enable_nonportable_atomics
+enable_threads
+with_efence
+enable_posix_shm
+with_sendfile
+enable_allocator_uses_mmap
+enable_dso
+enable_other_child
+with_egd
+with_devrandom
+enable_ipv6
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-layout=LAYOUT
+  --enable-experimental-libtool Use experimental custom libtool
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-debug          Turn on debugging and compile time warnings
+  --enable-maintainer-mode  Turn on debugging and compile time warnings
+  --enable-profile        Turn on profiling for the build (GCC)
+  --enable-pool-debug[=yes|no|verbose|verbose-alloc|lifetime|owner|all]    Turn on pools debugging
+  --enable-malloc-debug   Switch on malloc_debug for BeOS
+  --disable-lfs           Disable large file support on 32-bit platforms
+  --enable-nonportable-atomics  Use optimized atomic code which may produce nonportable binaries
+  --enable-threads        Enable threading support in APR.
+  --enable-posix-shm      Use POSIX shared memory (shm_open) if available
+  --enable-allocator-uses-mmap    Use mmap in apr_allocator instead of malloc
+  --disable-dso           Disable DSO support
+  --enable-other-child    Enable reliable child processes
+  --disable-ipv6          Disable IPv6 support in APR.
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot=DIR Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).
+  --with-installbuilddir=DIR location to store APR build files (defaults to '${datadir}/build')
+  --without-libtool       avoid using libtool to link the library
+  --with-efence[=DIR]     path to Electric Fence installation
+  --with-sendfile         Override decision to use sendfile
+  --with-egd[=DIR]        use EGD-compatible socket
+  --with-devrandom[=DEV]  use /dev/random or compatible [searches by default]
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_member
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_config_headers="$ac_config_headers include/arch/unix/apr_private.h"
+
+ac_aux_dir=
+for ac_dir in build "$srcdir"/build; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in build \"$srcdir\"/build" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+# LT_INIT
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+
+
+# Initialize.
+
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+
+
+# Initialize.
+
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+
+
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+
+
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+
+
+
+# C support is built-in for now
+
+
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+# _LT_LANG
+
+
+#m4_ifndef
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_TAG_COMPILER
+# ----------------
+# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+# _LT_COMPILER_OPTION
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+# _LT_LINKER_OPTION
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# LT_CMD_MAX_LEN
+#---------------
+# LT_CMD_MAX_LEN
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+# LT_SYS_DLOPEN_SELF
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+# LT_PATH_LD
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+# LT_PATH_NM
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+# LT_LIB_M
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+ # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_GO_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# LT_PROG_GO
+# ----------
+
+
+
+# LT_PROG_RC
+# ----------
+
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+# _LT_DECL_SED
+
+#m4_ifndef
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+# _LT_PATH_CONVERSION_FUNCTIONS
+
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+
+
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+
+
+
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+
+
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 7 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+# win32-dll
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# _LT_ENABLE_SHARED
+
+
+
+
+# Old names:
+
+
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# _LT_ENABLE_STATIC
+
+
+
+
+# Old names:
+
+
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# _LT_ENABLE_FAST_INSTALL
+
+
+
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+# _LT_WITH_PIC
+
+
+
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+
+
+
+
+
+
+
+
+
+# ltversion.m4 -- version numbers			-*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# @configure_input@
+
+# serial 3337 ltversion.m4
+# This file is part of GNU Libtool
+
+
+
+
+
+
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  apr_ste_save_CPPFLAGS="$CPPFLAGS"
+
+
+  apr_ste_save_CFLAGS="$CFLAGS"
+
+
+  apr_ste_save_LDFLAGS="$LDFLAGS"
+
+
+  apr_ste_save_LIBS="$LIBS"
+
+
+  apr_ste_save_INCLUDES="$INCLUDES"
+
+
+
+  rm -f config.nice
+  cat >config.nice<<EOF
+#! /bin/sh
+#
+# Created by configure
+
+EOF
+  if test -n "$CC"; then
+    echo "CC=\"$CC\"; export CC" >> config.nice
+  fi
+  if test -n "$CFLAGS"; then
+    echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> config.nice
+  fi
+  if test -n "$CPPFLAGS"; then
+    echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> config.nice
+  fi
+  if test -n "$LDFLAGS"; then
+    echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> config.nice
+  fi
+  if test -n "$LTFLAGS"; then
+    echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> config.nice
+  fi
+  if test -n "$LIBS"; then
+    echo "LIBS=\"$LIBS\"; export LIBS" >> config.nice
+  fi
+  if test -n "$INCLUDES"; then
+    echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> config.nice
+  fi
+  if test -n "$NOTEST_CFLAGS"; then
+    echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> config.nice
+  fi
+  if test -n "$NOTEST_CPPFLAGS"; then
+    echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> config.nice
+  fi
+  if test -n "$NOTEST_LDFLAGS"; then
+    echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> config.nice
+  fi
+  if test -n "$NOTEST_LIBS"; then
+    echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> config.nice
+  fi
+
+  # Retrieve command-line arguments.
+  eval "set x $0 $ac_configure_args"
+  shift
+
+  for arg
+  do
+
+ap_last=
+ap_cur="$arg"
+while test "x${ap_cur}" != "x${ap_last}";
+do
+  ap_last="${ap_cur}"
+  ap_cur=`eval "echo ${ap_cur}"`
+done
+arg="${ap_cur}"
+
+    echo "\"$arg\" \\" >> config.nice
+  done
+  echo '"$@"' >> config.nice
+  chmod +x config.nice
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+echo "Configuring APR library"
+echo "Platform: $host"
+
+
+
+# Absolute source/build directory
+apr_srcdir=`(cd $srcdir && pwd)`
+apr_builddir=`pwd`
+
+
+
+if test "$apr_builddir" != "$apr_srcdir"; then
+  USE_VPATH=1
+  APR_CONFIG_LOCATION=build
+else
+  APR_CONFIG_LOCATION=source
+fi
+
+
+
+# Libtool might need this symbol -- it must point to the location of
+# the generated libtool script (not necessarily the "top" build dir).
+#
+top_builddir="$apr_builddir"
+
+
+# Directory containing apr build macros, helpers, and make rules
+# NOTE: make rules (apr_rules.mk) will be in the builddir for vpath
+#
+apr_buildout=$apr_builddir/build
+apr_builders=$apr_srcdir/build
+
+
+MKDIR=$apr_builders/mkdir.sh
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mkdir -p" >&5
+$as_echo_n "checking for working mkdir -p... " >&6; }
+if ${ac_cv_mkdir_p+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    test -d conftestdir && rm -rf conftestdir
+    mkdir -p conftestdir/somedir >/dev/null 2>&1
+    if test -d conftestdir/somedir; then
+      ac_cv_mkdir_p=yes
+    else
+      ac_cv_mkdir_p=no
+    fi
+    rm -rf conftestdir
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mkdir_p" >&5
+$as_echo "$ac_cv_mkdir_p" >&6; }
+  if test "$ac_cv_mkdir_p" = "yes"; then
+      mkdir_p="mkdir -p"
+  else
+      mkdir_p="$apr_builders/mkdir.sh"
+  fi
+
+
+# get our version information
+get_version="$apr_builders/get-version.sh"
+version_hdr="$apr_srcdir/include/apr_version.h"
+APR_MAJOR_VERSION="`$get_version major $version_hdr APR`"
+APR_DOTTED_VERSION="`$get_version all $version_hdr APR`"
+
+
+
+
+echo "APR Version: ${APR_DOTTED_VERSION}"
+
+
+# Check whether --enable-layout was given.
+if test "${enable_layout+set}" = set; then :
+  enableval=$enable_layout;
+  LAYOUT=$enableval
+
+fi
+
+
+if test -z "$LAYOUT"; then
+  LAYOUT="apr"
+fi
+
+  if test ! -f $srcdir/config.layout; then
+    echo "** Error: Layout file $srcdir/config.layout not found"
+    echo "** Error: Cannot use undefined layout '$LAYOUT'"
+    exit 1
+  fi
+  # Catch layout names including a slash which will otherwise
+  # confuse the heck out of the sed script.
+  case $LAYOUT in
+  */*)
+    echo "** Error: $LAYOUT is not a valid layout name"
+    exit 1 ;;
+  esac
+  pldconf=./config.pld
+
+  sed -e "1s/[ 	]*<[lL]ayout[ 	]*$LAYOUT[ 	]*>[ 	]*//;1t" \
+      -e "1,/[ 	]*<[lL]ayout[ 	]*$LAYOUT[ 	]*>[ 	]*/d" \
+      -e '/[ 	]*<\/Layout>[ 	]*/,$d' \
+      -e "s/^[ 	]*//g" \
+      -e "s/:[ 	]*/=\'/g" \
+      -e "s/[ 	]*$/'/g" \
+      $srcdir/config.layout > $pldconf
+  layout_name=$LAYOUT
+  if test ! -s $pldconf; then
+    echo "** Error: unable to find layout $layout_name"
+    exit 1
+  fi
+  . $pldconf
+  rm $pldconf
+  for var in prefix exec_prefix bindir sbindir libexecdir mandir \
+             sysconfdir datadir includedir localstatedir runtimedir \
+             logfiledir libdir installbuilddir libsuffix ; do
+    eval "val=\"\$$var\""
+    case $val in
+      *+)
+        val=`echo $val | sed -e 's;\+$;;'`
+        eval "$var=\"\$val\""
+        autosuffix=yes
+        ;;
+      *)
+        autosuffix=no
+        ;;
+    esac
+    val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
+    val=`echo $val | sed -e 's:[\$]\([a-z_]*\):$\1:g'`
+    if test "$autosuffix" = "yes"; then
+      if echo $val | grep apache >/dev/null; then
+        addtarget=no
+      else
+        addtarget=yes
+      fi
+      if test "$addtarget" = "yes"; then
+        val="$val/apache2"
+      fi
+    fi
+    eval "$var='$val'"
+  done
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for chosen layout" >&5
+$as_echo_n "checking for chosen layout... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $layout_name" >&5
+$as_echo "$layout_name" >&6; }
+
+
+ac_prev=
+# Retrieve the command-line arguments.  The eval is needed because
+# the arguments are quoted to preserve accuracy.
+eval "set x $ac_configure_args"
+shift
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir="$ac_optarg" ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir="$ac_optarg" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix="$ac_optarg" ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir="$ac_optarg" ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir="$ac_optarg" ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir="$ac_optarg" ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir="$ac_optarg" ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir="$ac_optarg" ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir="$ac_optarg" ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix="$ac_optarg" ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir="$ac_optarg" ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir="$ac_optarg" ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir="$ac_optarg" ;;
+
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  as_fn_error $? "expected an absolute path for --$ac_var: $ac_val" "$LINENO" 5;;
+  esac
+done
+
+
+
+
+case "$host" in
+  *-apple-aux3*)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"gcc\""
+    CC="gcc"
+  fi
+
+      ;;
+  bs2000*-siemens-sysv*)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"c89 -XLLML -XLLMK -XL -Kno_integer_overflow\""
+    CC="c89 -XLLML -XLLMK -XL -Kno_integer_overflow"
+  fi
+
+      ;;
+  *convex-v11*)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
+    CC="cc"
+  fi
+
+      ;;
+  *-ibm-os390)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
+    CC="cc"
+  fi
+
+      ;;
+  *-ibm-as400)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"icc\""
+    CC="icc"
+  fi
+
+      ;;
+  *-isc4*)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"gcc\""
+    CC="gcc"
+  fi
+
+      ;;
+  m88k-*-CX/SX|CYBER)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
+    CC="cc"
+  fi
+
+      ;;
+  *-next-openstep*)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"cc\""
+    CC="cc"
+  fi
+
+      ;;
+  *-qnx32)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"cc -F\""
+    CC="cc -F"
+  fi
+
+      ;;
+  *-tandem-oss)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"c89\""
+    CC="c89"
+  fi
+
+      ;;
+  TPF)
+
+  if test -z "$CC"; then
+    test "x$silent" != "xyes" && echo "  setting CC to \"c89\""
+    CC="c89"
+  fi
+
+      ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+
+
+if test "x$apr_preload_done" != "xyes" ; then
+
+  apr_preload_done="yes"
+
+  echo "Applying APR hints file rules for $host"
+
+  case "$host" in
+    *mint)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DMINT -D_GNU_SOURCE\""
+    CPPFLAGS="-DMINT -D_GNU_SOURCE"
+  else
+    apr_addto_bugger="-DMINT -D_GNU_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *MPE/iX*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE\""
+    CPPFLAGS="-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE"
+  else
+    apr_addto_bugger="-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lsvipc -lcurses\""
+    LIBS="-lsvipc -lcurses"
+  else
+    apr_addto_bugger="-lsvipc -lcurses"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\"\""
+    LDFLAGS="-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\""
+  else
+    apr_addto_bugger="-Xlinker \"-WL,cap=ia,ba,ph;nmstack=1024000\""
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-apple-aux3*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAUX3 -D_POSIX_SOURCE\""
+    CPPFLAGS="-DAUX3 -D_POSIX_SOURCE"
+  else
+    apr_addto_bugger="-DAUX3 -D_POSIX_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lposix -lbsd\""
+    LIBS="-lposix -lbsd"
+  else
+    apr_addto_bugger="-lposix -lbsd"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-s\""
+    LDFLAGS="-s"
+  else
+    apr_addto_bugger="-s"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+
+  test "x$silent" != "xyes" && echo "  forcing SHELL to \"/bin/ksh\""
+  SHELL="/bin/ksh"
+
+	;;
+    *-ibm-aix*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-U__STR__ -D_THREAD_SAFE\""
+    CPPFLAGS="-U__STR__ -D_THREAD_SAFE"
+  else
+    apr_addto_bugger="-U__STR__ -D_THREAD_SAFE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+                case $host in
+            *-ibm-aix4.3)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_USE_IRS\""
+    CPPFLAGS="-D_USE_IRS"
+  else
+    apr_addto_bugger="-D_USE_IRS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	        ;;
+            *-ibm-aix5*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_USE_IRS\""
+    CPPFLAGS="-D_USE_IRS"
+  else
+    apr_addto_bugger="-D_USE_IRS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	        ;;
+            *-ibm-aix4.3.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_USE_IRS\""
+    CPPFLAGS="-D_USE_IRS"
+  else
+    apr_addto_bugger="-D_USE_IRS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+                ;;
+        esac
+                if $CC 2>&1 | grep 'xlc' > /dev/null; then
+
+  if test -z "$AIX_XLC"; then
+    test "x$silent" != "xyes" && echo "  setting AIX_XLC to \"yes\""
+    AIX_XLC="yes"
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-qHALT=E\""
+    CFLAGS="-qHALT=E"
+  else
+    apr_addto_bugger="-qHALT=E"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+        fi
+
+  if test -z "$apr_sysvsem_is_global"; then
+    test "x$silent" != "xyes" && echo "  setting apr_sysvsem_is_global to \"yes\""
+    apr_sysvsem_is_global="yes"
+  fi
+
+
+  if test -z "$apr_lock_method"; then
+    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_SYSVSEM_SERIALIZE\""
+    apr_lock_method="USE_SYSVSEM_SERIALIZE"
+  fi
+
+        case $host in
+            *-ibm-aix3* | *-ibm-aix4.1.*)
+                ;;
+            *)
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Wl,-brtl\""
+    LDFLAGS="-Wl,-brtl"
+  else
+    apr_addto_bugger="-Wl,-brtl"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+                ;;
+	esac
+        ;;
+    *-apollo-*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAPOLLO\""
+    CPPFLAGS="-DAPOLLO"
+  else
+    apr_addto_bugger="-DAPOLLO"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-dg-dgux*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DDGUX\""
+    CPPFLAGS="-DDGUX"
+  else
+    apr_addto_bugger="-DDGUX"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-os2*)
+
+  test "x$silent" != "xyes" && echo "  forcing SHELL to \"sh\""
+  SHELL="sh"
+
+
+  if test -z "$apr_gethostbyname_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_gethostbyname_is_thread_safe to \"yes\""
+    apr_gethostbyname_is_thread_safe="yes"
+  fi
+
+
+  if test -z "$apr_gethostbyaddr_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_gethostbyaddr_is_thread_safe to \"yes\""
+    apr_gethostbyaddr_is_thread_safe="yes"
+  fi
+
+
+  if test -z "$apr_getservbyname_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_getservbyname_is_thread_safe to \"yes\""
+    apr_getservbyname_is_thread_safe="yes"
+  fi
+
+	;;
+    *-hi-hiux)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DHIUX\""
+    CPPFLAGS="-DHIUX"
+  else
+    apr_addto_bugger="-DHIUX"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-hp-hpux11.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE\""
+    CPPFLAGS="-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE"
+  else
+    apr_addto_bugger="-DHPUX11 -D_REENTRANT -D_HPUX_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-hp-hpux10.*)
+ 	case $host in
+ 	  *-hp-hpux10.01)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSELECT_NEEDS_CAST\""
+    CPPFLAGS="-DSELECT_NEEDS_CAST"
+  else
+    apr_addto_bugger="-DSELECT_NEEDS_CAST"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	       ;;
+ 	esac
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_REENTRANT\""
+    CPPFLAGS="-D_REENTRANT"
+  else
+    apr_addto_bugger="-D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-hp-hpux*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DHPUX -D_REENTRANT\""
+    CPPFLAGS="-DHPUX -D_REENTRANT"
+  else
+    apr_addto_bugger="-DHPUX -D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-linux*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DLINUX -D_REENTRANT -D_GNU_SOURCE\""
+    CPPFLAGS="-DLINUX -D_REENTRANT -D_GNU_SOURCE"
+  else
+    apr_addto_bugger="-DLINUX -D_REENTRANT -D_GNU_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-lynx-lynxos)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D__NO_INCLUDE_WARN__ -DLYNXOS\""
+    CPPFLAGS="-D__NO_INCLUDE_WARN__ -DLYNXOS"
+  else
+    apr_addto_bugger="-D__NO_INCLUDE_WARN__ -DLYNXOS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbsd\""
+    LIBS="-lbsd"
+  else
+    apr_addto_bugger="-lbsd"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *486-*-bsdi*)
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-m486\""
+    CFLAGS="-m486"
+  else
+    apr_addto_bugger="-m486"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-*-bsdi*)
+        case $host in
+            *bsdi4.1)
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-D_REENTRANT\""
+    CFLAGS="-D_REENTRANT"
+  else
+    apr_addto_bugger="-D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+                ;;
+        esac
+        ;;
+    *-openbsd*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_POSIX_THREADS\""
+    CPPFLAGS="-D_POSIX_THREADS"
+  else
+    apr_addto_bugger="-D_POSIX_THREADS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        # binding to an ephemeral port fails on OpenBSD so override
+        # the test for O_NONBLOCK inheritance across accept().
+
+  if test -z "$ac_cv_o_nonblock_inherited"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_o_nonblock_inherited to \"yes\""
+    ac_cv_o_nonblock_inherited="yes"
+  fi
+
+	;;
+    *-netbsd*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNETBSD\""
+    CPPFLAGS="-DNETBSD"
+  else
+    apr_addto_bugger="-DNETBSD"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        # fcntl() lies about O_NONBLOCK on an accept()ed socket (PR kern/26950)
+
+  if test -z "$ac_cv_o_nonblock_inherited"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_o_nonblock_inherited to \"yes\""
+    ac_cv_o_nonblock_inherited="yes"
+  fi
+
+	;;
+    *-freebsd*)
+
+  if test -z "$apr_lock_method"; then
+    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_FLOCK_SERIALIZE\""
+    apr_lock_method="USE_FLOCK_SERIALIZE"
+  fi
+
+        if test -x /sbin/sysctl; then
+            os_version=`/sbin/sysctl -n kern.osreldate`
+        else
+            os_version=000000
+        fi
+        # 502102 is when libc_r switched to libpthread (aka libkse).
+        if test $os_version -ge "502102"; then
+          apr_cv_pthreads_cflags="none"
+          apr_cv_pthreads_lib="-lpthread"
+        else
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_THREAD_SAFE -D_REENTRANT\""
+    CPPFLAGS="-D_THREAD_SAFE -D_REENTRANT"
+  else
+    apr_addto_bugger="-D_THREAD_SAFE -D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test -z "$enable_threads"; then
+    test "x$silent" != "xyes" && echo "  setting enable_threads to \"no\""
+    enable_threads="no"
+  fi
+
+        fi
+        # prevent use of KQueue before FreeBSD 4.8
+        if test $os_version -lt "480000"; then
+
+  if test -z "$ac_cv_func_kqueue"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_kqueue to \"no\""
+    ac_cv_func_kqueue="no"
+  fi
+
+        fi
+	;;
+    *-k*bsd*-gnu)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_REENTRANT -D_GNU_SOURCE\""
+    CPPFLAGS="-D_REENTRANT -D_GNU_SOURCE"
+  else
+    apr_addto_bugger="-D_REENTRANT -D_GNU_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        ;;
+    *-gnu*|*-GNU*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_REENTRANT -D_GNU_SOURCE -DHURD\""
+    CPPFLAGS="-D_REENTRANT -D_GNU_SOURCE -DHURD"
+  else
+    apr_addto_bugger="-D_REENTRANT -D_GNU_SOURCE -DHURD"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        ;;
+    *-next-nextstep*)
+
+  if test -z "$CFLAGS"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
+    CFLAGS="-O"
+  fi
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNEXT\""
+    CPPFLAGS="-DNEXT"
+  else
+    apr_addto_bugger="-DNEXT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-next-openstep*)
+
+  if test -z "$CFLAGS"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
+    CFLAGS="-O"
+  fi
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNEXT\""
+    CPPFLAGS="-DNEXT"
+  else
+    apr_addto_bugger="-DNEXT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-apple-rhapsody*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DRHAPSODY\""
+    CPPFLAGS="-DRHAPSODY"
+  else
+    apr_addto_bugger="-DRHAPSODY"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-apple-darwin*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK\""
+    CPPFLAGS="-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK"
+  else
+    apr_addto_bugger="-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test -z "$apr_posixsem_is_global"; then
+    test "x$silent" != "xyes" && echo "  setting apr_posixsem_is_global to \"yes\""
+    apr_posixsem_is_global="yes"
+  fi
+
+        case $host in
+            *-apple-darwin[1-9].*)
+                # APR's use of kqueue has triggered kernel panics for some
+                # 10.5.x (Darwin 9.x) users when running the entire test suite.
+                # In 10.4.x, use of kqueue would cause the socket tests to hang.
+                # 10.6+ (Darwin 10.x is supposed to fix the KQueue issues
+
+  if test -z "$ac_cv_func_kqueue"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_kqueue to \"no\""
+    ac_cv_func_kqueue="no"
+  fi
+
+
+  if test -z "$ac_cv_func_poll"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_poll to \"no\""
+    ac_cv_func_poll="no"
+  fi
+ # See issue 34332
+            ;;
+            *-apple-darwin1?.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DDARWIN_10\""
+    CPPFLAGS="-DDARWIN_10"
+  else
+    apr_addto_bugger="-DDARWIN_10"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+            ;;
+        esac
+	;;
+    *-dec-osf*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DOSF1\""
+    CPPFLAGS="-DOSF1"
+  else
+    apr_addto_bugger="-DOSF1"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        # process-shared mutexes don't seem to work in Tru64 5.0
+
+  if test -z "$apr_cv_process_shared_works"; then
+    test "x$silent" != "xyes" && echo "  setting apr_cv_process_shared_works to \"no\""
+    apr_cv_process_shared_works="no"
+  fi
+
+	;;
+    *-nto-qnx*)
+	;;
+    *-qnx)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DQNX\""
+    CPPFLAGS="-DQNX"
+  else
+    apr_addto_bugger="-DQNX"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-N128k -lunix\""
+    LIBS="-N128k -lunix"
+  else
+    apr_addto_bugger="-N128k -lunix"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-qnx32)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DQNX\""
+    CPPFLAGS="-DQNX"
+  else
+    apr_addto_bugger="-DQNX"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-mf -3\""
+    CFLAGS="-mf -3"
+  else
+    apr_addto_bugger="-mf -3"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-N128k -lunix\""
+    LIBS="-N128k -lunix"
+  else
+    apr_addto_bugger="-N128k -lunix"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-isc4*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-posix -DISC\""
+    CPPFLAGS="-posix -DISC"
+  else
+    apr_addto_bugger="-posix -DISC"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-posix\""
+    LDFLAGS="-posix"
+  else
+    apr_addto_bugger="-posix"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-linet\""
+    LIBS="-linet"
+  else
+    apr_addto_bugger="-linet"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sco3.2v[234]*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSCO -D_REENTRANT\""
+    CPPFLAGS="-DSCO -D_REENTRANT"
+  else
+    apr_addto_bugger="-DSCO -D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	if test "$GCC" = "no"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Oacgiltz\""
+    CFLAGS="-Oacgiltz"
+  else
+    apr_addto_bugger="-Oacgiltz"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+	fi
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lPW -lmalloc\""
+    LIBS="-lPW -lmalloc"
+  else
+    apr_addto_bugger="-lPW -lmalloc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sco3.2v5*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSCO5 -D_REENTRANT\""
+    CPPFLAGS="-DSCO5 -D_REENTRANT"
+  else
+    apr_addto_bugger="-DSCO5 -D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sco_sv*|*-SCO_SV*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSCO -D_REENTRANT\""
+    CPPFLAGS="-DSCO -D_REENTRANT"
+  else
+    apr_addto_bugger="-DSCO -D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lPW -lmalloc\""
+    LIBS="-lPW -lmalloc"
+  else
+    apr_addto_bugger="-lPW -lmalloc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-solaris2*)
+    	PLATOSVERS=`echo $host | sed 's/^.*solaris2.//'`
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT\""
+    CPPFLAGS="-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT"
+  else
+    apr_addto_bugger="-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        if test $PLATOSVERS -ge 10; then
+
+  if test -z "$apr_lock_method"; then
+    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_PROC_PTHREAD_SERIALIZE\""
+    apr_lock_method="USE_PROC_PTHREAD_SERIALIZE"
+  fi
+
+        else
+
+  if test -z "$apr_lock_method"; then
+    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_FCNTL_SERIALIZE\""
+    apr_lock_method="USE_FCNTL_SERIALIZE"
+  fi
+
+        fi
+        # readdir64_r error handling seems broken on Solaris (at least
+        # up till 2.8) -- it will return -1 at end-of-directory.
+
+  if test -z "$ac_cv_func_readdir64_r"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_readdir64_r to \"no\""
+    ac_cv_func_readdir64_r="no"
+  fi
+
+	;;
+    *-sunos4*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSUNOS4\""
+    CPPFLAGS="-DSUNOS4"
+  else
+    apr_addto_bugger="-DSUNOS4"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-unixware1)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=100\""
+    CPPFLAGS="-DUW=100"
+  else
+    apr_addto_bugger="-DUW=100"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-unixware2)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=200\""
+    CPPFLAGS="-DUW=200"
+  else
+    apr_addto_bugger="-DUW=200"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
+    LIBS="-lgen"
+  else
+    apr_addto_bugger="-lgen"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-unixware211)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=211\""
+    CPPFLAGS="-DUW=211"
+  else
+    apr_addto_bugger="-DUW=211"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
+    LIBS="-lgen"
+  else
+    apr_addto_bugger="-lgen"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-unixware212)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=212\""
+    CPPFLAGS="-DUW=212"
+  else
+    apr_addto_bugger="-DUW=212"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
+    LIBS="-lgen"
+  else
+    apr_addto_bugger="-lgen"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-unixware7)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUW=700\""
+    CPPFLAGS="-DUW=700"
+  else
+    apr_addto_bugger="-DUW=700"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
+    LIBS="-lgen"
+  else
+    apr_addto_bugger="-lgen"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    maxion-*-sysv4*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
+    CPPFLAGS="-DSVR4"
+  else
+    apr_addto_bugger="-DSVR4"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -lgen\""
+    LIBS="-lc -lgen"
+  else
+    apr_addto_bugger="-lc -lgen"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-*-powermax*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
+    CPPFLAGS="-DSVR4"
+  else
+    apr_addto_bugger="-DSVR4"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lgen\""
+    LIBS="-lgen"
+  else
+    apr_addto_bugger="-lgen"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    TPF)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DTPF -D_POSIX_SOURCE\""
+    CPPFLAGS="-DTPF -D_POSIX_SOURCE"
+  else
+    apr_addto_bugger="-DTPF -D_POSIX_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+       ;;
+    bs2000*-siemens-sysv*)
+
+  if test -z "$CFLAGS"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
+    CFLAGS="-O"
+  fi
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -D_XPG_IV -D_KMEMUSER\""
+    CPPFLAGS="-DSVR4 -D_XPG_IV -D_KMEMUSER"
+  else
+    apr_addto_bugger="-DSVR4 -D_XPG_IV -D_KMEMUSER"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lsocket\""
+    LIBS="-lsocket"
+  else
+    apr_addto_bugger="-lsocket"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+
+  if test -z "$enable_threads"; then
+    test "x$silent" != "xyes" && echo "  setting enable_threads to \"no\""
+    enable_threads="no"
+  fi
+
+	;;
+    *-siemens-sysv4*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT\""
+    CPPFLAGS="-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT"
+  else
+    apr_addto_bugger="-DSVR4 -D_XPG_IV -DHAS_DLFCN -DUSE_MMAP_FILES -DUSE_SYSVSEM_SERIALIZED_ACCEPT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
+    LIBS="-lc"
+  else
+    apr_addto_bugger="-lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    pyramid-pyramid-svr4)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DNO_LONG_DOUBLE\""
+    CPPFLAGS="-DSVR4 -DNO_LONG_DOUBLE"
+  else
+    apr_addto_bugger="-DSVR4 -DNO_LONG_DOUBLE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
+    LIBS="-lc"
+  else
+    apr_addto_bugger="-lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    DS/90\ 7000-*-sysv4*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUXPDS\""
+    CPPFLAGS="-DUXPDS"
+  else
+    apr_addto_bugger="-DUXPDS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-tandem-sysv4*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
+    CPPFLAGS="-DSVR4"
+  else
+    apr_addto_bugger="-DSVR4"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-ncr-sysv4)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DMPRAS\""
+    CPPFLAGS="-DSVR4 -DMPRAS"
+  else
+    apr_addto_bugger="-DSVR4 -DMPRAS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -L/usr/ucblib -lucb\""
+    LIBS="-lc -L/usr/ucblib -lucb"
+  else
+    apr_addto_bugger="-lc -L/usr/ucblib -lucb"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sysv4*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
+    CPPFLAGS="-DSVR4"
+  else
+    apr_addto_bugger="-DSVR4"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
+    LIBS="-lc"
+  else
+    apr_addto_bugger="-lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    88k-encore-sysv4)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DENCORE\""
+    CPPFLAGS="-DSVR4 -DENCORE"
+  else
+    apr_addto_bugger="-DSVR4 -DENCORE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lPW\""
+    LIBS="-lPW"
+  else
+    apr_addto_bugger="-lPW"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-uts*)
+	PLATOSVERS=`echo $host | sed 's/^.*,//'`
+	case $PLATOSVERS in
+	    2*)
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DUTS21\""
+    CPPFLAGS="-DUTS21"
+  else
+    apr_addto_bugger="-DUTS21"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Xa -eft\""
+    CFLAGS="-Xa -eft"
+  else
+    apr_addto_bugger="-Xa -eft"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbsd -la\""
+    LIBS="-lbsd -la"
+  else
+    apr_addto_bugger="-lbsd -la"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	        ;;
+	    *)
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
+    CPPFLAGS="-DSVR4"
+  else
+    apr_addto_bugger="-DSVR4"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Xa\""
+    CFLAGS="-Xa"
+  else
+    apr_addto_bugger="-Xa"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+	        ;;
+	esac
+	;;
+    *-ultrix)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DULTRIX\""
+    CPPFLAGS="-DULTRIX"
+  else
+    apr_addto_bugger="-DULTRIX"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  test "x$silent" != "xyes" && echo "  forcing SHELL to \"/bin/sh5\""
+  SHELL="/bin/sh5"
+
+	;;
+    *powerpc-tenon-machten*)
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Xlstack=0x14000 -Xldelcsect\""
+    LDFLAGS="-Xlstack=0x14000 -Xldelcsect"
+  else
+    apr_addto_bugger="-Xlstack=0x14000 -Xldelcsect"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-machten*)
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-stack 0x14000\""
+    LDFLAGS="-stack 0x14000"
+  else
+    apr_addto_bugger="-stack 0x14000"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *convex-v11*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DCONVEXOS11\""
+    CPPFLAGS="-DCONVEXOS11"
+  else
+    apr_addto_bugger="-DCONVEXOS11"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test -z "$CFLAGS"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O1\""
+    CFLAGS="-O1"
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-ext\""
+    CFLAGS="-ext"
+  else
+    apr_addto_bugger="-ext"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    i860-intel-osf1)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DPARAGON\""
+    CPPFLAGS="-DPARAGON"
+  else
+    apr_addto_bugger="-DPARAGON"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sequent-ptx2.*.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=20\""
+    CPPFLAGS="-DSEQUENT=20"
+  else
+    apr_addto_bugger="-DSEQUENT=20"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
+    CFLAGS="-Wc,-pw"
+  else
+    apr_addto_bugger="-Wc,-pw"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-linet -lc -lseq\""
+    LIBS="-linet -lc -lseq"
+  else
+    apr_addto_bugger="-linet -lc -lseq"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sequent-ptx4.0.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=40\""
+    CPPFLAGS="-DSEQUENT=40"
+  else
+    apr_addto_bugger="-DSEQUENT=40"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
+    CFLAGS="-Wc,-pw"
+  else
+    apr_addto_bugger="-Wc,-pw"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-linet -lc\""
+    LIBS="-linet -lc"
+  else
+    apr_addto_bugger="-linet -lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sequent-ptx4.[123].*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=41\""
+    CPPFLAGS="-DSEQUENT=41"
+  else
+    apr_addto_bugger="-DSEQUENT=41"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
+    CFLAGS="-Wc,-pw"
+  else
+    apr_addto_bugger="-Wc,-pw"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
+    LIBS="-lc"
+  else
+    apr_addto_bugger="-lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sequent-ptx4.4.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=44\""
+    CPPFLAGS="-DSEQUENT=44"
+  else
+    apr_addto_bugger="-DSEQUENT=44"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
+    CFLAGS="-Wc,-pw"
+  else
+    apr_addto_bugger="-Wc,-pw"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
+    LIBS="-lc"
+  else
+    apr_addto_bugger="-lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sequent-ptx4.5.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=45\""
+    CPPFLAGS="-DSEQUENT=45"
+  else
+    apr_addto_bugger="-DSEQUENT=45"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
+    CFLAGS="-Wc,-pw"
+  else
+    apr_addto_bugger="-Wc,-pw"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
+    LIBS="-lc"
+  else
+    apr_addto_bugger="-lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-sequent-ptx5.0.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSEQUENT=50\""
+    CPPFLAGS="-DSEQUENT=50"
+  else
+    apr_addto_bugger="-DSEQUENT=50"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wc,-pw\""
+    CFLAGS="-Wc,-pw"
+  else
+    apr_addto_bugger="-Wc,-pw"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc\""
+    LIBS="-lc"
+  else
+    apr_addto_bugger="-lc"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    *NEWS-OS*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DNEWSOS\""
+    CPPFLAGS="-DNEWSOS"
+  else
+    apr_addto_bugger="-DNEWSOS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-riscix)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DRISCIX\""
+    CPPFLAGS="-DRISCIX"
+  else
+    apr_addto_bugger="-DRISCIX"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test -z "$CFLAGS"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O\""
+    CFLAGS="-O"
+  fi
+
+	;;
+    *-irix*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_POSIX_THREAD_SAFE_FUNCTIONS\""
+    CPPFLAGS="-D_POSIX_THREAD_SAFE_FUNCTIONS"
+  else
+    apr_addto_bugger="-D_POSIX_THREAD_SAFE_FUNCTIONS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *beos*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DBEOS\""
+    CPPFLAGS="-DBEOS"
+  else
+    apr_addto_bugger="-DBEOS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        PLATOSVERS=`uname -r`
+
+  if test -z "$apr_process_lock_is_global"; then
+    test "x$silent" != "xyes" && echo "  setting apr_process_lock_is_global to \"yes\""
+    apr_process_lock_is_global="yes"
+  fi
+
+        case $PLATOSVERS in
+            5.0.4)
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-L/boot/beos/system/lib\""
+    LDFLAGS="-L/boot/beos/system/lib"
+  else
+    apr_addto_bugger="-L/boot/beos/system/lib"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbind -lsocket\""
+    LIBS="-lbind -lsocket"
+  else
+    apr_addto_bugger="-lbind -lsocket"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DBONE7\""
+    CPPFLAGS="-DBONE7"
+  else
+    apr_addto_bugger="-DBONE7"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+                ;;
+            5.1)
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-L/boot/beos/system/lib\""
+    LDFLAGS="-L/boot/beos/system/lib"
+  else
+    apr_addto_bugger="-L/boot/beos/system/lib"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lbind -lsocket\""
+    LIBS="-lbind -lsocket"
+  else
+    apr_addto_bugger="-lbind -lsocket"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+                ;;
+	esac
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSIGPROCMASK_SETS_THREAD_MASK\""
+    CPPFLAGS="-DSIGPROCMASK_SETS_THREAD_MASK"
+  else
+    apr_addto_bugger="-DSIGPROCMASK_SETS_THREAD_MASK"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        ;;
+    4850-*.*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4 -DMPRAS\""
+    CPPFLAGS="-DSVR4 -DMPRAS"
+  else
+    apr_addto_bugger="-DSVR4 -DMPRAS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -L/usr/ucblib -lucb\""
+    LIBS="-lc -L/usr/ucblib -lucb"
+  else
+    apr_addto_bugger="-lc -L/usr/ucblib -lucb"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    drs6000*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DSVR4\""
+    CPPFLAGS="-DSVR4"
+  else
+    apr_addto_bugger="-DSVR4"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lc -L/usr/ucblib -lucb\""
+    LIBS="-lc -L/usr/ucblib -lucb"
+  else
+    apr_addto_bugger="-lc -L/usr/ucblib -lucb"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+	;;
+    m88k-*-CX/SX|CYBER)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_CX_SX\""
+    CPPFLAGS="-D_CX_SX"
+  else
+    apr_addto_bugger="-D_CX_SX"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Xa\""
+    CFLAGS="-Xa"
+  else
+    apr_addto_bugger="-Xa"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-tandem-oss)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1\""
+    CPPFLAGS="-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
+  else
+    apr_addto_bugger="-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+	;;
+    *-ibm-os390)
+
+  if test -z "$apr_lock_method"; then
+    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_SYSVSEM_SERIALIZE\""
+    apr_lock_method="USE_SYSVSEM_SERIALIZE"
+  fi
+
+
+  if test -z "$apr_sysvsem_is_global"; then
+    test "x$silent" != "xyes" && echo "  setting apr_sysvsem_is_global to \"yes\""
+    apr_sysvsem_is_global="yes"
+  fi
+
+
+  if test -z "$apr_gethostbyname_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_gethostbyname_is_thread_safe to \"yes\""
+    apr_gethostbyname_is_thread_safe="yes"
+  fi
+
+
+  if test -z "$apr_gethostbyaddr_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_gethostbyaddr_is_thread_safe to \"yes\""
+    apr_gethostbyaddr_is_thread_safe="yes"
+  fi
+
+
+  if test -z "$apr_getservbyname_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_getservbyname_is_thread_safe to \"yes\""
+    apr_getservbyname_is_thread_safe="yes"
+  fi
+
+
+$as_echo "#define HAVE_ZOS_PTHREADS 1" >>confdefs.h
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1\""
+    CPPFLAGS="-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1"
+  else
+    apr_addto_bugger="-U_NO_PROTO -DSIGPROCMASK_SETS_THREAD_MASK -DTCP_NODELAY=1"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        ;;
+    *-ibm-as400)
+
+  if test -z "$apr_lock_method"; then
+    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"USE_SYSVSEM_SERIALIZE\""
+    apr_lock_method="USE_SYSVSEM_SERIALIZE"
+  fi
+
+
+  if test -z "$apr_process_lock_is_global"; then
+    test "x$silent" != "xyes" && echo "  setting apr_process_lock_is_global to \"yes\""
+    apr_process_lock_is_global="yes"
+  fi
+
+
+  if test -z "$apr_gethostbyname_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_gethostbyname_is_thread_safe to \"yes\""
+    apr_gethostbyname_is_thread_safe="yes"
+  fi
+
+
+  if test -z "$apr_gethostbyaddr_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_gethostbyaddr_is_thread_safe to \"yes\""
+    apr_gethostbyaddr_is_thread_safe="yes"
+  fi
+
+
+  if test -z "$apr_getservbyname_is_thread_safe"; then
+    test "x$silent" != "xyes" && echo "  setting apr_getservbyname_is_thread_safe to \"yes\""
+    apr_getservbyname_is_thread_safe="yes"
+  fi
+
+        ;;
+    *mingw*)
+
+  if test "x$INTERNAL_CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting INTERNAL_CPPFLAGS to \"-DBINPATH=$apr_builddir/test/.libs\""
+    INTERNAL_CPPFLAGS="-DBINPATH=$apr_builddir/test/.libs"
+  else
+    apr_addto_bugger="-DBINPATH=$apr_builddir/test/.libs"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $INTERNAL_CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to INTERNAL_CPPFLAGS"
+        INTERNAL_CPPFLAGS="$INTERNAL_CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DWIN32 -D__MSVCRT__\""
+    CPPFLAGS="-DWIN32 -D__MSVCRT__"
+  else
+    apr_addto_bugger="-DWIN32 -D__MSVCRT__"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-Wl,--enable-auto-import,--subsystem,console\""
+    LDFLAGS="-Wl,--enable-auto-import,--subsystem,console"
+  else
+    apr_addto_bugger="-Wl,--enable-auto-import,--subsystem,console"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test -z "$have_unicode_fs"; then
+    test "x$silent" != "xyes" && echo "  setting have_unicode_fs to \"1\""
+    have_unicode_fs="1"
+  fi
+
+
+  if test -z "$have_proc_invoked"; then
+    test "x$silent" != "xyes" && echo "  setting have_proc_invoked to \"1\""
+    have_proc_invoked="1"
+  fi
+
+
+  if test -z "$apr_lock_method"; then
+    test "x$silent" != "xyes" && echo "  setting apr_lock_method to \"win32\""
+    apr_lock_method="win32"
+  fi
+
+
+  if test -z "$apr_process_lock_is_global"; then
+    test "x$silent" != "xyes" && echo "  setting apr_process_lock_is_global to \"yes\""
+    apr_process_lock_is_global="yes"
+  fi
+
+
+  if test -z "$apr_cv_use_lfs64"; then
+    test "x$silent" != "xyes" && echo "  setting apr_cv_use_lfs64 to \"yes\""
+    apr_cv_use_lfs64="yes"
+  fi
+
+
+  if test -z "$apr_cv_osuuid"; then
+    test "x$silent" != "xyes" && echo "  setting apr_cv_osuuid to \"yes\""
+    apr_cv_osuuid="yes"
+  fi
+
+
+  if test -z "$apr_cv_tcp_nodelay_with_cork"; then
+    test "x$silent" != "xyes" && echo "  setting apr_cv_tcp_nodelay_with_cork to \"no\""
+    apr_cv_tcp_nodelay_with_cork="no"
+  fi
+
+
+  if test -z "$apr_thread_func"; then
+    test "x$silent" != "xyes" && echo "  setting apr_thread_func to \"__stdcall\""
+    apr_thread_func="__stdcall"
+  fi
+
+
+  if test -z "$ac_cv_o_nonblock_inherited"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_o_nonblock_inherited to \"yes\""
+    ac_cv_o_nonblock_inherited="yes"
+  fi
+
+
+  if test -z "$ac_cv_tcp_nodelay_inherited"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_tcp_nodelay_inherited to \"yes\""
+    ac_cv_tcp_nodelay_inherited="yes"
+  fi
+
+
+  if test -z "$ac_cv_file__dev_zero"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_file__dev_zero to \"no\""
+    ac_cv_file__dev_zero="no"
+  fi
+
+
+  if test -z "$ac_cv_func_setpgrp_void"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_setpgrp_void to \"no\""
+    ac_cv_func_setpgrp_void="no"
+  fi
+
+
+  if test -z "$ac_cv_func_mmap"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_mmap to \"yes\""
+    ac_cv_func_mmap="yes"
+  fi
+
+
+  if test -z "$ac_cv_define_sockaddr_in6"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_define_sockaddr_in6 to \"yes\""
+    ac_cv_define_sockaddr_in6="yes"
+  fi
+
+
+  if test -z "$ac_cv_working_getaddrinfo"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_working_getaddrinfo to \"yes\""
+    ac_cv_working_getaddrinfo="yes"
+  fi
+
+
+  if test -z "$ac_cv_working_getnameinfo"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_working_getnameinfo to \"yes\""
+    ac_cv_working_getnameinfo="yes"
+  fi
+
+
+  if test -z "$ac_cv_func_gai_strerror"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_gai_strerror to \"yes\""
+    ac_cv_func_gai_strerror="yes"
+  fi
+
+        case $host in
+            *mingw32*)
+
+  if test -z "$apr_has_xthread_files"; then
+    test "x$silent" != "xyes" && echo "  setting apr_has_xthread_files to \"1\""
+    apr_has_xthread_files="1"
+  fi
+
+
+  if test -z "$apr_has_user"; then
+    test "x$silent" != "xyes" && echo "  setting apr_has_user to \"1\""
+    apr_has_user="1"
+  fi
+
+
+  if test -z "$apr_procattr_user_set_requires_password"; then
+    test "x$silent" != "xyes" && echo "  setting apr_procattr_user_set_requires_password to \"1\""
+    apr_procattr_user_set_requires_password="1"
+  fi
+
+
+  if test -z "$ac_cv_func_sendfile"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_sendfile to \"yes\""
+    ac_cv_func_sendfile="yes"
+  fi
+
+                ;;
+            *mingwce)
+
+  if test -z "$apr_has_xthread_files"; then
+    test "x$silent" != "xyes" && echo "  setting apr_has_xthread_files to \"0\""
+    apr_has_xthread_files="0"
+  fi
+
+
+  if test -z "$apr_has_user"; then
+    test "x$silent" != "xyes" && echo "  setting apr_has_user to \"0\""
+    apr_has_user="0"
+  fi
+
+
+  if test -z "$apr_procattr_user_set_requires_password"; then
+    test "x$silent" != "xyes" && echo "  setting apr_procattr_user_set_requires_password to \"0\""
+    apr_procattr_user_set_requires_password="0"
+  fi
+
+
+  if test -z "$ac_cv_func_sendfile"; then
+    test "x$silent" != "xyes" && echo "  setting ac_cv_func_sendfile to \"no\""
+    ac_cv_func_sendfile="no"
+  fi
+
+                ;;
+        esac
+        ;;
+  esac
+
+fi
+
+
+DEFAULT_OSDIR="unix"
+echo "(Default will be ${DEFAULT_OSDIR})"
+
+apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+# Extract the first word of "rm", so it can be a program name with args.
+set dummy rm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RM"; then
+  ac_cv_prog_RM="$RM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RM="rm"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RM=$ac_cv_prog_RM
+if test -n "$RM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+$as_echo "$RM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "cpp", so it can be a program name with args.
+set dummy cpp; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ASCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ASCPP"; then
+  ac_cv_prog_ASCPP="$ASCPP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ASCPP="cpp"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ASCPP=$ac_cv_prog_ASCPP
+if test -n "$ASCPP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ASCPP" >&5
+$as_echo "$ASCPP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR="ar"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if ${ac_cv_search_strerror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' cposix; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_strerror=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_strerror+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_strerror+:} false; then :
+
+else
+  ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system uses EBCDIC" >&5
+$as_echo_n "checking whether system uses EBCDIC... " >&6; }
+if ${ac_cv_ebcdic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+
+  ac_cv_ebcdic="no"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int main(void) {
+  return (unsigned char)'A' != (unsigned char)0xC1;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+  ac_cv_ebcdic="yes"
+
+else
+
+  ac_cv_ebcdic="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ebcdic" >&5
+$as_echo "$ac_cv_ebcdic" >&6; }
+  if test "$ac_cv_ebcdic" = "yes"; then
+    apr_charset_ebcdic=1
+  else
+    apr_charset_ebcdic=0
+  fi
+
+
+
+APR_LIBNAME="apr${libsuffix}"
+
+
+echo "performing libtool configuration..."
+
+# Check whether --enable-experimental-libtool was given.
+if test "${enable_experimental_libtool+set}" = set; then :
+  enableval=$enable_experimental_libtool; experimental_libtool=$enableval
+else
+  experimental_libtool=no
+fi
+
+
+if test "x$Xsed" = "x"; then
+  Xsed="$SED -e 1s/^X//"
+fi
+
+case $host in
+*-os2*)
+    # Use a custom-made libtool replacement
+    echo "using aplibtool"
+    LIBTOOL="$srcdir/build/aplibtool"
+    gcc $CFLAGS $CPPFLAGS -o $LIBTOOL.exe $LIBTOOL.c
+    ;;
+*)
+    if test "x$LTFLAGS" = "x"; then
+        LTFLAGS='--silent'
+    fi
+    if test "$experimental_libtool" = "yes"; then
+        # Use a custom-made libtool replacement
+        echo "using jlibtool"
+        LIBTOOL="$apr_builddir/libtool"
+        LIBTOOL_SRC="$apr_srcdir/build/jlibtool.c"
+        $CC $CFLAGS $CPPFLAGS -o $LIBTOOL $LIBTOOL_SRC
+        eval `$apr_builddir/libtool --config | grep "^shlibpath_var=[A-Z_]*$"`
+        if test "x$shlibpath_var" = "x"; then
+            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
+        fi
+    else
+        enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AS" = x; then
+    AS="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+  ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_i386"
+	    ;;
+	  ppc64-*linux*|powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  ppc*-*linux*|powerpc*-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[012]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+        enable_dlopen=no
+
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(apr_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl='-Wl,-Wl,,'
+	lt_prog_compiler_pic='-PIC'
+	lt_prog_compiler_static='-Bstatic'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	always_export_symbols=yes
+	file_list_spec='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	  else
+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	  fi~
+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	  linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds='chmod 644 $oldlib'
+	postlink_cmds='lt_outputfile="@OUTPUT@"~
+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
+	  case $lt_outputfile in
+	    *.exe|*.EXE) ;;
+	    *)
+	      lt_outputfile="$lt_outputfile.exe"
+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
+	      ;;
+	  esac~
+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	    $RM "$lt_outputfile.manifest";
+	  fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	old_archive_from_new_cmds='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS="$LDFLAGS"
+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test "$lt_cv_irix_exported_symbol" = yes; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+	fi
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+        # get libtool's setting of shlibpath_var
+        eval `grep "^shlibpath_var=[A-Z_]*$" $apr_builddir/libtool`
+        if test "x$shlibpath_var" = "x"; then
+            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
+        fi
+    fi
+    ;;
+esac
+
+
+# Check whether --with-installbuilddir was given.
+if test "${with_installbuilddir+set}" = set; then :
+  withval=$with_installbuilddir;  installbuilddir=$withval
+else
+   installbuilddir="${datadir}/build-${APR_MAJOR_VERSION}"
+fi
+
+
+
+
+# Check whether --with-libtool was given.
+if test "${with_libtool+set}" = set; then :
+  withval=$with_libtool;  use_libtool=$withval
+else
+   use_libtool="yes"
+fi
+
+
+if test "x$use_libtool" = "xyes"; then
+      lt_compile='$(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -o $@ -c $< && touch $@'
+      LT_VERSION="-version-info `$get_version libtool $version_hdr APR`"
+      link="\$(LIBTOOL) \$(LTFLAGS) --mode=link \$(COMPILE) \$(LT_LDFLAGS) \$(LT_VERSION) \$(ALL_LDFLAGS) -o \$@"
+      so_ext='lo'
+      lib_target='-rpath $(libdir) $(OBJECTS)'
+      export_lib_target='-rpath \$(libdir) \$(OBJECTS)'
+else
+      lt_compile='$(COMPILE) -o $@ -c $<'
+      link='$(AR) cr $(TARGET_LIB) $(OBJECTS); $(RANLIB) $(TARGET_LIB)'
+      so_ext='o'
+      lib_target=''
+      export_lib_target=''
+fi
+
+case $host in
+    *-solaris2*)
+        apr_platform_runtime_link_flag="-R"
+        ;;
+    *-mingw* | *-cygwin*)
+        LT_LDFLAGS="$LT_LDFLAGS -no-undefined"
+        ;;
+    *)
+        ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+nl='
+'
+echo "${nl}Check for compiler flags..."
+
+
+case $host in
+    *os390)
+        if test "$ac_test_CFLAGS" != set; then
+
+  if test "x$CFLAGS" = "x-g"; then
+    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
+    CFLAGS=""
+  else
+    apr_new_bugger=""
+    apr_removed=0
+    for i in $CFLAGS; do
+      if test "x$i" != "x-g"; then
+        apr_new_bugger="$apr_new_bugger $i"
+      else
+        apr_removed=1
+      fi
+    done
+    if test $apr_removed = "1"; then
+      test "x$silent" != "xyes" && echo "  removed \"-g\" from CFLAGS"
+      CFLAGS=$apr_new_bugger
+    fi
+  fi
+
+        fi
+        ;;
+esac
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug;
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-g\""
+    CFLAGS="-g"
+  else
+    apr_addto_bugger="-g"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   if test "$GCC" = "yes"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wall\""
+    CFLAGS="-Wall"
+  else
+    apr_addto_bugger="-Wall"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   elif test "$AIX_XLC" = "yes"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-qfullpath\""
+    CFLAGS="-qfullpath"
+  else
+    apr_addto_bugger="-qfullpath"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   fi
+
+fi
+
+# Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode;
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-g\""
+    CFLAGS="-g"
+  else
+    apr_addto_bugger="-g"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   if test "$GCC" = "yes"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations\""
+    CFLAGS="-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations"
+  else
+    apr_addto_bugger="-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   elif test "$AIX_XLC" = "yes"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro\""
+    CFLAGS="-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro"
+  else
+    apr_addto_bugger="-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   fi
+
+fi
+
+# Check whether --enable-profile was given.
+if test "${enable_profile+set}" = set; then :
+  enableval=$enable_profile; if test "$GCC" = "yes"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-pg\""
+    CFLAGS="-pg"
+  else
+    apr_addto_bugger="-pg"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x-g"; then
+    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
+    CFLAGS=""
+  else
+    apr_new_bugger=""
+    apr_removed=0
+    for i in $CFLAGS; do
+      if test "x$i" != "x-g"; then
+        apr_new_bugger="$apr_new_bugger $i"
+      else
+        apr_removed=1
+      fi
+    done
+    if test $apr_removed = "1"; then
+      test "x$silent" != "xyes" && echo "  removed \"-g\" from CFLAGS"
+      CFLAGS=$apr_new_bugger
+    fi
+  fi
+
+    if test "$host" = "i586-pc-beos"; then
+
+  if test "x$CFLAGS" = "x-O2"; then
+    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
+    CFLAGS=""
+  else
+    apr_new_bugger=""
+    apr_removed=0
+    for i in $CFLAGS; do
+      if test "x$i" != "x-O2"; then
+        apr_new_bugger="$apr_new_bugger $i"
+      else
+        apr_removed=1
+      fi
+    done
+    if test $apr_removed = "1"; then
+      test "x$silent" != "xyes" && echo "  removed \"-O2\" from CFLAGS"
+      CFLAGS=$apr_new_bugger
+    fi
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-O1\""
+    CFLAGS="-O1"
+  else
+    apr_addto_bugger="-O1"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-p\""
+    LDFLAGS="-p"
+  else
+    apr_addto_bugger="-p"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+    fi
+  fi
+
+fi
+
+# Check whether --enable-pool-debug was given.
+if test "${enable_pool_debug+set}" = set; then :
+  enableval=$enable_pool_debug;  if test -z "$enableval"; then
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAPR_POOL_DEBUG=1\""
+    CPPFLAGS="-DAPR_POOL_DEBUG=1"
+  else
+    apr_addto_bugger="-DAPR_POOL_DEBUG=1"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+    elif test ! "$enableval" = "no"; then
+        apr_pool_debug=1
+
+        for i in $enableval
+        do
+            flag=0
+
+            case $i in
+            yes)
+                flag=1
+                ;;
+            verbose)
+                flag=2
+                ;;
+            lifetime)
+                flag=4
+                ;;
+            owner)
+                flag=8
+                ;;
+            verbose-alloc)
+                flag=16
+                ;;
+            all)
+                apr_pool_debug=31
+                ;;
+            *)
+                ;;
+            esac
+
+            if test $flag -gt 0; then
+                apr_pool_debug=`expr '(' $apr_pool_debug - $apr_pool_debug % \
+                    '(' $flag '*' 2 ')' ')' + $flag + $apr_pool_debug % $flag`
+            fi
+        done
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAPR_POOL_DEBUG=$apr_pool_debug\""
+    CPPFLAGS="-DAPR_POOL_DEBUG=$apr_pool_debug"
+  else
+    apr_addto_bugger="-DAPR_POOL_DEBUG=$apr_pool_debug"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+    fi
+
+fi
+
+
+if test "$host" = "i586-pc-beos"; then
+  # Check whether --enable-malloc-debug was given.
+if test "${enable_malloc_debug+set}" = set; then :
+  enableval=$enable_malloc_debug;
+  if test "x$CFLAGS" = "x-O2"; then
+    test "x$silent" != "xyes" && echo "  nulling CFLAGS"
+    CFLAGS=""
+  else
+    apr_new_bugger=""
+    apr_removed=0
+    for i in $CFLAGS; do
+      if test "x$i" != "x-O2"; then
+        apr_new_bugger="$apr_new_bugger $i"
+      else
+        apr_removed=1
+      fi
+    done
+    if test $apr_removed = "1"; then
+      test "x$silent" != "xyes" && echo "  removed \"-O2\" from CFLAGS"
+      CFLAGS=$apr_new_bugger
+    fi
+  fi
+
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-fcheck-memory-usage -D_KERNEL_MODE\""
+    CPPFLAGS="-fcheck-memory-usage -D_KERNEL_MODE"
+  else
+    apr_addto_bugger="-fcheck-memory-usage -D_KERNEL_MODE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+fi
+ fi
+
+# this is the place to put specific options for platform/compiler
+# combinations
+case "$host:$CC" in
+    *-hp-hpux*:cc )
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Ae +Z\""
+    CFLAGS="-Ae +Z"
+  else
+    apr_addto_bugger="-Ae +Z"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+	case $host in
+	  ia64-* )
+	    ;;
+          * )
+	    if echo "$CFLAGS " | grep '+DA' >/dev/null; then :
+	    else
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"+DAportable\""
+    CFLAGS="+DAportable"
+  else
+    apr_addto_bugger="+DAportable"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+	    fi
+	    ;;
+        esac
+	;;
+    powerpc-*-beos:mwcc* )
+
+  test "x$silent" != "xyes" && echo "  forcing CPP to \"mwcc -E\""
+  CPP="mwcc -E"
+
+
+  test "x$silent" != "xyes" && echo "  forcing CC to \"mwcc\""
+  CC="mwcc"
+
+
+  test "x$silent" != "xyes" && echo "  forcing AR to \"ar\""
+  AR="ar"
+
+	;;
+                        *-mingw* | *-cygwin*)
+        if test "$enable_shared" = "yes"; then
+
+  if test "x$INTERNAL_CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting INTERNAL_CPPFLAGS to \"-DAPR_DECLARE_EXPORT\""
+    INTERNAL_CPPFLAGS="-DAPR_DECLARE_EXPORT"
+  else
+    apr_addto_bugger="-DAPR_DECLARE_EXPORT"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $INTERNAL_CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to INTERNAL_CPPFLAGS"
+        INTERNAL_CPPFLAGS="$INTERNAL_CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        else
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DAPR_DECLARE_STATIC\""
+    CPPFLAGS="-DAPR_DECLARE_STATIC"
+  else
+    apr_addto_bugger="-DAPR_DECLARE_STATIC"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+        fi
+        ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler provides atomic builtins" >&5
+$as_echo_n "checking whether the compiler provides atomic builtins... " >&6; }
+if ${ap_cv_atomic_builtins+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ap_cv_atomic_builtins=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int main()
+{
+    unsigned long val = 1010, tmp, *mem = &val;
+
+    if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
+        return 1;
+
+    tmp = val;
+
+    if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
+        return 1;
+
+    if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
+        return 1;
+
+    tmp = 3030;
+
+    if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
+        return 1;
+
+    if (__sync_lock_test_and_set(&val, 4040) != 3030)
+        return 1;
+
+    mem = &tmp;
+
+    if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
+        return 1;
+
+    __sync_synchronize();
+
+    if (mem != &val)
+        return 1;
+
+    return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ap_cv_atomic_builtins=yes
+else
+  ap_cv_atomic_builtins=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ap_cv_atomic_builtins" >&5
+$as_echo "$ap_cv_atomic_builtins" >&6; }
+
+if test "$ap_cv_atomic_builtins" = "yes"; then
+
+$as_echo "#define HAVE_ATOMIC_BUILTINS 1" >>confdefs.h
+
+fi
+
+case $host in
+    powerpc-405-*)
+        # The IBM ppc405cr processor has a bugged stwcx instruction.
+
+$as_echo "#define PPC405_ERRATA 1" >>confdefs.h
+
+        ;;
+    *)
+        ;;
+esac
+
+
+if test "$GCC" = "yes"; then
+  MKDEP='$(CC) -MM'
+else
+  rm -f conftest.c
+  cat > conftest.c <<EOF
+#include <sys/types.h>
+  int main() { return 0; }
+EOF
+  MKDEP="true"
+  for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $i can create proper make dependencies" >&5
+$as_echo_n "checking if $i can create proper make dependencies... " >&6; }
+    if $i conftest.c 2>/dev/null | grep 'conftest.o: conftest.c' >/dev/null; then
+      MKDEP=$i
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      break;
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  done
+  rm -f conftest.c
+fi
+
+
+
+
+proc_mutex_is_global=0
+
+config_subdirs="none"
+INSTALL_SUBDIRS="none"
+OBJECTS_PLATFORM='$(OBJECTS_unix)'
+
+case $host in
+   i386-ibm-aix* | *-ibm-aix[1-2].* | *-ibm-aix3.* | *-ibm-aix4.1 | *-ibm-aix4.1.* | *-ibm-aix4.2 | *-ibm-aix4.2.*)
+       OSDIR="aix"
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-lld\""
+    LDFLAGS="-lld"
+  else
+    apr_addto_bugger="-lld"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+       eolstr="\\n"
+       OBJECTS_PLATFORM='$(OBJECTS_aix)'
+       ;;
+   *-os2*)
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DOS2\""
+    CPPFLAGS="-DOS2"
+  else
+    apr_addto_bugger="-DOS2"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"-Zmt\""
+    CFLAGS="-Zmt"
+  else
+    apr_addto_bugger="-Zmt"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for random in -lbsd" >&5
+$as_echo_n "checking for random in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_random+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char random ();
+int
+main ()
+{
+return random ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_random=yes
+else
+  ac_cv_lib_bsd_random=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_random" >&5
+$as_echo "$ac_cv_lib_bsd_random" >&6; }
+if test "x$ac_cv_lib_bsd_random" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBBSD 1
+_ACEOF
+
+  LIBS="-lbsd $LIBS"
+
+fi
+
+       OSDIR="os2"
+       enable_threads="system_threads"
+       eolstr="\\r\\n"
+       file_as_socket="0"
+       proc_mutex_is_global=1
+       OBJECTS_PLATFORM='$(OBJECTS_os2)'
+       ;;
+   *beos*)
+       OSDIR="beos"
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-DBEOS\""
+    CPPFLAGS="-DBEOS"
+  else
+    apr_addto_bugger="-DBEOS"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+       enable_threads="system_threads"
+       native_mmap_emul="1"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BONE_VERSION in sys/socket.h" >&5
+$as_echo_n "checking for BONE_VERSION in sys/socket.h... " >&6; }
+if ${ac_cv_define_BONE_VERSION+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/socket.h>
+#ifdef BONE_VERSION
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_BONE_VERSION=yes
+else
+  ac_cv_define_BONE_VERSION=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_BONE_VERSION" >&5
+$as_echo "$ac_cv_define_BONE_VERSION" >&6; }
+  if test "$ac_cv_define_BONE_VERSION" = "yes"; then
+
+$as_echo "#define HAVE_BONE_VERSION 1" >>confdefs.h
+
+  fi
+
+       eolstr="\\n"
+       osver=`uname -r`
+       proc_mutex_is_global=1
+       OBJECTS_PLATFORM='$(OBJECTS_beos)'
+       case $osver in
+          5.0.4)
+             file_as_socket="1"
+             ;;
+          *)
+             file_as_socket="0"
+             ;;
+       esac
+       ;;
+   *os390)
+       OSDIR="os390"
+       OBJECTS_PLATFORM='$(OBJECTS_os390)'
+       eolstr="\\n"
+       ;;
+   *os400)
+       OSDIR="as400"
+       eolstr="\\n"
+       ;;
+   *mingw*)
+       OSDIR="win32"
+       enable_threads="system_threads"
+       eolstr="\\r\\n"
+       file_as_socket=0
+       proc_mutex_is_global=1
+       OBJECTS_PLATFORM='$(OBJECTS_win32)'
+       ;;
+   *cygwin*)
+       OSDIR="unix"
+       enable_threads="no"
+       eolstr="\\n"
+       ;;
+   *hpux10* )
+       enable_threads="no"
+       OSDIR="unix"
+       eolstr="\\n"
+       ;;
+   *)
+       OSDIR="unix"
+       eolstr="\\n"
+       ;;
+esac
+
+
+
+# Check whether LFS has explicitly been disabled
+# Check whether --enable-lfs was given.
+if test "${enable_lfs+set}" = set; then :
+  enableval=$enable_lfs; apr_lfs_choice=$enableval
+else
+  apr_lfs_choice=yes
+fi
+
+
+if test "$apr_lfs_choice" = "yes"; then
+   # Check whether the transitional LFS API is sufficient
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable -D_LARGEFILE64_SOURCE" >&5
+$as_echo_n "checking whether to enable -D_LARGEFILE64_SOURCE... " >&6; }
+if ${apr_cv_use_lfs64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   apr_save_CPPFLAGS=$CPPFLAGS
+   CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
+   if test "$cross_compiling" = yes; then :
+  apr_cv_use_lfs64=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+void main(void)
+{
+    int fd, ret = 0;
+    struct stat64 st;
+    off64_t off = 4242;
+
+    if (sizeof(off64_t) != 8 || sizeof(off_t) != 4)
+       exit(1);
+    if ((fd = open("conftest.lfs", O_LARGEFILE|O_CREAT|O_WRONLY, 0644)) < 0)
+       exit(2);
+    if (ftruncate64(fd, off) != 0)
+       ret = 3;
+    else if (fstat64(fd, &st) != 0 || st.st_size != off)
+       ret = 4;
+    else if (lseek64(fd, off, SEEK_SET) != off)
+       ret = 5;
+    else if (close(fd) != 0)
+       ret = 6;
+    else if (lstat64("conftest.lfs", &st) != 0 || st.st_size != off)
+       ret = 7;
+    else if (stat64("conftest.lfs", &st) != 0 || st.st_size != off)
+       ret = 8;
+    unlink("conftest.lfs");
+
+    exit(ret);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_use_lfs64=yes
+else
+  apr_cv_use_lfs64=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+   CPPFLAGS=$apr_save_CPPFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_use_lfs64" >&5
+$as_echo "$apr_cv_use_lfs64" >&6; }
+   if test "$apr_cv_use_lfs64" = "yes"; then
+
+  if test "x$CPPFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CPPFLAGS to \"-D_LARGEFILE64_SOURCE\""
+    CPPFLAGS="-D_LARGEFILE64_SOURCE"
+  else
+    apr_addto_bugger="-D_LARGEFILE64_SOURCE"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CPPFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $i"
+      fi
+    done
+  fi
+
+   fi
+fi
+
+# Check whether --enable-nonportable-atomics was given.
+if test "${enable_nonportable_atomics+set}" = set; then :
+  enableval=$enable_nonportable_atomics; if test $enableval = yes; then
+   force_generic_atomics=no
+ else
+   force_generic_atomics=yes
+ fi
+
+else
+  case $host_cpu in
+   i[456]86) force_generic_atomics=yes ;;
+   *) force_generic_atomics=no
+      case $host in
+         *solaris2.10*)
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <atomic.h>
+int
+main ()
+{
+void *ptr = NULL; atomic_cas_ptr(&ptr, NULL, NULL);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  force_generic_atomics=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+            if test $force_generic_atomics = yes; then
+                { $as_echo "$as_me:${as_lineno-$LINENO}: nonportable atomic support disabled, system needs Patch-ID 118884 or 118885" >&5
+$as_echo "$as_me: nonportable atomic support disabled, system needs Patch-ID 118884 or 118885" >&6;}
+            fi
+            ;;
+      esac
+      ;;
+esac
+
+fi
+
+
+if test $force_generic_atomics = yes; then
+
+$as_echo "#define USE_ATOMICS_GENERIC 1" >>confdefs.h
+
+fi
+
+
+
+
+
+# For some platforms we need a version string which allows easy numeric
+# comparisons.
+case $host in
+    *freebsd*)
+        if test -x /sbin/sysctl; then
+            os_version=`/sbin/sysctl -n kern.osreldate`
+        else
+            os_version=000000
+        fi
+        ;;
+    *linux*)
+        os_major=`uname -r | sed -e 's/\([1-9][0-9]*\)\..*/\1/'`
+        os_minor=`uname -r | sed -e 's/[1-9][0-9]*\.\([0-9]\+\)\..*/\1/'`
+        if test $os_major -lt 2 -o \( $os_major -eq 2 -a $os_minor -lt 4 \); then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Configured for pre-2.4 Linux $os_major.$os_minor" >&5
+$as_echo "$as_me: WARNING: Configured for pre-2.4 Linux $os_major.$os_minor" >&2;}
+            os_pre24linux=1
+        else
+            os_pre24linux=0
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Configured for Linux $os_major.$os_minor" >&5
+$as_echo "$as_me: Configured for Linux $os_major.$os_minor" >&6;}
+        fi
+        ;;
+    *os390)
+        os_version=`uname -r | sed -e 's/\.//g'`
+        ;;
+    *)
+        os_version=OS_VERSION_IS_NOT_SET
+        ;;
+esac
+
+echo "${nl}Checking for libraries..."
+
+case $host in
+   *mingw*)
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock\""
+    LIBS="-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock"
+  else
+    apr_addto_bugger="-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+      ac_cv_func_CreateFileMapping=yes
+      ;;
+   *)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+$as_echo_n "checking for library containing gethostbyname... " >&6; }
+if ${ac_cv_search_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' nsl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gethostbyname=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gethostbyname+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gethostbyname+:} false; then :
+
+else
+  ac_cv_search_gethostbyname=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+$as_echo "$ac_cv_search_gethostbyname" >&6; }
+ac_res=$ac_cv_search_gethostbyname
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostname" >&5
+$as_echo_n "checking for library containing gethostname... " >&6; }
+if ${ac_cv_search_gethostname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostname ();
+int
+main ()
+{
+return gethostname ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' nsl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gethostname=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gethostname+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gethostname+:} false; then :
+
+else
+  ac_cv_search_gethostname=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostname" >&5
+$as_echo "$ac_cv_search_gethostname" >&6; }
+ac_res=$ac_cv_search_gethostname
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+$as_echo_n "checking for library containing socket... " >&6; }
+if ${ac_cv_search_socket+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_socket=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_socket+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_socket+:} false; then :
+
+else
+  ac_cv_search_socket=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
+$as_echo "$ac_cv_search_socket" >&6; }
+ac_res=$ac_cv_search_socket
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+$as_echo_n "checking for library containing crypt... " >&6; }
+if ${ac_cv_search_crypt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt ();
+int
+main ()
+{
+return crypt ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' crypt ufc; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_crypt=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_crypt+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_crypt+:} false; then :
+
+else
+  ac_cv_search_crypt=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
+$as_echo "$ac_cv_search_crypt" >&6; }
+ac_res=$ac_cv_search_crypt
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ltruerand" >&5
+$as_echo_n "checking for main in -ltruerand... " >&6; }
+if ${ac_cv_lib_truerand_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ltruerand  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_truerand_main=yes
+else
+  ac_cv_lib_truerand_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_truerand_main" >&5
+$as_echo "$ac_cv_lib_truerand_main" >&6; }
+if test "x$ac_cv_lib_truerand_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBTRUERAND 1
+_ACEOF
+
+  LIBS="-ltruerand $LIBS"
+
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing modf" >&5
+$as_echo_n "checking for library containing modf... " >&6; }
+if ${ac_cv_search_modf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char modf ();
+int
+main ()
+{
+return modf ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' m; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_modf=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_modf+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_modf+:} false; then :
+
+else
+  ac_cv_search_modf=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_modf" >&5
+$as_echo "$ac_cv_search_modf" >&6; }
+ac_res=$ac_cv_search_modf
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+       ;;
+esac
+
+echo "${nl}Checking for Threads..."
+
+if test -z "$enable_threads"; then
+	# Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then :
+  enableval=$enable_threads;  enable_threads=$enableval
+else
+
+  if test "$GCC" = "yes"; then
+    SAVE_FL="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS -w"
+    for ac_header in pthread.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_H 1
+_ACEOF
+   enable_threads="pthread"
+else
+    enable_threads="no"
+fi
+
+done
+
+    CPPFLAGS="$SAVE_FL"
+  else
+    for ac_header in pthread.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_H 1
+_ACEOF
+   enable_threads="pthread"
+else
+    enable_threads="no"
+fi
+
+done
+
+  fi
+
+fi
+
+fi
+
+if test "$enable_threads" = "no"; then
+    threads="0"
+    pthreadh="0"
+    pthreadser="0"
+else
+    if test "$enable_threads" = "pthread"; then
+# We have specified pthreads for our threading library, just make sure
+# that we have everything we need
+
+  apr_pthsv_CFLAGS="$CFLAGS"
+  apr_pthsv_LIBS="$LIBS"
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAGS needed for pthreads" >&5
+$as_echo_n "checking for CFLAGS needed for pthreads... " >&6; }
+if ${apr_cv_pthreads_cflags+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  apr_ptc_cflags=$CFLAGS
+ for flag in none -kthread -pthread -pthreads -mt -mthreads -Kthread -threads; do
+    CFLAGS=$apr_ptc_cflags
+    test "x$flag" != "xnone" && CFLAGS="$CFLAGS $flag"
+
+if test "$cross_compiling" = yes; then :
+  apr_p_t_r=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <pthread.h>
+#include <stddef.h>
+
+void *thread_routine(void *data) {
+    return data;
+}
+
+int main() {
+    pthread_t thd;
+    pthread_mutexattr_t mattr;
+    pthread_once_t once_init = PTHREAD_ONCE_INIT;
+    int data = 1;
+    pthread_mutexattr_init(&mattr);
+    return pthread_create(&thd, NULL, thread_routine, &data);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_p_t_r=yes
+else
+  apr_p_t_r=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+if test $apr_p_t_r = yes; then
+
+      apr_cv_pthreads_cflags="$flag"
+      break
+
+fi
+
+
+ done
+ CFLAGS=$apr_ptc_cflags
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_cflags" >&5
+$as_echo "$apr_cv_pthreads_cflags" >&6; }
+
+if test -n "$apr_cv_pthreads_cflags"; then
+   pthreads_working=yes
+   if test "x$apr_cv_pthreads_cflags" != "xnone"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"$apr_cv_pthreads_cflags\""
+    CFLAGS="$apr_cv_pthreads_cflags"
+  else
+    apr_addto_bugger="$apr_cv_pthreads_cflags"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   fi
+fi
+
+# The CFLAGS may or may not be sufficient to ensure that libapr
+# depends on the pthreads library: some versions of libtool
+# drop -pthread when passed on the link line; some versions of
+# gcc ignore -pthread when linking a shared object.  So always
+# try and add the relevant library to LIBS too.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBS needed for pthreads" >&5
+$as_echo_n "checking for LIBS needed for pthreads... " >&6; }
+if ${apr_cv_pthreads_lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  apr_ptc_libs=$LIBS
+  for lib in -lpthread -lpthreads -lc_r; do
+    LIBS="$apr_ptc_libs $lib"
+
+if test "$cross_compiling" = yes; then :
+  apr_p_t_r=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <pthread.h>
+#include <stddef.h>
+
+void *thread_routine(void *data) {
+    return data;
+}
+
+int main() {
+    pthread_t thd;
+    pthread_mutexattr_t mattr;
+    pthread_once_t once_init = PTHREAD_ONCE_INIT;
+    int data = 1;
+    pthread_mutexattr_init(&mattr);
+    return pthread_create(&thd, NULL, thread_routine, &data);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_p_t_r=yes
+else
+  apr_p_t_r=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+if test $apr_p_t_r = yes; then
+
+      apr_cv_pthreads_lib=$lib
+      break
+
+fi
+
+
+  done
+  LIBS=$apr_ptc_libs
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_lib" >&5
+$as_echo "$apr_cv_pthreads_lib" >&6; }
+
+if test -n "$apr_cv_pthreads_lib"; then
+   pthreads_working=yes
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"$apr_cv_pthreads_lib\""
+    LIBS="$apr_cv_pthreads_lib"
+  else
+    apr_addto_bugger="$apr_cv_pthreads_lib"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+fi
+
+if test "$pthreads_working" = "yes"; then
+  threads_result="POSIX Threads found"
+else
+  threads_result="POSIX Threads not found"
+fi
+
+
+  if test "$GCC" = "yes"; then
+    SAVE_FL="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS -w"
+    for ac_header in pthread.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_H 1
+_ACEOF
+
+          threads="1"
+          pthreadh="1"
+          pthreadser="1"
+else
+
+          threads="0"
+          pthreadh="0"
+          pthreadser="0"
+
+  CFLAGS="$apr_pthsv_CFLAGS"
+  LIBS="$apr_pthsv_LIBS"
+
+fi
+
+done
+
+    CPPFLAGS="$SAVE_FL"
+  else
+    for ac_header in pthread.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_H 1
+_ACEOF
+
+          threads="1"
+          pthreadh="1"
+          pthreadser="1"
+else
+
+          threads="0"
+          pthreadh="0"
+          pthreadser="0"
+
+  CFLAGS="$apr_pthsv_CFLAGS"
+  LIBS="$apr_pthsv_LIBS"
+
+fi
+
+done
+
+  fi
+
+    elif test "$enable_threads" = "system_threads"; then
+        threads="1"
+        pthreadh="0"
+        pthreadser="0"
+    else
+# We basically specified that we wanted threads, but not how to implement
+# them.  In this case, just look for pthreads.  In the future, we can check
+# for other threading libraries as well.
+
+  apr_pthsv_CFLAGS="$CFLAGS"
+  apr_pthsv_LIBS="$LIBS"
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAGS needed for pthreads" >&5
+$as_echo_n "checking for CFLAGS needed for pthreads... " >&6; }
+if ${apr_cv_pthreads_cflags+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  apr_ptc_cflags=$CFLAGS
+ for flag in none -kthread -pthread -pthreads -mt -mthreads -Kthread -threads; do
+    CFLAGS=$apr_ptc_cflags
+    test "x$flag" != "xnone" && CFLAGS="$CFLAGS $flag"
+
+if test "$cross_compiling" = yes; then :
+  apr_p_t_r=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <pthread.h>
+#include <stddef.h>
+
+void *thread_routine(void *data) {
+    return data;
+}
+
+int main() {
+    pthread_t thd;
+    pthread_mutexattr_t mattr;
+    pthread_once_t once_init = PTHREAD_ONCE_INIT;
+    int data = 1;
+    pthread_mutexattr_init(&mattr);
+    return pthread_create(&thd, NULL, thread_routine, &data);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_p_t_r=yes
+else
+  apr_p_t_r=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+if test $apr_p_t_r = yes; then
+
+      apr_cv_pthreads_cflags="$flag"
+      break
+
+fi
+
+
+ done
+ CFLAGS=$apr_ptc_cflags
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_cflags" >&5
+$as_echo "$apr_cv_pthreads_cflags" >&6; }
+
+if test -n "$apr_cv_pthreads_cflags"; then
+   pthreads_working=yes
+   if test "x$apr_cv_pthreads_cflags" != "xnone"; then
+
+  if test "x$CFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting CFLAGS to \"$apr_cv_pthreads_cflags\""
+    CFLAGS="$apr_cv_pthreads_cflags"
+  else
+    apr_addto_bugger="$apr_cv_pthreads_cflags"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $CFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to CFLAGS"
+        CFLAGS="$CFLAGS $i"
+      fi
+    done
+  fi
+
+   fi
+fi
+
+# The CFLAGS may or may not be sufficient to ensure that libapr
+# depends on the pthreads library: some versions of libtool
+# drop -pthread when passed on the link line; some versions of
+# gcc ignore -pthread when linking a shared object.  So always
+# try and add the relevant library to LIBS too.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBS needed for pthreads" >&5
+$as_echo_n "checking for LIBS needed for pthreads... " >&6; }
+if ${apr_cv_pthreads_lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  apr_ptc_libs=$LIBS
+  for lib in -lpthread -lpthreads -lc_r; do
+    LIBS="$apr_ptc_libs $lib"
+
+if test "$cross_compiling" = yes; then :
+  apr_p_t_r=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <pthread.h>
+#include <stddef.h>
+
+void *thread_routine(void *data) {
+    return data;
+}
+
+int main() {
+    pthread_t thd;
+    pthread_mutexattr_t mattr;
+    pthread_once_t once_init = PTHREAD_ONCE_INIT;
+    int data = 1;
+    pthread_mutexattr_init(&mattr);
+    return pthread_create(&thd, NULL, thread_routine, &data);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_p_t_r=yes
+else
+  apr_p_t_r=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+if test $apr_p_t_r = yes; then
+
+      apr_cv_pthreads_lib=$lib
+      break
+
+fi
+
+
+  done
+  LIBS=$apr_ptc_libs
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_pthreads_lib" >&5
+$as_echo "$apr_cv_pthreads_lib" >&6; }
+
+if test -n "$apr_cv_pthreads_lib"; then
+   pthreads_working=yes
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"$apr_cv_pthreads_lib\""
+    LIBS="$apr_cv_pthreads_lib"
+  else
+    apr_addto_bugger="$apr_cv_pthreads_lib"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+fi
+
+if test "$pthreads_working" = "yes"; then
+  threads_result="POSIX Threads found"
+else
+  threads_result="POSIX Threads not found"
+fi
+
+
+  if test "$GCC" = "yes"; then
+    SAVE_FL="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS -w"
+    for ac_header in pthread.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_H 1
+_ACEOF
+
+          threads="1"
+          pthreadh="1"
+          pthreadser="1"
+else
+
+          threads="0"
+          pthreadser="0"
+          pthreadh="0"
+
+  CFLAGS="$apr_pthsv_CFLAGS"
+  LIBS="$apr_pthsv_LIBS"
+
+fi
+
+done
+
+    CPPFLAGS="$SAVE_FL"
+  else
+    for ac_header in pthread.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_H 1
+_ACEOF
+
+          threads="1"
+          pthreadh="1"
+          pthreadser="1"
+else
+
+          threads="0"
+          pthreadser="0"
+          pthreadh="0"
+
+  CFLAGS="$apr_pthsv_CFLAGS"
+  LIBS="$apr_pthsv_LIBS"
+
+fi
+
+done
+
+  fi
+
+    fi
+    if test "$pthreadh" = "1"; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_getspecific takes two arguments" >&5
+$as_echo_n "checking whether pthread_getspecific takes two arguments... " >&6; }
+if ${ac_cv_pthread_getspecific_two_args+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <pthread.h>
+
+int
+main ()
+{
+
+pthread_key_t key;
+void *tmp;
+pthread_getspecific(key,&tmp);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+    ac_cv_pthread_getspecific_two_args=yes
+
+else
+
+    ac_cv_pthread_getspecific_two_args=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_getspecific_two_args" >&5
+$as_echo "$ac_cv_pthread_getspecific_two_args" >&6; }
+
+if test "$ac_cv_pthread_getspecific_two_args" = "yes"; then
+
+$as_echo "#define PTHREAD_GETSPECIFIC_TAKES_TWO_ARGS 1" >>confdefs.h
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_attr_getdetachstate takes one argument" >&5
+$as_echo_n "checking whether pthread_attr_getdetachstate takes one argument... " >&6; }
+if ${ac_cv_pthread_attr_getdetachstate_one_arg+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <pthread.h>
+
+int
+main ()
+{
+
+pthread_attr_t *attr;
+pthread_attr_getdetachstate(attr);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+    ac_cv_pthread_attr_getdetachstate_one_arg=yes
+
+else
+
+    ac_cv_pthread_attr_getdetachstate_one_arg=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_attr_getdetachstate_one_arg" >&5
+$as_echo "$ac_cv_pthread_attr_getdetachstate_one_arg" >&6; }
+
+if test "$ac_cv_pthread_attr_getdetachstate_one_arg" = "yes"; then
+
+$as_echo "#define PTHREAD_ATTR_GETDETACHSTATE_TAKES_ONE_ARG 1" >>confdefs.h
+
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recursive mutex support" >&5
+$as_echo_n "checking for recursive mutex support... " >&6; }
+if ${apr_cv_mutex_recursive+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_mutex_recursive=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <pthread.h>
+#include <stdlib.h>
+
+int main() {
+    pthread_mutexattr_t attr;
+    pthread_mutex_t m;
+
+    exit (pthread_mutexattr_init(&attr)
+          || pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)
+          || pthread_mutex_init(&m, &attr));
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_mutex_recursive=yes
+else
+  apr_cv_mutex_recursive=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_mutex_recursive" >&5
+$as_echo "$apr_cv_mutex_recursive" >&6; }
+
+if test "$apr_cv_mutex_recursive" = "yes"; then
+
+$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
+
+fi
+
+        for ac_func in pthread_key_delete pthread_rwlock_init \
+                        pthread_attr_setguardsize pthread_yield
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+        if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_rwlock_t" >&5
+$as_echo_n "checking for pthread_rwlock_t... " >&6; }
+if ${apr_cv_type_rwlock_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <pthread.h>
+int
+main ()
+{
+pthread_rwlock_t *rwlock;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_type_rwlock_t=yes
+else
+  apr_cv_type_rwlock_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_type_rwlock_t" >&5
+$as_echo "$apr_cv_type_rwlock_t" >&6; }
+            if test "$apr_cv_type_rwlock_t" = "yes"; then
+
+$as_echo "#define HAVE_PTHREAD_RWLOCKS 1" >>confdefs.h
+
+            fi
+        fi
+
+        if test "$ac_cv_func_pthread_yield" = "no"; then
+                        for ac_header in sched.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default"
+if test "x$ac_cv_header_sched_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SCHED_H 1
+_ACEOF
+
+fi
+
+done
+
+            for ac_func in sched_yield
+do :
+  ac_fn_c_check_func "$LINENO" "sched_yield" "ac_cv_func_sched_yield"
+if test "x$ac_cv_func_sched_yield" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SCHED_YIELD 1
+_ACEOF
+
+fi
+done
+
+        fi
+    fi
+fi
+
+ac_cv_define_READDIR_IS_THREAD_SAFE=no
+ac_cv_define_GETHOSTBYNAME_IS_THREAD_SAFE=no
+ac_cv_define_GETHOSTBYADDR_IS_THREAD_SAFE=no
+ac_cv_define_GETSERVBYNAME_IS_THREAD_SAFE=no
+if test "$threads" = "1"; then
+    echo "APR will use threads"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readdir in -lc_r" >&5
+$as_echo_n "checking for readdir in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_readdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readdir ();
+int
+main ()
+{
+return readdir ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_r_readdir=yes
+else
+  ac_cv_lib_c_r_readdir=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_readdir" >&5
+$as_echo "$ac_cv_lib_c_r_readdir" >&6; }
+if test "x$ac_cv_lib_c_r_readdir" = xyes; then :
+
+$as_echo "#define READDIR_IS_THREAD_SAFE 1" >>confdefs.h
+
+fi
+
+    if test "x$apr_gethostbyname_is_thread_safe" = "x"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lc_r" >&5
+$as_echo_n "checking for gethostbyname in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_r_gethostbyname=yes
+else
+  ac_cv_lib_c_r_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_gethostbyname" >&5
+$as_echo "$ac_cv_lib_c_r_gethostbyname" >&6; }
+if test "x$ac_cv_lib_c_r_gethostbyname" = xyes; then :
+  apr_gethostbyname_is_thread_safe=yes
+fi
+
+    fi
+    if test "$apr_gethostbyname_is_thread_safe" = "yes"; then
+
+$as_echo "#define GETHOSTBYNAME_IS_THREAD_SAFE 1" >>confdefs.h
+
+    fi
+    if test "x$apr_gethostbyaddr_is_thread_safe" = "x"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr in -lc_r" >&5
+$as_echo_n "checking for gethostbyaddr in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_gethostbyaddr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyaddr ();
+int
+main ()
+{
+return gethostbyaddr ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_r_gethostbyaddr=yes
+else
+  ac_cv_lib_c_r_gethostbyaddr=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_gethostbyaddr" >&5
+$as_echo "$ac_cv_lib_c_r_gethostbyaddr" >&6; }
+if test "x$ac_cv_lib_c_r_gethostbyaddr" = xyes; then :
+  apr_gethostbyaddr_is_thread_safe=yes
+fi
+
+    fi
+    if test "$apr_gethostbyaddr_is_thread_safe" = "yes"; then
+
+$as_echo "#define GETHOSTBYADDR_IS_THREAD_SAFE 1" >>confdefs.h
+
+    fi
+    if test "x$apr_getservbyname_is_thread_safe" = "x"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getservbyname in -lc_r" >&5
+$as_echo_n "checking for getservbyname in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_getservbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getservbyname ();
+int
+main ()
+{
+return getservbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_r_getservbyname=yes
+else
+  ac_cv_lib_c_r_getservbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_getservbyname" >&5
+$as_echo "$ac_cv_lib_c_r_getservbyname" >&6; }
+if test "x$ac_cv_lib_c_r_getservbyname" = xyes; then :
+  apr_getservbyname_is_thread_safe=yes
+fi
+
+    fi
+    if test "$apr_getservbyname_is_thread_safe" = "yes"; then
+
+$as_echo "#define GETSERVBYNAME_IS_THREAD_SAFE 1" >>confdefs.h
+
+    fi
+    for ac_func in gethostbyname_r gethostbyaddr_r getservbyname_r
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+else
+    echo "APR will be non-threaded"
+fi
+
+
+# Check whether --with-efence was given.
+if test "${with_efence+set}" = set; then :
+  withval=$with_efence;  apr_efence_dir="$withval"
+    if test "$apr_efence_dir" != "yes"; then
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"-L$apr_efence_dir/lib\""
+    LDFLAGS="-L$apr_efence_dir/lib"
+  else
+    apr_addto_bugger="-L$apr_efence_dir/lib"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+      if test "x$apr_platform_runtime_link_flag" != "x"; then
+
+  if test "x$LDFLAGS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LDFLAGS to \"$apr_platform_runtime_link_flag$apr_efence_dir/lib\""
+    LDFLAGS="$apr_platform_runtime_link_flag$apr_efence_dir/lib"
+  else
+    apr_addto_bugger="$apr_platform_runtime_link_flag$apr_efence_dir/lib"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LDFLAGS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LDFLAGS"
+        LDFLAGS="$LDFLAGS $i"
+      fi
+    done
+  fi
+
+      fi
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for malloc in -lefence" >&5
+$as_echo_n "checking for malloc in -lefence... " >&6; }
+if ${ac_cv_lib_efence_malloc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lefence  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char malloc ();
+int
+main ()
+{
+return malloc ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_efence_malloc=yes
+else
+  ac_cv_lib_efence_malloc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_efence_malloc" >&5
+$as_echo "$ac_cv_lib_efence_malloc" >&6; }
+if test "x$ac_cv_lib_efence_malloc" = xyes; then :
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-lefence\""
+    LIBS="-lefence"
+  else
+    apr_addto_bugger="-lefence"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+else
+   as_fn_error $? "Electric Fence requested but not detected" "$LINENO" 5
+fi
+
+
+fi
+
+
+for ac_func in sigsuspend
+do :
+  ac_fn_c_check_func "$LINENO" "sigsuspend" "ac_cv_func_sigsuspend"
+if test "x$ac_cv_func_sigsuspend" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGSUSPEND 1
+_ACEOF
+  have_sigsuspend="1"
+else
+   have_sigsuspend="0"
+fi
+done
+
+for ac_func in sigwait
+do :
+  ac_fn_c_check_func "$LINENO" "sigwait" "ac_cv_func_sigwait"
+if test "x$ac_cv_func_sigwait" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGWAIT 1
+_ACEOF
+  have_sigwait="1"
+else
+   have_sigwait="0"
+fi
+done
+
+case $host in
+    *alpha*-dec-osf* )
+        have_sigwait="1"
+        ;;
+esac
+
+
+
+
+
+for ac_func in poll kqueue port_create
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+# Check for the Linux epoll interface; epoll* may be available in libc
+# but return ENOSYS on a pre-2.6 kernel, so do a run-time check.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll support" >&5
+$as_echo_n "checking for epoll support... " >&6; }
+if ${apr_cv_epoll+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_epoll=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/epoll.h>
+#include <unistd.h>
+
+int main()
+{
+    return epoll_create(5) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_epoll=yes
+else
+  apr_cv_epoll=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_epoll" >&5
+$as_echo "$apr_cv_epoll" >&6; }
+
+if test "$apr_cv_epoll" = "yes"; then
+
+$as_echo "#define HAVE_EPOLL 1" >>confdefs.h
+
+fi
+
+# test for epoll_create1
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll_create1 support" >&5
+$as_echo_n "checking for epoll_create1 support... " >&6; }
+if ${apr_cv_epoll_create1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_epoll_create1=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/epoll.h>
+#include <unistd.h>
+
+int main()
+{
+    return epoll_create1(0) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_epoll_create1=yes
+else
+  apr_cv_epoll_create1=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_epoll_create1" >&5
+$as_echo "$apr_cv_epoll_create1" >&6; }
+
+if test "$apr_cv_epoll_create1" = "yes"; then
+
+$as_echo "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h
+
+fi
+
+# test for dup3
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dup3 support" >&5
+$as_echo_n "checking for dup3 support... " >&6; }
+if ${apr_cv_dup3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_dup3=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <unistd.h>
+
+int main()
+{
+    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_dup3=yes
+else
+  apr_cv_dup3=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dup3" >&5
+$as_echo "$apr_cv_dup3" >&6; }
+
+if test "$apr_cv_dup3" = "yes"; then
+
+$as_echo "#define HAVE_DUP3 1" >>confdefs.h
+
+fi
+
+# Test for accept4().  Create a non-blocking socket, bind it to
+# an unspecified port & address (kernel picks), and attempt to
+# call accept4() on it.  If the syscall is wired up (i.e. the
+# kernel is new enough), it should return EAGAIN.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for accept4 support" >&5
+$as_echo_n "checking for accept4 support... " >&6; }
+if ${apr_cv_accept4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_accept4=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+int main(int argc, char **argv)
+{
+    int fd, flags;
+    struct sockaddr_in sin;
+
+    if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+        return 1;
+    flags = fcntl(fd, F_GETFL);
+    if (flags == -1 || fcntl(fd, F_SETFL, flags|O_NONBLOCK) == -1)
+        return 5;
+
+    memset(&sin, 0, sizeof sin);
+    sin.sin_family = AF_INET;
+
+    if (bind(fd, (struct sockaddr *) &sin, sizeof sin) == -1)
+        return 2;
+
+    if (listen(fd, 5) == -1)
+        return 3;
+
+    if (accept4(fd, NULL, 0, SOCK_NONBLOCK) == 0
+        || errno == EAGAIN || errno == EWOULDBLOCK)
+        return 0;
+
+    return 4;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_accept4=yes
+else
+  apr_cv_accept4=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_accept4" >&5
+$as_echo "$apr_cv_accept4" >&6; }
+
+if test "$apr_cv_accept4" = "yes"; then
+
+$as_echo "#define HAVE_ACCEPT4 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOCK_CLOEXEC support" >&5
+$as_echo_n "checking for SOCK_CLOEXEC support... " >&6; }
+if ${apr_cv_sock_cloexec+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_sock_cloexec=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int main()
+{
+    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_sock_cloexec=yes
+else
+  apr_cv_sock_cloexec=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_sock_cloexec" >&5
+$as_echo "$apr_cv_sock_cloexec" >&6; }
+
+if test "$apr_cv_sock_cloexec" = "yes"; then
+
+$as_echo "#define HAVE_SOCK_CLOEXEC 1" >>confdefs.h
+
+fi
+
+for ac_func in fdatasync
+do :
+  ac_fn_c_check_func "$LINENO" "fdatasync" "ac_cv_func_fdatasync"
+if test "x$ac_cv_func_fdatasync" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FDATASYNC 1
+_ACEOF
+
+fi
+done
+
+
+# test for epoll_create1
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll_create1 support" >&5
+$as_echo_n "checking for epoll_create1 support... " >&6; }
+if ${apr_cv_epoll_create1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_epoll_create1=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/epoll.h>
+#include <unistd.h>
+
+int main()
+{
+    return epoll_create1(0) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_epoll_create1=yes
+else
+  apr_cv_epoll_create1=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_epoll_create1" >&5
+$as_echo "$apr_cv_epoll_create1" >&6; }
+
+if test "$apr_cv_epoll_create1" = "yes"; then
+
+$as_echo "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h
+
+fi
+
+# Check for z/OS async i/o support.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for asio -> message queue support" >&5
+$as_echo_n "checking for asio -> message queue support... " >&6; }
+if ${apr_cv_aio_msgq+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_aio_msgq=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _AIO_OS390
+#include <aio.h>
+
+int main()
+{
+    struct aiocb a;
+
+    a.aio_notifytype = AIO_MSGQ;  /* use IPC message queue for notification */
+
+    return aio_cancel(2, NULL) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_aio_msgq=yes
+else
+  apr_cv_aio_msgq=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_aio_msgq" >&5
+$as_echo "$apr_cv_aio_msgq" >&6; }
+
+if test "$apr_cv_aio_msgq" = "yes"; then
+
+$as_echo "#define HAVE_AIO_MSGQ 1" >>confdefs.h
+
+fi
+
+# test for dup3
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dup3 support" >&5
+$as_echo_n "checking for dup3 support... " >&6; }
+if ${apr_cv_dup3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_dup3=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <unistd.h>
+
+int main()
+{
+    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_dup3=yes
+else
+  apr_cv_dup3=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dup3" >&5
+$as_echo "$apr_cv_dup3" >&6; }
+
+if test "$apr_cv_dup3" = "yes"; then
+
+$as_echo "#define HAVE_DUP3 1" >>confdefs.h
+
+fi
+
+# test for accept4
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for accept4 support" >&5
+$as_echo_n "checking for accept4 support... " >&6; }
+if ${apr_cv_accept4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_accept4=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <signal.h>
+#include <errno.h>
+
+#define A4_SOCK "./apr_accept4_test_socket"
+
+int main()
+{
+    pid_t pid;
+    int fd;
+    struct sockaddr_un loc, rem;
+    socklen_t rem_sz;
+
+    if ((pid = fork())) {
+        int status;
+
+        unlink(A4_SOCK);
+
+        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
+            goto cleanup_failure2;
+
+        loc.sun_family = AF_UNIX;
+        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
+
+        if (bind(fd, (struct sockaddr *) &loc,
+                 sizeof(struct sockaddr_un)) == -1)
+            goto cleanup_failure;
+
+        if (listen(fd, 5) == -1)
+            goto cleanup_failure;
+
+        rem_sz = sizeof(struct sockaddr_un);
+        if (accept4(fd, (struct sockaddr *) &rem, &rem_sz, 0) == -1) {
+            goto cleanup_failure;
+        }
+        else {
+            close(fd);
+            waitpid(pid, &status, 0);
+            unlink(A4_SOCK);
+            return 0;
+        }
+
+cleanup_failure:
+        close(fd);
+cleanup_failure2:
+        kill(pid, SIGKILL);
+        waitpid(pid, &status, 0);
+        unlink(A4_SOCK);
+        return 1;
+    }
+    else {
+        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
+            return 1; /* this will be bad: we'll hang */
+
+        loc.sun_family = AF_UNIX;
+        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
+
+        while(connect(fd, (struct sockaddr *) &loc,
+                      sizeof(struct sockaddr_un)) == -1 &&
+              (errno==ENOENT || errno==ECONNREFUSED))
+            ;
+
+        close(fd);
+        return 0;
+    }
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_accept4=yes
+else
+  apr_cv_accept4=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_accept4" >&5
+$as_echo "$apr_cv_accept4" >&6; }
+
+if test "$apr_cv_accept4" = "yes"; then
+
+$as_echo "#define HAVE_ACCEPT4 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOCK_CLOEXEC support" >&5
+$as_echo_n "checking for SOCK_CLOEXEC support... " >&6; }
+if ${apr_cv_sock_cloexec+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  apr_cv_sock_cloexec=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int main()
+{
+    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_sock_cloexec=yes
+else
+  apr_cv_sock_cloexec=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_sock_cloexec" >&5
+$as_echo "$apr_cv_sock_cloexec" >&6; }
+
+if test "$apr_cv_sock_cloexec" = "yes"; then
+
+$as_echo "#define HAVE_SOCK_CLOEXEC 1" >>confdefs.h
+
+fi
+
+for ac_func in getpwnam_r getpwuid_r getgrnam_r getgrgid_r
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+echo "${nl}Checking for Shared Memory Support..."
+
+# The real-time POSIX extensions (e.g. shm_*, sem_*) may only
+# be available if linking against librt.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5
+$as_echo_n "checking for library containing shm_open... " >&6; }
+if ${ac_cv_search_shm_open+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shm_open ();
+int
+main ()
+{
+return shm_open ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_shm_open=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_shm_open+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_shm_open+:} false; then :
+
+else
+  ac_cv_search_shm_open=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5
+$as_echo "$ac_cv_search_shm_open" >&6; }
+ac_res=$ac_cv_search_shm_open
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+case $host in
+ *-sysv*)
+   ac_includes_default="$ac_includes_default
+#if HAVE_SYS_MUTEX_H /* needed to define lock_t for sys/shm.h */
+# include <sys/mutex.h>
+#endif";;
+esac
+
+for ac_header in sys/types.h sys/mman.h sys/ipc.h sys/mutex.h sys/shm.h sys/file.h kernel/OS.h os2.h windows.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_func in mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \
+                create_area
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON in sys/mman.h" >&5
+$as_echo_n "checking for MAP_ANON in sys/mman.h... " >&6; }
+if ${ac_cv_define_MAP_ANON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/mman.h>
+#ifdef MAP_ANON
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_MAP_ANON=yes
+else
+  ac_cv_define_MAP_ANON=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_MAP_ANON" >&5
+$as_echo "$ac_cv_define_MAP_ANON" >&6; }
+  if test "$ac_cv_define_MAP_ANON" = "yes"; then
+
+$as_echo "#define HAVE_MAP_ANON 1" >>confdefs.h
+
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/zero" >&5
+$as_echo_n "checking for /dev/zero... " >&6; }
+if ${ac_cv_file__dev_zero+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/dev/zero"; then
+  ac_cv_file__dev_zero=yes
+else
+  ac_cv_file__dev_zero=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_zero" >&5
+$as_echo "$ac_cv_file__dev_zero" >&6; }
+if test "x$ac_cv_file__dev_zero" = xyes; then :
+
+fi
+
+
+# Not all systems can mmap /dev/zero (such as HP-UX).  Check for that.
+if test "$ac_cv_func_mmap" = "yes" &&
+   test "$ac_cv_file__dev_zero" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mmap that can map /dev/zero" >&5
+$as_echo_n "checking for mmap that can map /dev/zero... " >&6; }
+    if test "$cross_compiling" = yes; then :
+  ac_cv_file__dev_zero=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+    int main()
+    {
+        int fd;
+        void *m;
+        fd = open("/dev/zero", O_RDWR);
+        if (fd < 0) {
+            return 1;
+        }
+        m = mmap(0, sizeof(void*), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+        if (m == (void *)-1) {  /* aka MAP_FAILED */
+            return 2;
+        }
+        if (munmap(m, sizeof(void*)) < 0) {
+            return 3;
+        }
+        return 0;
+    }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_file__dev_zero=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_zero" >&5
+$as_echo "$ac_cv_file__dev_zero" >&6; }
+fi
+
+# Now we determine which one is our anonymous shmem preference.
+haveshmgetanon="0"
+havemmapzero="0"
+havemmapanon="0"
+ac_decision_item='anonymous shared memory allocation method'
+ac_decision_msg='FAILED'
+ac_decision=''
+
+ac_rc=yes
+for ac_spec in header:sys/ipc.h header:sys/shm.h header:sys/file.h              func:shmget func:shmat func:shmdt func:shmctl; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    haveshmgetanon="1"
+
+ac_decision='USE_SHMEM_SHMGET_ANON'
+ac_decision_msg='SysV IPC shmget()'
+ac_decision_USE_SHMEM_SHMGET_ANON=yes
+ac_decision_USE_SHMEM_SHMGET_ANON_msg='SysV IPC shmget()'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:sys/mman.h func:mmap func:munmap file:/dev/zero; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havemmapzero="1"
+
+ac_decision='USE_SHMEM_MMAP_ZERO'
+ac_decision_msg='SVR4-style mmap() on /dev/zero'
+ac_decision_USE_SHMEM_MMAP_ZERO=yes
+ac_decision_USE_SHMEM_MMAP_ZERO_msg='SVR4-style mmap() on /dev/zero'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:sys/mman.h func:mmap func:munmap define:MAP_ANON; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havemmapanon="1"
+
+ac_decision='USE_SHMEM_MMAP_ANON'
+ac_decision_msg='4.4BSD-style mmap() via MAP_ANON'
+ac_decision_USE_SHMEM_MMAP_ANON=yes
+ac_decision_USE_SHMEM_MMAP_ANON_msg='4.4BSD-style mmap() via MAP_ANON'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:os2.h; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    haveos2shm="1"
+
+ac_decision='USE_SHMEM_OS2_ANON'
+ac_decision_msg='OS/2 DosAllocSharedMem()'
+ac_decision_USE_SHMEM_OS2_ANON=yes
+ac_decision_USE_SHMEM_OS2_ANON_msg='OS/2 DosAllocSharedMem()'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:kernel/OS.h func:create_area; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havebeosshm="1"
+
+ac_decision='USE_SHMEM_BEOS_ANON'
+ac_decision_msg='BeOS areas'
+ac_decision_USE_SHMEM_BEOS_ANON=yes
+ac_decision_USE_SHMEM_BEOS_ANON_msg='BeOS areas'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:windows.h func:CreateFileMapping; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havewin32shm="1"
+
+ac_decision='USE_SHMEM_WIN32_ANON'
+ac_decision_msg='Windows CreateFileMapping()'
+ac_decision_USE_SHMEM_WIN32_ANON=yes
+ac_decision_USE_SHMEM_WIN32_ANON_msg='Windows CreateFileMapping()'
+
+else
+    :
+
+fi
+
+case $host in
+    *linux* )
+        # Linux has problems with MM_SHMT_MMANON even though it reports
+        # that it has it.
+        # FIXME - find exact 2.3 version that MMANON was fixed in.  It is
+        # confirmed fixed in 2.4 series.
+        if test $os_pre24linux -eq 1; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling anon mmap() support for Linux pre-2.4" >&5
+$as_echo "$as_me: WARNING: Disabling anon mmap() support for Linux pre-2.4" >&2;}
+                ac_decision=''
+    for ac_item in USE_SHMEM_MMAP_ZERO USE_SHMEM_SHMGET_ANON; do
+         eval "ac_decision_this=\$ac_decision_${ac_item}"
+         if test ".$ac_decision_this" = .yes; then
+             ac_decision=$ac_item
+             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
+         fi
+    done
+
+        fi
+        ;;
+    *hpux11* )
+            ac_decision=''
+    for ac_item in USE_SHMEM_SHMGET_ANON; do
+         eval "ac_decision_this=\$ac_decision_${ac_item}"
+         if test ".$ac_decision_this" = .yes; then
+             ac_decision=$ac_item
+             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
+         fi
+    done
+
+        ;;
+esac
+if test ".$ac_decision" = .; then
+    echo "$0:Error: decision on $ac_decision_item failed" 1>&2
+    exit 1
+else
+    if test ".$ac_decision_msg" = .; then
+        ac_decision_msg="$ac_decision"
+    fi
+    cat >>confdefs.h <<_ACEOF
+#define ${ac_decision_item} 1
+_ACEOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: decision on $ac_decision_item... $ac_decision_msg" >&5
+$as_echo "decision on $ac_decision_item... $ac_decision_msg" >&6; }
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define $ac_decision 1
+_ACEOF
+
+
+useshmgetanon="0"
+usemmapzero="0"
+usemmapanon="0"
+
+case $ac_decision in
+    USE_SHMEM_SHMGET_ANON )
+        useshmgetanon="1"
+        ;;
+    USE_SHMEM_MMAP_ZERO )
+        usemmapzero="1"
+        ;;
+    USE_SHMEM_MMAP_ANON )
+        usemmapanon="1"
+        ;;
+esac
+
+
+
+
+
+
+
+
+# Now we determine which one is our name-based shmem preference.
+havemmaptmp="0"
+havemmapshm="0"
+haveshmget="0"
+havebeosarea="0"
+haveos2shm="0"
+havewin32shm="0"
+ac_decision_item='namebased memory allocation method'
+ac_decision_msg='FAILED'
+ac_decision=''
+
+ac_rc=yes
+for ac_spec in header:sys/mman.h func:mmap func:munmap; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havemmaptmp="1"
+
+ac_decision='USE_SHMEM_MMAP_TMP'
+ac_decision_msg='Classical mmap() on temporary file'
+ac_decision_USE_SHMEM_MMAP_TMP=yes
+ac_decision_USE_SHMEM_MMAP_TMP_msg='Classical mmap() on temporary file'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:sys/mman.h func:mmap func:munmap func:shm_open              func:shm_unlink; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havemmapshm="1"
+
+ac_decision='USE_SHMEM_MMAP_SHM'
+ac_decision_msg='mmap() via POSIX.1 shm_open() on temporary file'
+ac_decision_USE_SHMEM_MMAP_SHM=yes
+ac_decision_USE_SHMEM_MMAP_SHM_msg='mmap() via POSIX.1 shm_open() on temporary file'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:sys/ipc.h header:sys/shm.h header:sys/file.h              func:shmget func:shmat func:shmdt func:shmctl; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    haveshmget="1"
+
+ac_decision='USE_SHMEM_SHMGET'
+ac_decision_msg='SysV IPC shmget()'
+ac_decision_USE_SHMEM_SHMGET=yes
+ac_decision_USE_SHMEM_SHMGET_msg='SysV IPC shmget()'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:kernel/OS.h func:create_area; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havebeosshm="1"
+
+ac_decision='USE_SHMEM_BEOS'
+ac_decision_msg='BeOS areas'
+ac_decision_USE_SHMEM_BEOS=yes
+ac_decision_USE_SHMEM_BEOS_msg='BeOS areas'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:os2.h; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    haveos2shm="1"
+
+ac_decision='USE_SHMEM_OS2'
+ac_decision_msg='OS/2 DosAllocSharedMem()'
+ac_decision_USE_SHMEM_OS2=yes
+ac_decision_USE_SHMEM_OS2_msg='OS/2 DosAllocSharedMem()'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:windows.h; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    havewin32shm="1"
+
+ac_decision='USE_SHMEM_WIN32'
+ac_decision_msg='Windows shared memory'
+ac_decision_USE_SHMEM_WIN32=yes
+ac_decision_USE_SHMEM_WIN32_msg='Windows shared memory'
+
+else
+    :
+
+fi
+
+# Check whether --enable-posix-shm was given.
+if test "${enable_posix_shm+set}" = set; then :
+  enableval=$enable_posix_shm;
+if test "$havemmapshm" = "1"; then
+      ac_decision=''
+    for ac_item in USE_SHMEM_MMAP_SHM; do
+         eval "ac_decision_this=\$ac_decision_${ac_item}"
+         if test ".$ac_decision_this" = .yes; then
+             ac_decision=$ac_item
+             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
+         fi
+    done
+
+fi
+
+fi
+
+case $host in
+    *linux* )
+        # Linux pre-2.4 had problems with MM_SHMT_MMANON even though
+        # it reports that it has it.
+        if test $os_pre24linux -eq 1; then
+                ac_decision=''
+    for ac_item in USE_SHMEM_MMAP_TMP USE_SHMEM_MMAP_SHM                                   USE_SHMEM_SHMGET; do
+         eval "ac_decision_this=\$ac_decision_${ac_item}"
+         if test ".$ac_decision_this" = .yes; then
+             ac_decision=$ac_item
+             eval "ac_decision_msg=\$ac_decision_${ac_item}_msg"
+         fi
+    done
+
+        fi
+        ;;
+esac
+if test ".$ac_decision" = .; then
+    echo "$0:Error: decision on $ac_decision_item failed" 1>&2
+    exit 1
+else
+    if test ".$ac_decision_msg" = .; then
+        ac_decision_msg="$ac_decision"
+    fi
+    cat >>confdefs.h <<_ACEOF
+#define ${ac_decision_item} 1
+_ACEOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: decision on $ac_decision_item... $ac_decision_msg" >&5
+$as_echo "decision on $ac_decision_item... $ac_decision_msg" >&6; }
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define $ac_decision 1
+_ACEOF
+
+
+usemmaptmp="0"
+usemmapshm="0"
+useshmget="0"
+usebeosarea="0"
+useos2shm="0"
+usewin32shm="0"
+
+case $ac_decision in
+    USE_SHMEM_MMAP_TMP )
+        usemmaptmp="1"
+        ;;
+    USE_SHMEM_MMAP_SHM )
+        usemmapshm="1"
+        ;;
+    USE_SHMEM_SHMGET )
+        useshmget="1"
+        ;;
+    USE_SHMEM_BEOS )
+        usebeosarea="1"
+        ;;
+    USE_SHMEM_OS2 )
+        useos2shm="1"
+        ;;
+    USE_SHMEM_WIN32 )
+        usewin32shm="1"
+        ;;
+esac
+
+# Do we have any shared memory support?
+if test "$usemmaptmp$usemmapshm$usemmapzero$useshmget$usemmapanon$usebeosarea$useos2shm$usewin32shm" = "00000000"; then
+  sharedmem="0"
+else
+  sharedmem="1"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_working_alloca_h=yes
+else
+  ac_cv_working_alloca_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca (size_t);
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+				    if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_func_alloca_works=yes
+else
+  ac_cv_func_alloca_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then :
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_c_stack_direction=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction (int *addr, int depth)
+{
+  int dir, dummy = 0;
+  if (! addr)
+    addr = &dummy;
+  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+  return dir + dummy;
+}
+
+int
+main (int argc, char **argv)
+{
+  return find_stack_direction (0, argc + !argv + 20) < 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_stack_direction=1
+else
+  ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+for ac_func in calloc setsid isinf isnan \
+                getenv putenv setenv unsetenv \
+                writev getifaddrs utime utimes
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+for ac_func in setrlimit
+do :
+  ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit"
+if test "x$ac_cv_func_setrlimit" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SETRLIMIT 1
+_ACEOF
+  have_setrlimit="1"
+else
+   have_setrlimit="0"
+fi
+done
+
+for ac_func in getrlimit
+do :
+  ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit"
+if test "x$ac_cv_func_getrlimit" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETRLIMIT 1
+_ACEOF
+  have_getrlimit="1"
+else
+   have_getrlimit="0"
+fi
+done
+
+sendfile="0"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfilev in -lsendfile" >&5
+$as_echo_n "checking for sendfilev in -lsendfile... " >&6; }
+if ${ac_cv_lib_sendfile_sendfilev+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsendfile  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sendfilev ();
+int
+main ()
+{
+return sendfilev ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_sendfile_sendfilev=yes
+else
+  ac_cv_lib_sendfile_sendfilev=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sendfile_sendfilev" >&5
+$as_echo "$ac_cv_lib_sendfile_sendfilev" >&6; }
+if test "x$ac_cv_lib_sendfile_sendfilev" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSENDFILE 1
+_ACEOF
+
+  LIBS="-lsendfile $LIBS"
+
+fi
+
+for ac_func in sendfile send_file sendfilev
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+  sendfile="1"
+fi
+done
+
+
+
+
+# Check whether --with-sendfile was given.
+if test "${with_sendfile+set}" = set; then :
+  withval=$with_sendfile;  if test "$withval" = "yes"; then
+        sendfile="1"
+    else
+        sendfile="0"
+    fi
+else
+
+    orig_sendfile=$sendfile
+    case $host in
+        *freebsd*)
+            # FreeBSD < 4.2 has issues with threads+sendfile
+            if test $os_version -le "401999"; then
+                if test "$threads" = "1"; then
+                    sendfile="0"
+                fi
+            fi
+            ;;
+        *alpha*-dec-osf* )
+            sendfile="0"
+            ;;
+        s390-*-linux-gnu)
+            # disable sendfile support for 2.2 on S/390
+            if test $os_pre24linux -eq 1; then
+                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabled sendfile support for Linux 2.2 on S/390" >&5
+$as_echo "$as_me: WARNING: Disabled sendfile support for Linux 2.2 on S/390" >&2;}
+                sendfile="0"
+            fi
+            ;;
+        *aix*)
+            # compiler-independent check for 64-bit build
+            # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5
+$as_echo_n "checking size of void*... " >&6; }
+if ${ac_cv_sizeof_voidp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_voidp" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (void*)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_voidp=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5
+$as_echo "$ac_cv_sizeof_voidp" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
+_ACEOF
+
+
+            if test "x$ac_cv_sizeof_voidp" = "x8"; then
+                # sendfile not working for 64-bit build
+                sendfile="0"
+            fi
+            ;;
+    esac
+    if test "$orig_sendfile" != "$sendfile"; then
+      echo "sendfile support disabled to avoid system problem"
+    fi
+fi
+
+
+
+for ac_func in sigaction
+do :
+  ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
+if test "x$ac_cv_func_sigaction" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGACTION 1
+_ACEOF
+  have_sigaction="1"
+else
+   have_sigaction="0"
+fi
+done
+
+ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h.  */
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+"
+if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SYS_SIGLIST $ac_have_decl
+_ACEOF
+
+
+
+for ac_func in fork
+do :
+  ac_fn_c_check_func "$LINENO" "fork" "ac_cv_func_fork"
+if test "x$ac_cv_func_fork" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FORK 1
+_ACEOF
+  fork="1"
+else
+   fork="0"
+fi
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_addr" >&5
+$as_echo_n "checking for inet_addr... " >&6; }
+if ${ac_cv_func_inet_addr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+int
+main ()
+{
+
+inet_addr("127.0.0.1");
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+    ac_cv_func_inet_addr=yes
+
+else
+
+    ac_cv_func_inet_addr=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_addr" >&5
+$as_echo "$ac_cv_func_inet_addr" >&6; }
+
+if test "$ac_cv_func_inet_addr" = "yes"; then
+  have_inet_addr=1
+else
+  have_inet_addr=0
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_network" >&5
+$as_echo_n "checking for inet_network... " >&6; }
+if ${ac_cv_func_inet_network+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+int
+main ()
+{
+
+inet_network("127.0.0.1");
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+    ac_cv_func_inet_network=yes
+
+else
+
+    ac_cv_func_inet_network=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_network" >&5
+$as_echo "$ac_cv_func_inet_network" >&6; }
+
+if test "$ac_cv_func_inet_network" = "yes"; then
+  have_inet_network=1
+else
+  have_inet_network=0
+fi
+
+
+ac_fn_c_check_func "$LINENO" "_getch" "ac_cv_func__getch"
+if test "x$ac_cv_func__getch" = xyes; then :
+
+fi
+
+for ac_func in strerror_r
+do :
+  ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
+if test "x$ac_cv_func_strerror_r" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRERROR_R 1
+_ACEOF
+  strerror_r="1"
+else
+   strerror_r="0"
+fi
+done
+
+if test "$strerror_r" = "1"; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of return code from strerror_r" >&5
+$as_echo_n "checking for type of return code from strerror_r... " >&6; }
+if test "$cross_compiling" = yes; then :
+
+    ac_cv_strerror_r_rc_int=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+main()
+{
+  char buf[1024];
+  if (strerror_r(ERANGE, buf, sizeof buf) < 1) {
+    exit(0);
+  }
+  else {
+    exit(1);
+  }
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+    ac_cv_strerror_r_rc_int=yes
+else
+
+    ac_cv_strerror_r_rc_int=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+if test "x$ac_cv_strerror_r_rc_int" = xyes; then
+
+$as_echo "#define STRERROR_R_RC_INT 1" >>confdefs.h
+
+  msg="int"
+else
+  msg="pointer"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $msg" >&5
+$as_echo "$msg" >&6; }
+
+fi
+for ac_func in mmap
+do :
+  ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+if test "x$ac_cv_func_mmap" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MMAP 1
+_ACEOF
+  mmap="1"
+else
+   mmap="0"
+fi
+done
+
+if test "$native_mmap_emul" = "1"; then
+    mmap="1"
+fi
+for ac_func in memmove
+do :
+  ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove"
+if test "x$ac_cv_func_memmove" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MEMMOVE 1
+_ACEOF
+  have_memmove="1"
+else
+  have_memmove="0"
+fi
+done
+
+for ac_func in getpass getpassphrase gmtime_r localtime_r
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+case $host in
+    *-hp-hpux*)
+                ;;
+    *)
+        for ac_func in mkstemp
+do :
+  ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp"
+if test "x$ac_cv_func_mkstemp" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MKSTEMP 1
+_ACEOF
+
+fi
+done
+
+        ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sigwait takes one argument" >&5
+$as_echo_n "checking whether sigwait takes one argument... " >&6; }
+if ${ac_cv_sigwait_one_arg+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if defined(__NETBSD__) || defined(DARWIN)
+    /* When using the unproven-pthreads package, we need to pull in this
+     * header to get a prototype for sigwait().  Else things will fail later
+     * on.  XXX Should probably be fixed in the unproven-pthreads package.
+     * Darwin is declaring sigwait() in the wrong place as well.
+     */
+#include <pthread.h>
+#endif
+#include <signal.h>
+
+int
+main ()
+{
+
+  sigset_t set;
+
+  sigwait(&set);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+  ac_cv_sigwait_one_arg=yes
+
+else
+
+  ac_cv_sigwait_one_arg=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sigwait_one_arg" >&5
+$as_echo "$ac_cv_sigwait_one_arg" >&6; }
+  if test "$ac_cv_sigwait_one_arg" = "yes"; then
+
+$as_echo "#define SIGWAIT_TAKES_ONE_ARG 1" >>confdefs.h
+
+  fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+
+
+for ac_header in ByteOrder.h		\
+    conio.h		\
+    crypt.h		\
+    ctype.h		\
+    dir.h		\
+    dirent.h		\
+    dl.h		\
+    dlfcn.h		\
+    errno.h		\
+    fcntl.h		\
+    grp.h		\
+    io.h		\
+    limits.h		\
+    mach-o/dyld.h	\
+    malloc.h		\
+    memory.h		\
+    netdb.h		\
+    osreldate.h		\
+    poll.h		\
+    process.h		\
+    pwd.h		\
+    semaphore.h		\
+    signal.h		\
+    stdarg.h		\
+    stddef.h		\
+    stdio.h		\
+    stdlib.h		\
+    string.h		\
+    strings.h		\
+    sysapi.h		\
+    sysgtime.h		\
+    termios.h		\
+    time.h		\
+    tpfeq.h		\
+    tpfio.h		\
+    unistd.h		\
+    unix.h		\
+    windows.h		\
+    winsock2.h		\
+    arpa/inet.h		\
+    kernel/OS.h		\
+    net/errno.h		\
+    netinet/in.h	\
+    netinet/sctp.h      \
+    netinet/sctp_uio.h  \
+    sys/file.h		\
+    sys/ioctl.h         \
+    sys/mman.h		\
+    sys/param.h         \
+    sys/poll.h		\
+    sys/resource.h	\
+    sys/select.h	\
+    sys/sem.h		\
+    sys/sendfile.h	\
+    sys/signal.h	\
+    sys/socket.h	\
+    sys/sockio.h	\
+    sys/stat.h          \
+    sys/sysctl.h	\
+    sys/syslimits.h	\
+    sys/time.h		\
+    sys/types.h		\
+    sys/uio.h		\
+    sys/un.h		\
+    sys/wait.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for aprt_i in ByteOrder.h		\
+    conio.h		\
+    crypt.h		\
+    ctype.h		\
+    dir.h		\
+    dirent.h		\
+    dl.h		\
+    dlfcn.h		\
+    errno.h		\
+    fcntl.h		\
+    grp.h		\
+    io.h		\
+    limits.h		\
+    mach-o/dyld.h	\
+    malloc.h		\
+    memory.h		\
+    netdb.h		\
+    osreldate.h		\
+    poll.h		\
+    process.h		\
+    pwd.h		\
+    semaphore.h		\
+    signal.h		\
+    stdarg.h		\
+    stddef.h		\
+    stdio.h		\
+    stdlib.h		\
+    string.h		\
+    strings.h		\
+    sysapi.h		\
+    sysgtime.h		\
+    termios.h		\
+    time.h		\
+    tpfeq.h		\
+    tpfio.h		\
+    unistd.h		\
+    unix.h		\
+    windows.h		\
+    winsock2.h		\
+    arpa/inet.h		\
+    kernel/OS.h		\
+    net/errno.h		\
+    netinet/in.h	\
+    netinet/sctp.h      \
+    netinet/sctp_uio.h  \
+    sys/file.h		\
+    sys/ioctl.h         \
+    sys/mman.h		\
+    sys/param.h         \
+    sys/poll.h		\
+    sys/resource.h	\
+    sys/select.h	\
+    sys/sem.h		\
+    sys/sendfile.h	\
+    sys/signal.h	\
+    sys/socket.h	\
+    sys/sockio.h	\
+    sys/stat.h          \
+    sys/sysctl.h	\
+    sys/syslimits.h	\
+    sys/time.h		\
+    sys/types.h		\
+    sys/uio.h		\
+    sys/un.h		\
+    sys/wait.h
+do
+    ac_safe=`echo "$aprt_i" | sed 'y%./+-%__p_%'`
+    aprt_2=`echo "$aprt_i" | sed -e 's%/%_%g' -e 's/\.//g' -e 's/-//g'`
+    if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+       eval "$aprt_2=1"
+    else
+       eval "$aprt_2=0"
+    fi
+done
+
+
+# IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from
+# being included by itself.  Check for <netinet/tcp.h> manually,
+# including another header file first.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for netinet/tcp.h" >&5
+$as_echo_n "checking for netinet/tcp.h... " >&6; }
+if ${apr_cv_hdr_netinet_tcp_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#include <netinet/tcp.h>
+
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  apr_cv_hdr_netinet_tcp_h=yes
+else
+  apr_cv_hdr_netinet_tcp_h=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_hdr_netinet_tcp_h" >&5
+$as_echo "$apr_cv_hdr_netinet_tcp_h" >&6; }
+if test "$apr_cv_hdr_netinet_tcp_h" = "yes"; then
+   netinet_tcph=1
+
+$as_echo "#define HAVE_NETINET_TCP_H 1" >>confdefs.h
+
+else
+   netinet_tcph=0
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Checking for h_errno in <netdb.h>
+if test "$netdbh" = "1"; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for h_errno in netdb.h" >&5
+$as_echo_n "checking for h_errno in netdb.h... " >&6; }
+  if ${ac_cv_h_errno_cppflags+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+  if test x != x; then
+    CPPFLAGS="-D $CPPFLAGS"
+  fi
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+int
+main ()
+{
+
+int h_e = h_errno;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+  if test x != x; then
+    ac_cv_h_errno_cppflags=""
+  else
+    ac_cv_h_errno_cppflags=yes
+  fi
+
+else
+
+  ac_cv_h_errno_cppflags=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test "$ac_cv_h_errno_cppflags" = "no"; then
+      ac_save="$CPPFLAGS"
+      for flag in _XOPEN_SOURCE_EXTENDED; do
+
+  if test x$flag != x; then
+    CPPFLAGS="-D$flag $CPPFLAGS"
+  fi
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+int
+main ()
+{
+
+int h_e = h_errno;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+  if test x$flag != x; then
+    ac_cv_h_errno_cppflags="$flag"
+  else
+    ac_cv_h_errno_cppflags=yes
+  fi
+
+else
+
+  ac_cv_h_errno_cppflags=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        if test "$ac_cv_h_errno_cppflags" != "no"; then
+          break
+        fi
+      done
+      CPPFLAGS="$ac_save"
+    fi
+
+fi
+
+  if test "$ac_cv_h_errno_cppflags" != "no"; then
+    if test "$ac_cv_h_errno_cppflags" != "yes"; then
+      CPPFLAGS="-D$ac_cv_h_errno_cppflags $CPPFLAGS"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, with -D$ac_cv_h_errno_cppflags" >&5
+$as_echo "yes, with -D$ac_cv_h_errno_cppflags" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_h_errno_cppflags" >&5
+$as_echo "$ac_cv_h_errno_cppflags" >&6; }
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_h_errno_cppflags" >&5
+$as_echo "$ac_cv_h_errno_cppflags" >&6; }
+  fi
+
+  if test "$ac_cv_h_errno_cflags" = "no"; then
+    as_fn_error $? "can not find h_errno in netdb.h" "$LINENO" 5
+  fi
+fi
+
+# Check whether --enable-allocator-uses-mmap was given.
+if test "${enable_allocator_uses_mmap+set}" = set; then :
+  enableval=$enable_allocator_uses_mmap;  if test "$enableval" = "yes"; then
+        ac_rc=yes
+for ac_spec in header:sys/mman.h func:mmap func:munmap define:MAP_ANON; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+
+$as_echo "#define APR_ALLOCATOR_USES_MMAP 1" >>confdefs.h
+
+else
+    :
+    as_fn_error $? "mmap()/MAP_ANON not supported" "$LINENO" 5
+
+fi
+
+    fi
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
+if test "x$ac_cv_type_off_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define off_t long int
+_ACEOF
+
+fi
+
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_ACEOF
+
+fi
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
+if ${ac_cv_type_uid_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "uid_t" >/dev/null 2>&1; then :
+  ac_cv_type_uid_t=yes
+else
+  ac_cv_type_uid_t=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+$as_echo "$ac_cv_type_uid_t" >&6; }
+if test $ac_cv_type_uid_t = no; then
+
+$as_echo "#define uid_t int" >>confdefs.h
+
+
+$as_echo "#define gid_t int" >>confdefs.h
+
+fi
+
+ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
+if test "x$ac_cv_type_ssize_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define ssize_t int
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this sort of thing.  */
+  typedef int charset[2];
+  const charset cs = { 0, 0 };
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_const=yes
+else
+  ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether setpgrp takes no argument" >&5
+$as_echo_n "checking whether setpgrp takes no argument... " >&6; }
+if ${ac_cv_func_setpgrp_void+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  as_fn_error $? "cannot check setpgrp when cross compiling" "$LINENO" 5
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+/* If this system has a BSD-style setpgrp which takes arguments,
+  setpgrp(1, 1) will fail with ESRCH and return -1, in that case
+  exit successfully. */
+  return setpgrp (1,1) != -1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_setpgrp_void=no
+else
+  ac_cv_func_setpgrp_void=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setpgrp_void" >&5
+$as_echo "$ac_cv_func_setpgrp_void" >&6; }
+if test $ac_cv_func_setpgrp_void = yes; then
+
+$as_echo "#define SETPGRP_VOID 1" >>confdefs.h
+
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5
+$as_echo_n "checking for socklen_t... " >&6; }
+if ${ac_cv_socklen_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+int
+main ()
+{
+
+socklen_t foo = (socklen_t) 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+    ac_cv_socklen_t=yes
+
+else
+
+    ac_cv_socklen_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_socklen_t" >&5
+$as_echo "$ac_cv_socklen_t" >&6; }
+
+if test "$ac_cv_socklen_t" = "yes"; then
+
+$as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h
+
+fi
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5
+$as_echo_n "checking size of void*... " >&6; }
+if ${ac_cv_sizeof_voidp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_voidp" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (void*)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_voidp=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5
+$as_echo "$ac_cv_sizeof_voidp" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
+_ACEOF
+
+
+
+if test "x$ac_cv_sizeof_voidp" != "x"; then
+    voidp_size=$ac_cv_sizeof_voidp
+else
+    as_fn_error $? "Cannot determine size of void*" "$LINENO" 5
+fi
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
+$as_echo_n "checking size of char... " >&6; }
+if ${ac_cv_sizeof_char+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_char" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (char)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_char=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
+$as_echo "$ac_cv_sizeof_char" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHAR $ac_cv_sizeof_char
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if ${ac_cv_sizeof_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (int)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_int=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+$as_echo_n "checking size of short... " >&6; }
+if ${ac_cv_sizeof_short+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_short" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (short)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_short=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+$as_echo "$ac_cv_sizeof_short" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+$as_echo_n "checking size of long long... " >&6; }
+if ${ac_cv_sizeof_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+$as_echo "$ac_cv_sizeof_long_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+_ACEOF
+
+
+
+if test "$ac_cv_sizeof_short" = "2"; then
+    short_value=short
+fi
+if test "$ac_cv_sizeof_int" = "4"; then
+    int_value=int
+fi
+# Now we need to find what apr_int64_t (sizeof == 8) will be.
+# The first match is our preference.
+if test "$ac_cv_sizeof_int" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val)'
+    uint64_literal='#define APR_UINT64_C(val) (val##U)'
+    int64_t_fmt='#define APR_INT64_T_FMT "d"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "u"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "x"'
+    int64_value="int"
+    long_value=int
+    int64_strfn="strtoi"
+elif test "$ac_cv_sizeof_long" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val##L)'
+    uint64_literal='#define APR_UINT64_C(val) (val##UL)'
+    int64_t_fmt='#define APR_INT64_T_FMT "ld"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "lu"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "lx"'
+    int64_value="long"
+    long_value=long
+    int64_strfn="strtol"
+elif test "$ac_cv_sizeof_long_long" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val##LL)'
+    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
+    # Linux, Solaris, FreeBSD all support ll with printf.
+    # BSD 4.4 originated 'q'.  Solaris is more popular and
+    # doesn't support 'q'.  Solaris wins.  Exceptions can
+    # go to the OS-dependent section.
+    int64_t_fmt='#define APR_INT64_T_FMT "lld"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "llu"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "llx"'
+    int64_value="long long"
+    long_value="long long"
+    int64_strfn="strtoll"
+elif test "$ac_cv_sizeof_longlong" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val##LL)'
+    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
+    int64_t_fmt='#define APR_INT64_T_FMT "qd"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "qu"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "qx"'
+    int64_value="__int64"
+    long_value="__int64"
+    int64_strfn="strtoll"
+else
+    # int64_literal may be overriden if your compiler thinks you have
+    # a 64-bit value but APR does not agree.
+    as_fn_error $? "could not detect a 64-bit integer type" "$LINENO" 5
+fi
+
+# If present, allow the C99 macro INT64_C to override our conversion.
+#
+# HP-UX's ANSI C compiler provides this without any includes, so we
+# will first look for INT64_C without adding stdint.h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for INT64_C" >&5
+$as_echo_n "checking for INT64_C... " >&6; }
+if ${apr_cv_define_INT64_C+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef INT64_C
+YES_IS_DEFINED
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  apr_cv_define_INT64_C=yes
+else
+
+    # Now check for INT64_C in stdint.h
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+#ifdef INT64_C
+YES_IS_DEFINED
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  apr_cv_define_INT64_C=yes
+else
+  apr_cv_define_INT64_C=no
+fi
+rm -f conftest*
+
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_define_INT64_C" >&5
+$as_echo "$apr_cv_define_INT64_C" >&6; }
+
+if test "$apr_cv_define_INT64_C" = "yes"; then
+    int64_literal='#define APR_INT64_C(val) INT64_C(val)'
+    uint64_literal='#define APR_UINT64_C(val) UINT64_C(val)'
+    stdint=1
+else
+    stdint=0
+fi
+
+if test "$ac_cv_type_size_t" = "yes"; then
+    size_t_value="size_t"
+else
+    size_t_value="apr_int32_t"
+fi
+if test "$ac_cv_type_ssize_t" = "yes"; then
+    ssize_t_value="ssize_t"
+else
+    ssize_t_value="apr_int32_t"
+fi
+if test "$ac_cv_socklen_t" = "yes"; then
+    socklen_t_value="socklen_t"
+    case $host in
+        *-hp-hpux*)
+            if test "$ac_cv_sizeof_long" = "8"; then
+                # 64-bit HP-UX requires 32-bit socklens in
+                # kernel, but user-space declarations say
+                # 64-bit (socklen_t == size_t == long).
+                # This will result in many compile warnings,
+                # but we're functionally busted otherwise.
+                socklen_t_value="int"
+            fi
+            ;;
+    esac
+else
+    socklen_t_value="int"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5
+$as_echo_n "checking size of pid_t... " >&6; }
+if ${ac_cv_sizeof_pid_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_sizeof_pid_t=8
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+#include <sys/types.h>
+#ifdef WIN32
+#define binmode "b"
+#else
+#define binmode
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w" binmode);
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(pid_t));
+  exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_sizeof_pid_t=`cat conftestval`
+else
+  ac_cv_sizeof_pid_t=0
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5
+$as_echo "$ac_cv_sizeof_pid_t" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_PID_T $ac_cv_sizeof_pid_t
+_ACEOF
+
+
+
+if test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then
+    pid_t_fmt='#define APR_PID_T_FMT "hd"'
+elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_int"; then
+    pid_t_fmt='#define APR_PID_T_FMT "d"'
+elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long"; then
+    pid_t_fmt='#define APR_PID_T_FMT "ld"'
+elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long_long"; then
+    pid_t_fmt='#define APR_PID_T_FMT APR_INT64_T_FMT'
+else
+    pid_t_fmt='#error Can not determine the proper size for pid_t'
+fi
+
+# Basically, we have tried to figure out the correct format strings
+# for APR types which vary between platforms, but we don't always get
+# it right.
+case $host in
+   s390*linux*)
+       # uniquely, the 31-bit Linux/s390 uses "unsigned long int"
+       # for size_t rather than "unsigned int":
+       size_t_fmt="lu"
+       ssize_t_fmt="ld"
+       ;;
+   *-os2*)
+       size_t_fmt="lu"
+       ;;
+   *-solaris*)
+       if test "$ac_cv_sizeof_long" = "8"; then
+         pid_t_fmt='#define APR_PID_T_FMT "d"'
+       else
+         pid_t_fmt='#define APR_PID_T_FMT "ld"'
+       fi
+       ;;
+   *aix4*|*aix5*)
+       ssize_t_fmt="ld"
+       size_t_fmt="lu"
+       ;;
+    *beos*)
+        ssize_t_fmt="ld"
+        size_t_fmt="ld"
+        ;;
+    *apple-darwin*)
+        osver=`uname -r`
+        case $osver in
+           [0-7].*)
+              ssize_t_fmt="d"
+              ;;
+           *)
+              ssize_t_fmt="ld"
+              ;;
+        esac
+        size_t_fmt="lu"
+        ;;
+    *-mingw*)
+        int64_t_fmt='#define APR_INT64_T_FMT "I64d"'
+        uint64_t_fmt='#define APR_UINT64_T_FMT "I64u"'
+        uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "I64x"'
+        int64_value="__int64"
+        long_value="__int64"
+        int64_strfn="_strtoi64"
+        ;;
+esac
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ssize_t and int are the same" >&5
+$as_echo_n "checking whether ssize_t and int are the same... " >&6; }
+if ${apr_cv_typematch_ssize_t_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+    int foo[0 - !__builtin_types_compatible_p(ssize_t, int)];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_typematch_ssize_t_int=yes
+ssize_t_fmt="d"
+else
+  apr_cv_typematch_ssize_t_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_ssize_t_int" >&5
+$as_echo "$apr_cv_typematch_ssize_t_int" >&6; }
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ssize_t and long are the same" >&5
+$as_echo_n "checking whether ssize_t and long are the same... " >&6; }
+if ${apr_cv_typematch_ssize_t_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+    int foo[0 - !__builtin_types_compatible_p(ssize_t, long)];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_typematch_ssize_t_long=yes
+ssize_t_fmt="ld"
+else
+  apr_cv_typematch_ssize_t_long=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_ssize_t_long" >&5
+$as_echo "$apr_cv_typematch_ssize_t_long" >&6; }
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether size_t and unsigned int are the same" >&5
+$as_echo_n "checking whether size_t and unsigned int are the same... " >&6; }
+if ${apr_cv_typematch_size_t_unsigned_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+    int foo[0 - !__builtin_types_compatible_p(size_t, unsigned int)];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_typematch_size_t_unsigned_int=yes
+size_t_fmt="u"
+else
+  apr_cv_typematch_size_t_unsigned_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_size_t_unsigned_int" >&5
+$as_echo "$apr_cv_typematch_size_t_unsigned_int" >&6; }
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether size_t and unsigned long are the same" >&5
+$as_echo_n "checking whether size_t and unsigned long are the same... " >&6; }
+if ${apr_cv_typematch_size_t_unsigned_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+    int foo[0 - !__builtin_types_compatible_p(size_t, unsigned long)];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_typematch_size_t_unsigned_long=yes
+size_t_fmt="lu"
+else
+  apr_cv_typematch_size_t_unsigned_long=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_typematch_size_t_unsigned_long" >&5
+$as_echo "$apr_cv_typematch_size_t_unsigned_long" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5
+$as_echo_n "checking size of ssize_t... " >&6; }
+if ${ac_cv_sizeof_ssize_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_sizeof_ssize_t=8
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+#include <sys/types.h>
+#ifdef WIN32
+#define binmode "b"
+#else
+#define binmode
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w" binmode);
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(ssize_t));
+  exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_sizeof_ssize_t=`cat conftestval`
+else
+  ac_cv_sizeof_ssize_t=0
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ssize_t" >&5
+$as_echo "$ac_cv_sizeof_ssize_t" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t
+_ACEOF
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_ssize_t" >&5
+$as_echo_n "checking which format to use for apr_ssize_t... " >&6; }
+if test -n "$ssize_t_fmt"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %$ssize_t_fmt" >&5
+$as_echo "%$ssize_t_fmt" >&6; }
+elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_int"; then
+    ssize_t_fmt="d"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %d" >&5
+$as_echo "%d" >&6; }
+elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_long"; then
+    ssize_t_fmt="ld"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %ld" >&5
+$as_echo "%ld" >&6; }
+else
+    as_fn_error $? "could not determine the proper format for apr_ssize_t" "$LINENO" 5
+fi
+
+ssize_t_fmt="#define APR_SSIZE_T_FMT \"$ssize_t_fmt\""
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+$as_echo_n "checking size of size_t... " >&6; }
+if ${ac_cv_sizeof_size_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_sizeof_size_t=8
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+#include <stddef.h>
+#ifdef WIN32
+#define binmode "b"
+#else
+#define binmode
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w" binmode);
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(size_t));
+  exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_sizeof_size_t=`cat conftestval`
+else
+  ac_cv_sizeof_size_t=0
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
+$as_echo "$ac_cv_sizeof_size_t" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+_ACEOF
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_size_t" >&5
+$as_echo_n "checking which format to use for apr_size_t... " >&6; }
+if test -n "$size_t_fmt"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %$size_t_fmt" >&5
+$as_echo "%$size_t_fmt" >&6; }
+elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_int"; then
+    size_t_fmt="d"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %d" >&5
+$as_echo "%d" >&6; }
+elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_long"; then
+    size_t_fmt="ld"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: %ld" >&5
+$as_echo "%ld" >&6; }
+else
+    as_fn_error $? "could not determine the proper format for apr_size_t" "$LINENO" 5
+fi
+
+size_t_fmt="#define APR_SIZE_T_FMT \"$size_t_fmt\""
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
+$as_echo_n "checking size of off_t... " >&6; }
+if ${ac_cv_sizeof_off_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_sizeof_off_t=8
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+#include <sys/types.h>
+#ifdef WIN32
+#define binmode "b"
+#else
+#define binmode
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w" binmode);
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(off_t));
+  exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_sizeof_off_t=`cat conftestval`
+else
+  ac_cv_sizeof_off_t=0
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
+$as_echo "$ac_cv_sizeof_off_t" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
+_ACEOF
+
+
+
+if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
+    # Enable LFS
+    aprlfs=1
+    for ac_func in mmap64 sendfile64 sendfilev64 readdir64_r
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    case $host in
+        *-hp-hpux*)
+                        ;;
+        *)
+            for ac_func in mkstemp64
+do :
+  ac_fn_c_check_func "$LINENO" "mkstemp64" "ac_cv_func_mkstemp64"
+if test "x$ac_cv_func_mkstemp64" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MKSTEMP64 1
+_ACEOF
+
+fi
+done
+
+            ;;
+    esac
+elif test "${ac_cv_sizeof_off_t}" != "${ac_cv_sizeof_size_t}"; then
+    # unsure of using -gt above is as portable, can can't forsee where
+    # off_t can legitimately be smaller than size_t
+    aprlfs=1
+else
+    aprlfs=0
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which type to use for apr_off_t" >&5
+$as_echo_n "checking which type to use for apr_off_t... " >&6; }
+if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
+    # LFS is go!
+    off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
+    off_t_value='off64_t'
+    off_t_strfn='apr_strtoi64'
+elif test "${ac_cv_sizeof_off_t}x${ac_cv_sizeof_long}" = "4x4"; then
+    # Special case: off_t may change size with _FILE_OFFSET_BITS
+    # on 32-bit systems with LFS support.  To avoid compatibility
+    # issues when other packages do define _FILE_OFFSET_BITS,
+    # hard-code apr_off_t to long.
+    off_t_value=long
+    off_t_fmt='#define APR_OFF_T_FMT "ld"'
+    off_t_strfn='strtol'
+elif test "$ac_cv_type_off_t" = "yes"; then
+    off_t_value=off_t
+    # off_t is more commonly a long than an int; prefer that case
+    # where int and long are the same size.
+    if test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long"; then
+        off_t_fmt='#define APR_OFF_T_FMT "ld"'
+        off_t_strfn='strtol'
+    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_int"; then
+        off_t_fmt='#define APR_OFF_T_FMT "d"'
+        off_t_strfn='strtoi'
+    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long_long"; then
+        off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
+        off_t_strfn='apr_strtoi64'
+    else
+        as_fn_error $? "could not determine the size of off_t" "$LINENO" 5
+    fi
+    # Per OS tuning...
+    case $host in
+    *-mingw*)
+        off_t_value=apr_int64_t
+        off_t_fmt='#define APR_OFF_T_FMT "I64d"'
+        off_t_strfn='_strtoi64'
+        ;;
+    esac
+else
+   # Fallback on int
+   off_t_value=apr_int32_t
+   off_t_fmt=d
+   off_t_strfn='strtoi'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $off_t_value" >&5
+$as_echo "$off_t_value" >&6; }
+
+# Regardless of whether _LARGEFILE64_SOURCE is used, on some
+# platforms _FILE_OFFSET_BITS will affect the size of ino_t and hence
+# the build-time ABI may be different from the apparent ABI when using
+# APR with another package which *does* define _FILE_OFFSET_BITS.
+# (Exactly as per the case above with off_t where LFS is *not* used)
+#
+# To be safe, hard-code apr_ino_t as 'unsigned long' or 'unsigned int'
+# iff that is exactly the size of ino_t here; otherwise use ino_t as existing
+# releases did.  To be correct, apr_ino_t should have been made an
+# ino64_t as apr_off_t is off64_t, but this can't be done now without
+# breaking ABI.
+
+# Per OS tuning...
+case $host in
+*mingw*)
+    ino_t_value=apr_int64_t
+    ;;
+*)
+    ino_t_value=ino_t
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ino_t" >&5
+$as_echo_n "checking size of ino_t... " >&6; }
+if ${ac_cv_sizeof_ino_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_sizeof_ino_t=$ac_cv_sizeof_long
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+$ac_includes_default
+#ifdef WIN32
+#define binmode "b"
+#else
+#define binmode
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w" binmode);
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(ino_t));
+  exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_sizeof_ino_t=`cat conftestval`
+else
+  ac_cv_sizeof_ino_t=0
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ino_t" >&5
+$as_echo "$ac_cv_sizeof_ino_t" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INO_T $ac_cv_sizeof_ino_t
+_ACEOF
+
+
+    if test $ac_cv_sizeof_ino_t = 4; then
+        if test $ac_cv_sizeof_long = 4; then
+            ino_t_value="unsigned long"
+        else
+            ino_t_value="unsigned int"
+        fi
+    fi
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: using $ino_t_value for ino_t" >&5
+$as_echo "$as_me: using $ino_t_value for ino_t" >&6;}
+
+# Checks for endianness
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+	# Check for potential -arch flags.  It is not universal unless
+	# there are at least two -arch flags with different values.
+	ac_arch=
+	ac_prev=
+	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+	 if test -n "$ac_prev"; then
+	   case $ac_word in
+	     i?86 | x86_64 | ppc | ppc64)
+	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+		 ac_arch=$ac_word
+	       else
+		 ac_cv_c_bigendian=universal
+		 break
+	       fi
+	       ;;
+	   esac
+	   ac_prev=
+	 elif test "x$ac_word" = "x-arch"; then
+	   ac_prev=arch
+	 fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+	     #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+		#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+if test $ac_cv_c_bigendian = yes; then
+    bigendian=1
+else
+    bigendian=0
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of struct iovec" >&5
+$as_echo_n "checking size of struct iovec... " >&6; }
+if ${ac_cv_sizeof_struct_iovec+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_sizeof_struct_iovec=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/uio.h>
+#ifdef WIN32
+#define binmode "b"
+#else
+#define binmode
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w" binmode);
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(struct iovec));
+  exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_sizeof_struct_iovec=`cat conftestval`
+else
+  ac_cv_sizeof_struct_iovec=0
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_struct_iovec" >&5
+$as_echo "$ac_cv_sizeof_struct_iovec" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_STRUCT_IOVEC $ac_cv_sizeof_struct_iovec
+_ACEOF
+
+
+if test "$ac_cv_sizeof_struct_iovec" = "0"; then
+    have_iovec=0
+else
+    have_iovec=1
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in strnicmp
+do :
+  ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp"
+if test "x$ac_cv_func_strnicmp" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRNICMP 1
+_ACEOF
+ have_strnicmp="1"
+else
+  have_strnicmp="0"
+fi
+done
+
+for ac_func in strncasecmp
+do :
+  ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp"
+if test "x$ac_cv_func_strncasecmp" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRNCASECMP 1
+_ACEOF
+ have_strncasecmp="1"
+else
+  have_strncasecmp="0"
+fi
+done
+
+for ac_func in stricmp
+do :
+  ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp"
+if test "x$ac_cv_func_stricmp" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRICMP 1
+_ACEOF
+ have_stricmp="1"
+else
+  have_stricmp="0"
+fi
+done
+
+for ac_func in strcasecmp
+do :
+  ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
+if test "x$ac_cv_func_strcasecmp" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRCASECMP 1
+_ACEOF
+ have_strcasecmp="1"
+else
+  have_strcasecmp="0"
+fi
+done
+
+for ac_func in strdup
+do :
+  ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRDUP 1
+_ACEOF
+ have_strdup="1"
+else
+  have_strdup="0"
+fi
+done
+
+for ac_func in strstr
+do :
+  ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr"
+if test "x$ac_cv_func_strstr" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRSTR 1
+_ACEOF
+ have_strstr="1"
+else
+  have_strstr="0"
+fi
+done
+
+for ac_func in memchr
+do :
+  ac_fn_c_check_func "$LINENO" "memchr" "ac_cv_func_memchr"
+if test "x$ac_cv_func_memchr" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MEMCHR 1
+_ACEOF
+ have_memchr="1"
+else
+  have_memchr="0"
+fi
+done
+
+as_ac_var=`$as_echo "ac_cv_func_$int64_strfn" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$int64_strfn" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  have_int64_strfn="1"
+else
+  have_int64_strfn="0"
+fi
+
+
+if test "$have_int64_strfn" = "0" && test "$int64_strfn" = "strtoll"; then
+    int64_strfn="strtoq"
+    ac_fn_c_check_func "$LINENO" "strtoq" "ac_cv_func_strtoq"
+if test "x$ac_cv_func_strtoq" = xyes; then :
+  have_int64_strfn=1
+else
+  have_int64_strfn=0
+fi
+
+fi
+
+if test "$have_int64_strfn" = "1"; then
+
+cat >>confdefs.h <<_ACEOF
+#define APR_INT64_STRFN $int64_strfn
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+if test "$off_t_strfn" = "apr_strtoi64" && test "$have_int64_strfn" = "1"; then
+    off_t_strfn=$int64_strfn
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define APR_OFF_T_STRFN $off_t_strfn
+_ACEOF
+
+
+echo "${nl}Checking for DSO..."
+# Check whether --enable-dso was given.
+if test "${enable_dso+set}" = set; then :
+  enableval=$enable_dso; if test "x$enableval" = "xyes"; then
+      dsotype=any
+   else
+      dsotype=$enableval
+   fi
+
+else
+  dsotype=any
+fi
+
+
+if test "$dsotype" = "any"; then
+    if test "$dsotype" = "any"; then
+      case $host in
+        *darwin[0-8]\.*)
+          # Original Darwin, not for 9.0!:
+          ac_fn_c_check_func "$LINENO" "NSLinkModule" "ac_cv_func_NSLinkModule"
+if test "x$ac_cv_func_NSLinkModule" = xyes; then :
+  dsotype=dyld
+fi
+;;
+        hppa*-hpux[1-9]\.*|hppa*-hpux1[01]*)
+          # shl is specific to parisc hpux SOM binaries, not used for 64 bit
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  have_shl=1
+fi
+
+          if test "$ac_cv_sizeof_voidp$have_shl" = "41"; then
+            dsotype=shl;
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldld\""
+    LIBS="-ldld"
+  else
+    apr_addto_bugger="-ldld"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+          fi;;
+        *mingw*|*-os2*)
+          # several 'other's below probably belong up here.  If they always
+          # use a platform implementation and shouldn't test the dlopen/dlfcn
+          # features, then bring them up here.
+          # But if they -should- optionally use dlfcn, and/or need the config
+          # detection of dlopen/dlsym, do not move them up.
+          dsotype=other ;;
+      esac
+    fi
+    # Normal POSIX:
+    if test "$dsotype" = "any"; then
+      ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  dsotype=dlfcn
+fi
+
+    fi
+    if test "$dsotype" = "any"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  dsotype=dlfcn;
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldl\""
+    LIBS="-ldl"
+  else
+    apr_addto_bugger="-ldl"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+fi
+
+    fi
+    if test "$dsotype" = "dlfcn"; then
+        # ReliantUnix has dlopen() in libc but dlsym() in libdl :(
+        ac_fn_c_check_func "$LINENO" "dlsym" "ac_cv_func_dlsym"
+if test "x$ac_cv_func_dlsym" = xyes; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
+$as_echo_n "checking for dlsym in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlsym+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlsym ();
+int
+main ()
+{
+return dlsym ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlsym=yes
+else
+  ac_cv_lib_dl_dlsym=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5
+$as_echo "$ac_cv_lib_dl_dlsym" >&6; }
+if test "x$ac_cv_lib_dl_dlsym" = xyes; then :
+
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldl\""
+    LIBS="-ldl"
+  else
+    apr_addto_bugger="-ldl"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+else
+  dsotype=any
+              echo "Weird: dlopen() was found but dlsym() was not found!"
+fi
+
+fi
+
+    fi
+    if test "$dsotype" = "any"; then
+      # BeOS:
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for load_image in -lroot" >&5
+$as_echo_n "checking for load_image in -lroot... " >&6; }
+if ${ac_cv_lib_root_load_image+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lroot  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char load_image ();
+int
+main ()
+{
+return load_image ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_root_load_image=yes
+else
+  ac_cv_lib_root_load_image=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_root_load_image" >&5
+$as_echo "$ac_cv_lib_root_load_image" >&6; }
+if test "x$ac_cv_lib_root_load_image" = xyes; then :
+  dsotype=other
+fi
+
+    fi
+    # Everything else:
+    if test "$dsotype" = "any"; then
+        case $host in
+        *os390|*os400|*-aix*)
+          # Some -aix5 will use dl, no hassles.  Keep that pattern here.
+          dsotype=other ;;
+        *-hpux*)
+          if test "$have_shl" = "1"; then
+            dsotype=shl;
+  if test "x$LIBS" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting LIBS to \"-ldld\""
+    LIBS="-ldld"
+  else
+    apr_addto_bugger="-ldld"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $LIBS; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to LIBS"
+        LIBS="$LIBS $i"
+      fi
+    done
+  fi
+
+          fi;;
+        esac
+    fi
+fi
+
+if test "$dsotype" = "any"; then
+    as_fn_error $? "Could not detect suitable DSO implementation" "$LINENO" 5
+elif test "$dsotype" = "no"; then
+    aprdso="0"
+else
+    case "$dsotype" in
+    dlfcn)
+$as_echo "#define DSO_USE_DLFCN 1" >>confdefs.h
+;;
+    shl)
+$as_echo "#define DSO_USE_SHL 1" >>confdefs.h
+;;
+    dyld)
+$as_echo "#define DSO_USE_DYLD 1" >>confdefs.h
+;;
+    other) ;; # Use whatever is in dso/OSDIR
+    *) as_fn_error $? "Unknown DSO implementation \"$dsotype\"" "$LINENO" 5;;
+    esac
+    aprdso="1"
+    apr_modules="$apr_modules dso"
+fi
+
+
+
+echo "${nl}Checking for Processes..."
+
+for ac_func in waitpid
+do :
+  ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid"
+if test "x$ac_cv_func_waitpid" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WAITPID 1
+_ACEOF
+
+fi
+done
+
+
+# Check whether --enable-other-child was given.
+if test "${enable_other_child+set}" = set; then :
+  enableval=$enable_other_child;  if test "$enableval" = "yes"; then
+        oc="1"
+    else
+        oc="0"
+    fi
+else
+   oc=1
+fi
+
+
+
+
+if test -z "$have_proc_invoked"; then
+  have_proc_invoked="0"
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Variable Length Arrays" >&5
+$as_echo_n "checking for Variable Length Arrays... " >&6; }
+apr_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $CFLAGS_WARN"
+ if test "$ac_cv_c_compiler_gnu" = "yes"; then
+   CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "confdefs.h"
+
+
+   int main(int argc, const char *const *argv) {
+
+    int foo[argc];
+    foo[0] = 0;
+
+      return 0; }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  vla_msg=yes
+else
+  vla_msg=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$apr_save_CFLAGS
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vla_msg" >&5
+$as_echo "$vla_msg" >&6; }
+if test "$vla_msg" = "yes"; then
+
+$as_echo "#define HAVE_VLA 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking struct rlimit" >&5
+$as_echo_n "checking struct rlimit... " >&6; }
+if ${ac_cv_struct_rlimit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+if test "$cross_compiling" = yes; then :
+
+    ac_cv_struct_rlimit=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+main()
+{
+    struct rlimit limit;
+    limit.rlim_cur = 0;
+    limit.rlim_max = 0;
+    exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+    ac_cv_struct_rlimit=yes
+else
+
+    ac_cv_struct_rlimit=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_rlimit" >&5
+$as_echo "$ac_cv_struct_rlimit" >&6; }
+struct_rlimit=0
+test "x$ac_cv_struct_rlimit" = xyes && struct_rlimit=1
+
+
+echo "${nl}Checking for Locking..."
+
+for ac_func in semget semctl flock
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+for ac_header in semaphore.h OS.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sem_open" >&5
+$as_echo_n "checking for library containing sem_open... " >&6; }
+if ${ac_cv_search_sem_open+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sem_open ();
+int
+main ()
+{
+return sem_open ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_sem_open=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_sem_open+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_sem_open+:} false; then :
+
+else
+  ac_cv_search_sem_open=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_open" >&5
+$as_echo "$ac_cv_search_sem_open" >&6; }
+ac_res=$ac_cv_search_sem_open
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+for ac_func in sem_close sem_unlink sem_post sem_wait create_sem
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+# Some systems return ENOSYS from sem_open.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sem_open" >&5
+$as_echo_n "checking for working sem_open... " >&6; }
+if ${ac_cv_func_sem_open+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+if test "$cross_compiling" = yes; then :
+  ac_cv_func_sem_open=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <semaphore.h>
+#ifndef SEM_FAILED
+#define SEM_FAILED (-1)
+#endif
+main()
+{
+    sem_t *psem;
+    const char *sem_name = "/apr_autoconf";
+
+    psem = sem_open(sem_name, O_CREAT, 0644, 1);
+    if (psem == (sem_t *)SEM_FAILED) {
+	exit(1);
+    }
+    sem_close(psem);
+    psem = sem_open(sem_name, O_CREAT | O_EXCL, 0644, 1);
+    if (psem != (sem_t *)SEM_FAILED) {
+        sem_close(psem);
+        exit(1);
+    }
+    sem_unlink(sem_name);
+    exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_sem_open=yes
+else
+  ac_cv_func_sem_open=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sem_open" >&5
+$as_echo "$ac_cv_func_sem_open" >&6; }
+
+# It's stupid, but not all platforms have union semun, even those that need it.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for union semun in sys/sem.h" >&5
+$as_echo_n "checking for union semun in sys/sem.h... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/sem.h>
+
+int
+main ()
+{
+
+union semun arg;
+semctl(0, 0, 0, arg);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  have_union_semun="1" union_semun=yes
+msg=yes
+else
+
+have_union_semun="0"
+msg=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $msg" >&5
+$as_echo "$msg" >&6; }
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LOCK_EX in sys/file.h" >&5
+$as_echo_n "checking for LOCK_EX in sys/file.h... " >&6; }
+if ${ac_cv_define_LOCK_EX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/file.h>
+#ifdef LOCK_EX
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_LOCK_EX=yes
+else
+  ac_cv_define_LOCK_EX=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_LOCK_EX" >&5
+$as_echo "$ac_cv_define_LOCK_EX" >&6; }
+  if test "$ac_cv_define_LOCK_EX" = "yes"; then
+
+$as_echo "#define HAVE_LOCK_EX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for F_SETLK in fcntl.h" >&5
+$as_echo_n "checking for F_SETLK in fcntl.h... " >&6; }
+if ${ac_cv_define_F_SETLK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#ifdef F_SETLK
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_F_SETLK=yes
+else
+  ac_cv_define_F_SETLK=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_F_SETLK" >&5
+$as_echo "$ac_cv_define_F_SETLK" >&6; }
+  if test "$ac_cv_define_F_SETLK" = "yes"; then
+
+$as_echo "#define HAVE_F_SETLK 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SEM_UNDO in sys/sem.h" >&5
+$as_echo_n "checking for SEM_UNDO in sys/sem.h... " >&6; }
+if ${ac_cv_define_SEM_UNDO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/sem.h>
+#ifdef SEM_UNDO
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_SEM_UNDO=yes
+else
+  ac_cv_define_SEM_UNDO=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_SEM_UNDO" >&5
+$as_echo "$ac_cv_define_SEM_UNDO" >&6; }
+  if test "$ac_cv_define_SEM_UNDO" = "yes"; then
+
+$as_echo "#define HAVE_SEM_UNDO 1" >>confdefs.h
+
+  fi
+
+
+# We are assuming that if the platform doesn't have POLLIN, it doesn't have
+# any POLL definitions.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POLLIN in poll.h sys/poll.h" >&5
+$as_echo_n "checking for POLLIN in poll.h sys/poll.h... " >&6; }
+if ${ac_cv_define_POLLIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_cv_define_POLLIN=no
+    for curhdr in poll.h sys/poll.h
+    do
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <$curhdr>
+#ifdef POLLIN
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_POLLIN=yes
+fi
+rm -f conftest*
+
+    done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_POLLIN" >&5
+$as_echo "$ac_cv_define_POLLIN" >&6; }
+  if test "$ac_cv_define_POLLIN" = "yes"; then
+
+$as_echo "#define HAVE_POLLIN 1" >>confdefs.h
+
+  fi
+
+
+if test "$threads" = "1"; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PROCESS_SHARED in pthread.h" >&5
+$as_echo_n "checking for PTHREAD_PROCESS_SHARED in pthread.h... " >&6; }
+if ${ac_cv_define_PTHREAD_PROCESS_SHARED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <pthread.h>
+#ifdef PTHREAD_PROCESS_SHARED
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_PTHREAD_PROCESS_SHARED=yes
+else
+  ac_cv_define_PTHREAD_PROCESS_SHARED=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_PTHREAD_PROCESS_SHARED" >&5
+$as_echo "$ac_cv_define_PTHREAD_PROCESS_SHARED" >&6; }
+  if test "$ac_cv_define_PTHREAD_PROCESS_SHARED" = "yes"; then
+
+$as_echo "#define HAVE_PTHREAD_PROCESS_SHARED 1" >>confdefs.h
+
+  fi
+
+    for ac_func in pthread_mutexattr_setpshared
+do :
+  ac_fn_c_check_func "$LINENO" "pthread_mutexattr_setpshared" "ac_cv_func_pthread_mutexattr_setpshared"
+if test "x$ac_cv_func_pthread_mutexattr_setpshared" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_MUTEXATTR_SETPSHARED 1
+_ACEOF
+
+fi
+done
+
+    # Some systems have setpshared and define PROCESS_SHARED, but don't
+    # really support PROCESS_SHARED locks.  So, we must validate that we
+    # can go through the steps without receiving some sort of system error.
+    # Linux and older versions of AIX have this problem.
+    ac_rc=yes
+for ac_spec in header:pthread.h define:PTHREAD_PROCESS_SHARED func:pthread_mutexattr_setpshared; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working PROCESS_SHARED locks" >&5
+$as_echo_n "checking for working PROCESS_SHARED locks... " >&6; }
+if ${apr_cv_process_shared_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <pthread.h>
+        int main()
+        {
+            pthread_mutex_t mutex;
+            pthread_mutexattr_t attr;
+            if (pthread_mutexattr_init(&attr))
+                exit(1);
+            if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED))
+                exit(2);
+            if (pthread_mutex_init(&mutex, &attr))
+                exit(3);
+            if (pthread_mutexattr_destroy(&attr))
+                exit(4);
+            if (pthread_mutex_destroy(&mutex))
+                exit(5);
+            exit(0);
+        }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_process_shared_works=yes
+else
+  apr_cv_process_shared_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_process_shared_works" >&5
+$as_echo "$apr_cv_process_shared_works" >&6; }
+      # Override detection of pthread_mutexattr_setpshared
+      ac_cv_func_pthread_mutexattr_setpshared=$apr_cv_process_shared_works
+else
+    :
+
+fi
+
+
+    if test "$ac_cv_func_pthread_mutexattr_setpshared" = "yes"; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for robust cross-process mutex support" >&5
+$as_echo_n "checking for robust cross-process mutex support... " >&6; }
+if ${apr_cv_mutex_robust_shared+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <pthread.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv)
+{
+    pthread_mutex_t mutex;
+    pthread_mutexattr_t attr;
+
+    if (pthread_mutexattr_init(&attr))
+        exit(1);
+    if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED))
+        exit(2);
+    if (pthread_mutexattr_setrobust_np(&attr, PTHREAD_MUTEX_ROBUST_NP))
+        exit(3);
+    if (pthread_mutexattr_setprotocol(&attr, PTHREAD_PRIO_INHERIT))
+        exit(4);
+    if (pthread_mutex_init(&mutex, &attr))
+        exit(5);
+    if (pthread_mutexattr_destroy(&attr))
+        exit(6);
+    if (pthread_mutex_destroy(&mutex))
+        exit(7);
+
+    exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_mutex_robust_shared=yes
+else
+  apr_cv_mutex_robust_shared=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_mutex_robust_shared" >&5
+$as_echo "$apr_cv_mutex_robust_shared" >&6; }
+
+if test "$apr_cv_mutex_robust_shared" = "yes"; then
+
+$as_echo "#define HAVE_PTHREAD_MUTEX_ROBUST 1" >>confdefs.h
+
+fi
+
+    fi
+fi
+
+# See which lock mechanisms we can support on this system.
+ac_rc=yes
+for ac_spec in header:semaphore.h func:sem_open func:sem_close              func:sem_unlink func:sem_post func:sem_wait; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    hasposixser="1"
+else
+    :
+    hasposixser="0"
+fi
+
+ac_rc=yes
+for ac_spec in func:semget func:semctl define:SEM_UNDO; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    hassysvser="1"
+else
+    :
+    hassysvser="0"
+fi
+
+ac_rc=yes
+for ac_spec in func:flock define:LOCK_EX; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    hasflockser="1"
+else
+    :
+    hasflockser="0"
+fi
+
+ac_rc=yes
+for ac_spec in header:fcntl.h define:F_SETLK; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    hasfcntlser="1"
+else
+    :
+    hasfcntlser="0"
+fi
+
+# note: the current APR use of shared mutex requires /dev/zero
+ac_rc=yes
+for ac_spec in header:pthread.h define:PTHREAD_PROCESS_SHARED              func:pthread_mutexattr_setpshared              file:/dev/zero; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    hasprocpthreadser="1"
+else
+    :
+    hasprocpthreadser="0"
+fi
+
+ac_rc=yes
+for ac_spec in header:OS.h func:create_sem; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+    hasbeossem="1"
+else
+    :
+    hasbeossem="0"
+fi
+
+
+# See which lock mechanism we'll select by default on this system.
+# The last APR_DECIDE to execute sets the default.
+# At this stage, we match the ordering in Apache 1.3
+# which is (highest to lowest): sysvsem -> fcntl -> flock.
+# POSIX semaphores and cross-process pthread mutexes are not
+# used by default since they have less desirable behaviour when
+# e.g. a process holding the mutex segfaults.
+# The BEOSSEM decision doesn't require any substitutions but is
+# included here to prevent the fcntl() branch being selected
+# from the decision making.
+ac_decision_item='apr_lock implementation method'
+ac_decision_msg='FAILED'
+ac_decision=''
+
+ac_rc=yes
+for ac_spec in func:flock define:LOCK_EX; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+
+ac_decision='USE_FLOCK_SERIALIZE'
+ac_decision_msg='4.2BSD-style flock()'
+ac_decision_USE_FLOCK_SERIALIZE=yes
+ac_decision_USE_FLOCK_SERIALIZE_msg='4.2BSD-style flock()'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:fcntl.h define:F_SETLK; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+
+ac_decision='USE_FCNTL_SERIALIZE'
+ac_decision_msg='SVR4-style fcntl()'
+ac_decision_USE_FCNTL_SERIALIZE=yes
+ac_decision_USE_FCNTL_SERIALIZE_msg='SVR4-style fcntl()'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in func:semget func:semctl define:SEM_UNDO; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+
+ac_decision='USE_SYSVSEM_SERIALIZE'
+ac_decision_msg='SysV IPC semget()'
+ac_decision_USE_SYSVSEM_SERIALIZE=yes
+ac_decision_USE_SYSVSEM_SERIALIZE_msg='SysV IPC semget()'
+
+else
+    :
+
+fi
+
+ac_rc=yes
+for ac_spec in header:OS.h func:create_sem; do
+    ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'`
+    ac_item=`echo "$ac_spec" | sed -e 's/^.*://'`
+    case $ac_type in
+        header )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_header_$ac_item"
+            ;;
+        file )
+            ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'`
+            ac_var="ac_cv_file_$ac_item"
+            ;;
+        func )   ac_var="ac_cv_func_$ac_item"   ;;
+        struct ) ac_var="ac_cv_struct_$ac_item" ;;
+        define ) ac_var="ac_cv_define_$ac_item" ;;
+        custom ) ac_var="$ac_item" ;;
+    esac
+    eval "ac_val=\$$ac_var"
+    if test ".$ac_val" != .yes; then
+        ac_rc=no
+        break
+    fi
+done
+if test ".$ac_rc" = .yes; then
+    :
+
+ac_decision='USE_BEOSSEM'
+ac_decision_msg='BeOS Semaphores'
+ac_decision_USE_BEOSSEM=yes
+ac_decision_USE_BEOSSEM_msg='BeOS Semaphores'
+
+else
+    :
+
+fi
+
+if test "x$apr_lock_method" != "x"; then
+    ac_decision="$apr_lock_method"
+eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\""
+
+fi
+if test ".$ac_decision" = .; then
+    echo "$0:Error: decision on $ac_decision_item failed" 1>&2
+    exit 1
+else
+    if test ".$ac_decision_msg" = .; then
+        ac_decision_msg="$ac_decision"
+    fi
+    cat >>confdefs.h <<_ACEOF
+#define ${ac_decision_item} 1
+_ACEOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: decision on $ac_decision_item... $ac_decision_msg" >&5
+$as_echo "decision on $ac_decision_item... $ac_decision_msg" >&6; }
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define $ac_decision 1
+_ACEOF
+
+
+flockser="0"
+sysvser="0"
+posixser="0"
+procpthreadser="0"
+fcntlser="0"
+case $ac_decision in
+    USE_FLOCK_SERIALIZE )
+        flockser="1"
+        ;;
+    USE_FCNTL_SERIALIZE )
+        fcntlser="1"
+        ;;
+    USE_SYSVSEM_SERIALIZE )
+        sysvser="1"
+        ;;
+    USE_POSIXSEM_SERIALIZE )
+        posixser="1"
+        ;;
+    USE_PROC_PTHREAD_SERIALIZE )
+        procpthreadser="1"
+        ;;
+    USE_BEOSSEM )
+        beossem="1"
+        ;;
+esac
+
+if test $hasfcntlser = "1"; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fcntl returns EACCES when F_SETLK is already held" >&5
+$as_echo_n "checking if fcntl returns EACCES when F_SETLK is already held... " >&6; }
+if test "$cross_compiling" = yes; then :
+  apr_fcntl_tryacquire_eacces=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+#include <fcntl.h>
+#include <errno.h>
+
+int fd;
+struct flock proc_mutex_lock_it = {0};
+const char *fname = "conftest.fcntl";
+
+int main()
+{
+    int rc, status;;
+    proc_mutex_lock_it.l_whence = SEEK_SET;   /* from current point */
+    proc_mutex_lock_it.l_type = F_WRLCK;      /* set exclusive/write lock */
+
+    fd = creat(fname, S_IRWXU);
+    unlink(fname);
+
+    if (rc = lockit()) {
+        exit(-1);
+    }
+
+    if (fork()) {
+        wait(&status);
+    }
+    else {
+      return(lockit());
+    }
+
+    close(fd);
+    exit(WEXITSTATUS(status) != EACCES);
+}
+
+int lockit() {
+    int rc;
+    do {
+        rc = fcntl(fd, F_SETLK, &proc_mutex_lock_it);
+    } while ( rc < 0 && errno == EINTR);
+
+    return (rc < 0) ? errno : 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_fcntl_tryacquire_eacces=1
+else
+  apr_fcntl_tryacquire_eacces=0
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+
+if test "$apr_fcntl_tryacquire_eacces" = "1"; then
+
+$as_echo "#define FCNTL_TRYACQUIRE_EACCES 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if all interprocess locks affect threads" >&5
+$as_echo_n "checking if all interprocess locks affect threads... " >&6; }
+if test "x$apr_process_lock_is_global" = "xyes"; then
+    proclockglobal="1"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+    proclockglobal="0"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if POSIX sems affect threads in the same process" >&5
+$as_echo_n "checking if POSIX sems affect threads in the same process... " >&6; }
+if test "x$apr_posixsem_is_global" = "xyes"; then
+
+$as_echo "#define POSIXSEM_IS_GLOBAL 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if SysV sems affect threads in the same process" >&5
+$as_echo_n "checking if SysV sems affect threads in the same process... " >&6; }
+if test "x$apr_sysvsem_is_global" = "xyes"; then
+
+$as_echo "#define SYSVSEM_IS_GLOBAL 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fcntl locks affect threads in the same process" >&5
+$as_echo_n "checking if fcntl locks affect threads in the same process... " >&6; }
+if test "x$apr_fcntl_is_global" = "xyes"; then
+
+$as_echo "#define FCNTL_IS_GLOBAL 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if flock locks affect threads in the same process" >&5
+$as_echo_n "checking if flock locks affect threads in the same process... " >&6; }
+if test "x$apr_flock_is_global" = "xyes"; then
+
+$as_echo "#define FLOCK_IS_GLOBAL 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for entropy source" >&5
+$as_echo_n "checking for entropy source... " >&6; }
+
+why_no_rand=""
+
+
+# Check whether --with-egd was given.
+if test "${with_egd+set}" = set; then :
+  withval=$with_egd;
+$as_echo "#define HAVE_EGD 1" >>confdefs.h
+
+    if test "$withval" = "yes"; then
+
+cat >>confdefs.h <<_ACEOF
+#define EGD_DEFAULT_SOCKET "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"
+_ACEOF
+
+    else
+        cat >>confdefs.h <<_ACEOF
+#define EGD_DEFAULT_SOCKET "$withval"
+_ACEOF
+
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: EGD-compatible daemon" >&5
+$as_echo "EGD-compatible daemon" >&6; }
+    rand="1"
+
+fi
+
+
+if test "$rand" != "1"; then
+
+# Check whether --with-devrandom was given.
+if test "${with_devrandom+set}" = set; then :
+  withval=$with_devrandom;  apr_devrandom="$withval"
+else
+   apr_devrandom="yes"
+fi
+
+
+  if test "$apr_devrandom" = "yes"; then
+    # /dev/random on OpenBSD doesn't provide random data, so
+    # prefer /dev/arandom, which does; see random(4).
+    for f in /dev/arandom /dev/urandom /dev/random; do
+      if test -r $f; then
+        apr_devrandom=$f
+        rand=1
+        break
+      fi
+    done
+  elif test "$apr_devrandom" != "no"; then
+    if test -r "$apr_devrandom"; then
+      rand="1"
+    else
+      as_fn_error $? "$apr_devrandom not found or unreadable." "$LINENO" 5
+    fi
+  fi
+
+  if test "$rand" = "1"; then
+    case $host in
+      *os390)
+        if test $os_version -lt 1700; then
+          rand="0"
+          why_no_rand=" ($apr_devrandom unusable on z/OS before V1R7)"
+        fi
+        ;;
+    esac
+  fi
+
+  if test "$rand" = "1"; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEV_RANDOM "$apr_devrandom"
+_ACEOF
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_devrandom" >&5
+$as_echo "$apr_devrandom" >&6; }
+  fi
+fi
+
+if test "$rand" != "1"; then
+    case $host in
+        # we have built in support for OS/2
+        *-os2*)
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using OS/2 builtin random" >&5
+$as_echo "Using OS/2 builtin random" >&6; }
+            rand="1"
+            ;;
+        *)
+            if test "$rand" != "1"; then
+              if test "$ac_cv_lib_truerand_main" = "yes"; then
+
+$as_echo "#define HAVE_TRUERAND 1" >>confdefs.h
+
+                { $as_echo "$as_me:${as_lineno-$LINENO}: result: truerand" >&5
+$as_echo "truerand" >&6; }
+                rand="1"
+              else
+                { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found$why_no_rand" >&5
+$as_echo "not found$why_no_rand" >&6; }
+                rand="0"
+              fi
+            fi
+            ;;
+    esac
+fi
+
+
+
+echo "${nl}Checking for File Info Support..."
+ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_ctimensec" "ac_cv_member_struct_stat_st_ctimensec" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_ctimensec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_CTIMENSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimensec" "ac_cv_member_struct_stat_st_mtimensec" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_mtimensec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_MTIMENSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_ctim.tv_nsec" "ac_cv_member_struct_stat_st_ctim_tv_nsec" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_ctim_tv_nsec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim.tv_nsec" "ac_cv_member_struct_stat_st_mtim_tv_nsec" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_atime_n" "ac_cv_member_struct_stat_st_atime_n" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_atime_n" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIME_N 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_ctime_n" "ac_cv_member_struct_stat_st_ctime_n" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_ctime_n" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_CTIME_N 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime_n" "ac_cv_member_struct_stat_st_mtime_n" "
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_mtime_n" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_MTIME_N 1
+_ACEOF
+
+
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inode member of struct dirent" >&5
+$as_echo_n "checking for inode member of struct dirent... " >&6; }
+if ${apr_cv_dirent_inode+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+apr_cv_dirent_inode=no
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <dirent.h>
+
+int
+main ()
+{
+
+#ifdef d_ino
+#undef d_ino
+#endif
+struct dirent de; de.d_fileno;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_dirent_inode=d_fileno
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if test "$apr_cv_dirent_inode" = "no"; then
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <dirent.h>
+
+int
+main ()
+{
+
+#ifdef d_fileno
+#undef d_fileno
+#endif
+struct dirent de; de.d_ino;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_dirent_inode=d_ino
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dirent_inode" >&5
+$as_echo "$apr_cv_dirent_inode" >&6; }
+if test "$apr_cv_dirent_inode" != "no"; then
+
+cat >>confdefs.h <<_ACEOF
+#define DIRENT_INODE $apr_cv_dirent_inode
+_ACEOF
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for file type member of struct dirent" >&5
+$as_echo_n "checking for file type member of struct dirent... " >&6; }
+if ${apr_cv_dirent_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+apr_cv_dirent_type=no
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <dirent.h>
+
+int
+main ()
+{
+
+struct dirent de; de.d_type = DT_REG;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_dirent_type=d_type
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_dirent_type" >&5
+$as_echo "$apr_cv_dirent_type" >&6; }
+if test "$apr_cv_dirent_type" != "no"; then
+
+cat >>confdefs.h <<_ACEOF
+#define DIRENT_TYPE $apr_cv_dirent_type
+_ACEOF
+
+fi
+
+
+echo "${nl}Checking for OS UUID Support..."
+
+for ac_header in uuid.h uuid/uuid.h sys/uuid.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+
+apr_revert_save_LIBS=$LIBS
+
+# Prefer the flavor(s) that live in libc;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing uuid_create" >&5
+$as_echo_n "checking for library containing uuid_create... " >&6; }
+if ${ac_cv_search_uuid_create+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char uuid_create ();
+int
+main ()
+{
+return uuid_create ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' uuid; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_uuid_create=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_uuid_create+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_uuid_create+:} false; then :
+
+else
+  ac_cv_search_uuid_create=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_uuid_create" >&5
+$as_echo "$ac_cv_search_uuid_create" >&6; }
+ac_res=$ac_cv_search_uuid_create
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing uuid_generate" >&5
+$as_echo_n "checking for library containing uuid_generate... " >&6; }
+if ${ac_cv_search_uuid_generate+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char uuid_generate ();
+int
+main ()
+{
+return uuid_generate ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' uuid; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_uuid_generate=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_uuid_generate+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_uuid_generate+:} false; then :
+
+else
+  ac_cv_search_uuid_generate=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_uuid_generate" >&5
+$as_echo "$ac_cv_search_uuid_generate" >&6; }
+ac_res=$ac_cv_search_uuid_generate
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+if test "$ac_cv_search_uuid_create" = "none required" -o \
+        "$ac_cv_search_uuid_generate" = "none required"; then
+ LIBS=$apr_revert_save_LIBS
+fi
+
+for ac_func in uuid_create uuid_generate
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for os uuid usability" >&5
+$as_echo_n "checking for os uuid usability... " >&6; }
+if ${apr_cv_osuuid+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# Ensure this test closely mirrors misc/unix/rand.c!
+uuid_includes="
+#if defined(HAVE_SYS_TYPES_H)
+#include <sys/types.h>
+#endif
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+#if defined(HAVE_UUID_H)
+#include <uuid.h>
+#elif defined(HAVE_UUID_UUID_H)
+#include <uuid/uuid.h>
+#elif defined(HAVE_SYS_UUID_H)
+#include <sys/uuid.h>
+#endif
+"
+ apr_cv_osuuid=no
+ if test $ac_cv_func_uuid_create = yes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$uuid_includes
+int
+main ()
+{
+
+    uuid_t g;
+    uint32_t s;
+    uuid_create(&g, &s);
+    if (s == uuid_s_ok) s = 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  apr_cv_osuuid=yes
+else
+  apr_cv_func_uuid_create=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+ fi
+ if test $ac_cv_func_uuid_generate = yes; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$uuid_includes
+int
+main ()
+{
+
+    uuid_t g;
+    uuid_generate(g);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  apr_cv_osuuid=yes
+else
+  apr_cv_func_uuid_generate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_osuuid" >&5
+$as_echo "$apr_cv_osuuid" >&6; }
+
+if test $apr_cv_osuuid = yes; then
+  osuuid="1"
+else
+  osuuid="0"
+  LIBS=$apr_revert_save_LIBS
+fi
+
+
+
+echo "${nl}Checking for Time Support..."
+
+ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "
+#include <sys/types.h>
+#include <time.h>
+"
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TM_TM_GMTOFF 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" "
+#include <sys/types.h>
+#include <time.h>
+"
+if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TM___TM_GMTOFF 1
+_ACEOF
+
+
+fi
+
+
+echo "${nl}Checking for Networking support..."
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type in_addr" >&5
+$as_echo_n "checking for type in_addr... " >&6; }
+if ${ac_cv_type_in_addr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+
+int
+main ()
+{
+
+ struct in_addr arg;
+ arg.s_addr = htonl(INADDR_ANY);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_type_in_addr="yes"
+else
+
+ac_cv_type_in_addr="no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_in_addr" >&5
+$as_echo "$ac_cv_type_in_addr" >&6; }
+
+if test "$ac_cv_type_in_addr" = "yes"; then
+  have_in_addr="1"
+else
+  have_in_addr="0"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fd == socket on this platform" >&5
+$as_echo_n "checking if fd == socket on this platform... " >&6; }
+if test "x$file_as_socket" != "x0" ; then
+    file_as_socket="1";
+    echo "yes"
+else
+    echo "no"
+fi
+
+
+
+
+if test "$ac_cv_func_poll $file_as_socket" = "yes 1"; then
+
+$as_echo "#define WAITIO_USES_POLL 1" >>confdefs.h
+
+fi
+
+# Check the types only if we have gethostbyname_r
+if test "$ac_cv_func_gethostbyname_r" = "yes"; then
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking style of gethostbyname_r routine" >&5
+$as_echo_n "checking style of gethostbyname_r routine... " >&6; }
+if ${ac_cv_gethostbyname_r_style+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  apr_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $CFLAGS_WARN"
+ if test "$ac_cv_c_compiler_gnu" = "yes"; then
+   CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "confdefs.h"
+
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+   int main(int argc, const char *const *argv) {
+
+int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0,
+                          (char *) 0, 0, (struct hostent **) 0, &tmp);
+/* use tmp to suppress the warning */
+tmp=0;
+
+      return 0; }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_gethostbyname_r_style=glibc2
+else
+  ac_cv_gethostbyname_r_style=none
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$apr_save_CFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gethostbyname_r_style" >&5
+$as_echo "$ac_cv_gethostbyname_r_style" >&6; }
+
+if test "$ac_cv_gethostbyname_r_style" = "glibc2"; then
+
+$as_echo "#define GETHOSTBYNAME_R_GLIBC2 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking 3rd argument to the gethostbyname_r routines" >&5
+$as_echo_n "checking 3rd argument to the gethostbyname_r routines... " >&6; }
+if ${ac_cv_gethostbyname_r_arg+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  apr_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $CFLAGS_WARN"
+ if test "$ac_cv_c_compiler_gnu" = "yes"; then
+   CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "confdefs.h"
+
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+   int main(int argc, const char *const *argv) {
+
+int tmp = gethostbyname_r((const char *) 0, (struct hostent *) 0,
+                          (struct hostent_data *) 0);
+/* use tmp to suppress the warning */
+tmp=0;
+
+      return 0; }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_gethostbyname_r_arg=hostent_data
+else
+  ac_cv_gethostbyname_r_arg=char
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$apr_save_CFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gethostbyname_r_arg" >&5
+$as_echo "$ac_cv_gethostbyname_r_arg" >&6; }
+
+if test "$ac_cv_gethostbyname_r_arg" = "hostent_data"; then
+
+$as_echo "#define GETHOSTBYNAME_R_HOSTENT_DATA 1" >>confdefs.h
+
+fi
+
+fi
+
+# Check the types only if we have getservbyname_r
+if test "$ac_cv_func_getservbyname_r" = "yes"; then
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking style of getservbyname_r routine" >&5
+$as_echo_n "checking style of getservbyname_r routine... " >&6; }
+if ${ac_cv_getservbyname_r_style+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+apr_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $CFLAGS_WARN"
+ if test "$ac_cv_c_compiler_gnu" = "yes"; then
+   CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "confdefs.h"
+
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+   int main(int argc, const char *const *argv) {
+
+int tmp = getservbyname_r((const char *) 0, (const char *) 0,
+                          (struct servent *) 0, (char *) 0, 0,
+                          (struct servent **) 0);
+/* use tmp to suppress the warning */
+tmp=0;
+
+      return 0; }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_getservbyname_r_style=glibc2
+else
+  ac_cv_getservbyname_r_style=none
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$apr_save_CFLAGS
+
+
+if test "$ac_cv_getservbyname_r_style" = "none"; then
+            apr_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $CFLAGS_WARN"
+ if test "$ac_cv_c_compiler_gnu" = "yes"; then
+   CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "confdefs.h"
+
+
+    #ifdef HAVE_SYS_TYPES_H
+    #include <sys/types.h>
+    #endif
+    #ifdef HAVE_NETINET_IN_H
+    #include <netinet/in.h>
+    #endif
+    #ifdef HAVE_ARPA_INET_H
+    #include <arpa/inet.h>
+    #endif
+    #ifdef HAVE_NETDB_H
+    #include <netdb.h>
+    #endif
+    #ifdef HAVE_STDLIB_H
+    #include <stdlib.h>
+    #endif
+
+   int main(int argc, const char *const *argv) {
+
+    struct servent *tmp = getservbyname_r((const char *) 0, (const char *) 0,
+                                          (struct servent *) 0, (char *) 0, 0);
+    /* use tmp to suppress the warning */
+    tmp=NULL;
+
+      return 0; }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_getservbyname_r_style=solaris
+else
+  ac_cv_getservbyname_r_style=none
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$apr_save_CFLAGS
+
+fi
+
+if test "$ac_cv_getservbyname_r_style" = "none"; then
+            apr_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $CFLAGS_WARN"
+ if test "$ac_cv_c_compiler_gnu" = "yes"; then
+   CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "confdefs.h"
+
+
+    #ifdef HAVE_SYS_TYPES_H
+    #include <sys/types.h>
+    #endif
+    #ifdef HAVE_NETINET_IN_H
+    #include <netinet/in.h>
+    #endif
+    #ifdef HAVE_ARPA_INET_H
+    #include <arpa/inet.h>
+    #endif
+    #ifdef HAVE_NETDB_H
+    #include <netdb.h>
+    #endif
+    #ifdef HAVE_STDLIB_H
+    #include <stdlib.h>
+    #endif
+
+   int main(int argc, const char *const *argv) {
+
+    int tmp = getservbyname_r((const char *) 0, (const char *) 0,
+                              (struct servent *) 0, (struct servent_data *) 0);
+    /* use tmp to suppress the warning */
+    tmp=0;
+
+      return 0; }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_getservbyname_r_style=osf1
+else
+  ac_cv_getservbyname_r_style=none
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$apr_save_CFLAGS
+
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_getservbyname_r_style" >&5
+$as_echo "$ac_cv_getservbyname_r_style" >&6; }
+
+if test "$ac_cv_getservbyname_r_style" = "glibc2"; then
+
+$as_echo "#define GETSERVBYNAME_R_GLIBC2 1" >>confdefs.h
+
+elif test "$ac_cv_getservbyname_r_style" = "solaris"; then
+
+$as_echo "#define GETSERVBYNAME_R_SOLARIS 1" >>confdefs.h
+
+elif test "$ac_cv_getservbyname_r_style" = "osf1"; then
+
+$as_echo "#define GETSERVBYNAME_R_OSF1 1" >>confdefs.h
+
+fi
+
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if TCP_NODELAY setting is inherited from listening sockets" >&5
+$as_echo_n "checking if TCP_NODELAY setting is inherited from listening sockets... " >&6; }
+if ${ac_cv_tcp_nodelay_inherited+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+
+    ac_cv_tcp_nodelay_inherited="yes"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+int main(void) {
+    int listen_s, connected_s, client_s;
+    int listen_port, rc;
+    struct sockaddr_in sa;
+    socklen_t sa_len;
+    socklen_t option_len;
+    int option;
+
+    listen_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (listen_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    option = 1;
+    rc = setsockopt(listen_s, IPPROTO_TCP, TCP_NODELAY, &option, sizeof option);
+    if (rc < 0) {
+        perror("setsockopt TCP_NODELAY");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave port 0 to get ephemeral */
+    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("bind for ephemeral port");
+        exit(1);
+    }
+    /* find ephemeral port */
+    sa_len = sizeof(sa);
+    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (rc < 0) {
+        perror("getsockname");
+        exit(1);
+    }
+    listen_port = sa.sin_port;
+    rc = listen(listen_s, 5);
+    if (rc < 0) {
+        perror("listen");
+        exit(1);
+    }
+    client_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (client_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+    sa.sin_port   = listen_port;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave sin_addr all zeros to use loopback */
+    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("connect");
+        exit(1);
+    }
+    sa_len = sizeof sa;
+    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (connected_s < 0) {
+        perror("accept");
+        exit(1);
+    }
+    option_len = sizeof option;
+    rc = getsockopt(connected_s, IPPROTO_TCP, TCP_NODELAY, &option, &option_len);
+    if (rc < 0) {
+        perror("getsockopt");
+        exit(1);
+    }
+    if (!option) {
+        fprintf(stderr, "TCP_NODELAY is not set in the child.\n");
+        exit(1);
+    }
+    return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+    ac_cv_tcp_nodelay_inherited="yes"
+
+else
+
+    ac_cv_tcp_nodelay_inherited="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tcp_nodelay_inherited" >&5
+$as_echo "$ac_cv_tcp_nodelay_inherited" >&6; }
+if test "$ac_cv_tcp_nodelay_inherited" = "yes"; then
+    tcp_nodelay_inherited=1
+else
+    tcp_nodelay_inherited=0
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if O_NONBLOCK setting is inherited from listening sockets" >&5
+$as_echo_n "checking if O_NONBLOCK setting is inherited from listening sockets... " >&6; }
+if ${ac_cv_o_nonblock_inherited+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+
+    ac_cv_o_nonblock_inherited="yes"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+int main(void) {
+    int listen_s, connected_s, client_s;
+    int listen_port, rc;
+    struct sockaddr_in sa;
+    socklen_t sa_len;
+    fd_set fds;
+    struct timeval tv;
+
+    listen_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (listen_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave port 0 to get ephemeral */
+    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("bind for ephemeral port");
+        exit(1);
+    }
+    /* find ephemeral port */
+    sa_len = sizeof(sa);
+    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (rc < 0) {
+        perror("getsockname");
+        exit(1);
+    }
+    listen_port = sa.sin_port;
+    rc = listen(listen_s, 5);
+    if (rc < 0) {
+        perror("listen");
+        exit(1);
+    }
+    rc = fcntl(listen_s, F_SETFL, O_NONBLOCK);
+    if (rc < 0) {
+        perror("fcntl(F_SETFL)");
+        exit(1);
+    }
+    client_s = socket(AF_INET, SOCK_STREAM, 0);
+    if (client_s < 0) {
+        perror("socket");
+        exit(1);
+    }
+    memset(&sa, 0, sizeof sa);
+    sa.sin_family = AF_INET;
+    sa.sin_port   = listen_port;
+#ifdef BEOS
+    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+#endif
+    /* leave sin_addr all zeros to use loopback */
+    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);
+    if (rc < 0) {
+        perror("connect");
+        exit(1);
+    }
+    sa_len = sizeof sa;
+    /* 1 second select timeout */
+    tv.tv_sec = 1;
+    tv.tv_usec = 0;
+    /* Set up fd set */
+    FD_ZERO(&fds);
+    FD_SET(listen_s, &fds);
+    /* Wait for socket to become readable */
+    rc = select(listen_s + 1, &fds, NULL, NULL, &tv);
+    if (rc < 0) {
+        perror("select");
+        exit(1);
+    }
+    if (rc == 0) {
+        fprintf(stderr, "Socket failed to become readable (timeout)\n");
+        exit(1);
+    }
+    if (!FD_ISSET(listen_s, &fds)) {
+        fprintf(stderr, "Socket failed to become readable (selected another fd)\n");
+        exit(1);
+    }
+    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);
+    if (connected_s < 0) {
+        perror("accept");
+        exit(1);
+    }
+    rc = fcntl(connected_s, F_GETFL, 0);
+    if (rc < 0) {
+        perror("fcntl(F_GETFL)");
+        exit(1);
+    }
+    if (!(rc & O_NONBLOCK)) {
+        fprintf(stderr, "O_NONBLOCK is not set in the child.\n");
+        exit(1);
+    }
+    return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+    ac_cv_o_nonblock_inherited="yes"
+
+else
+
+    ac_cv_o_nonblock_inherited="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_o_nonblock_inherited" >&5
+$as_echo "$ac_cv_o_nonblock_inherited" >&6; }
+if test "$ac_cv_o_nonblock_inherited" = "yes"; then
+    o_nonblock_inherited=1
+else
+    o_nonblock_inherited=0
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether TCP_NODELAY and TCP_CORK can both be enabled" >&5
+$as_echo_n "checking whether TCP_NODELAY and TCP_CORK can both be enabled... " >&6; }
+if ${apr_cv_tcp_nodelay_with_cork+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+
+    int fd, flag, rc;
+
+    fd = socket(AF_INET, SOCK_STREAM, 0);
+    if (fd < 0) {
+       exit(1);
+    }
+
+    flag = 1;
+    rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof flag);
+    if (rc < 0) {
+        perror("setsockopt TCP_NODELAY");
+        exit(2);
+    }
+
+    flag = 1;
+    rc = setsockopt(fd, IPPROTO_TCP, TCP_CORK, &flag, sizeof flag);
+    if (rc < 0) {
+        perror("setsockopt TCP_CORK");
+        exit(3);
+    }
+
+    exit(0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_tcp_nodelay_with_cork=yes
+else
+  apr_cv_tcp_nodelay_with_cork=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_tcp_nodelay_with_cork" >&5
+$as_echo "$apr_cv_tcp_nodelay_with_cork" >&6; }
+
+if test "$apr_cv_tcp_nodelay_with_cork" = "yes"; then
+
+$as_echo "#define HAVE_TCP_NODELAY_WITH_CORK 1" >>confdefs.h
+
+fi
+
+
+# Look for a way of corking TCP...
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TCP_CORK in netinet/tcp.h" >&5
+$as_echo_n "checking for TCP_CORK in netinet/tcp.h... " >&6; }
+if ${ac_cv_define_TCP_CORK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <netinet/tcp.h>
+#ifdef TCP_CORK
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_TCP_CORK=yes
+else
+  ac_cv_define_TCP_CORK=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_TCP_CORK" >&5
+$as_echo "$ac_cv_define_TCP_CORK" >&6; }
+  if test "$ac_cv_define_TCP_CORK" = "yes"; then
+
+$as_echo "#define HAVE_TCP_CORK 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TCP_NOPUSH in netinet/tcp.h" >&5
+$as_echo_n "checking for TCP_NOPUSH in netinet/tcp.h... " >&6; }
+if ${ac_cv_define_TCP_NOPUSH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <netinet/tcp.h>
+#ifdef TCP_NOPUSH
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_TCP_NOPUSH=yes
+else
+  ac_cv_define_TCP_NOPUSH=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_TCP_NOPUSH" >&5
+$as_echo "$ac_cv_define_TCP_NOPUSH" >&6; }
+  if test "$ac_cv_define_TCP_NOPUSH" = "yes"; then
+
+$as_echo "#define HAVE_TCP_NOPUSH 1" >>confdefs.h
+
+  fi
+
+apr_tcp_nopush_flag="0"
+have_corkable_tcp="0"
+if test "x$ac_cv_define_TCP_CORK" = "xyes"; then
+    apr_tcp_nopush_flag="TCP_CORK"
+    have_corkable_tcp="1"
+else
+    case $host in
+        *linux*)
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <linux/socket.h>
+#ifdef TCP_CORK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+
+                apr_tcp_nopush_flag="3"
+                have_corkable_tcp="1"
+
+fi
+rm -f conftest*
+
+            ;;
+        *)
+            ;;
+    esac
+fi
+if test "x$ac_cv_define_TCP_NOPUSH" = "xyes"; then
+    apr_tcp_nopush_flag="TCP_NOPUSH"
+    have_corkable_tcp="1"
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SO_ACCEPTFILTER in sys/socket.h" >&5
+$as_echo_n "checking for SO_ACCEPTFILTER in sys/socket.h... " >&6; }
+if ${ac_cv_define_SO_ACCEPTFILTER+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/socket.h>
+#ifdef SO_ACCEPTFILTER
+YES_IS_DEFINED
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "YES_IS_DEFINED" >/dev/null 2>&1; then :
+  ac_cv_define_SO_ACCEPTFILTER=yes
+else
+  ac_cv_define_SO_ACCEPTFILTER=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_SO_ACCEPTFILTER" >&5
+$as_echo "$ac_cv_define_SO_ACCEPTFILTER" >&6; }
+  if test "$ac_cv_define_SO_ACCEPTFILTER" = "yes"; then
+
+$as_echo "#define HAVE_SO_ACCEPTFILTER 1" >>confdefs.h
+
+  fi
+
+if test "x$ac_cv_define_SO_ACCEPTFILTER" = "xyes"; then
+    acceptfilter="1"
+else
+    acceptfilter="0"
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether SCTP is supported" >&5
+$as_echo_n "checking whether SCTP is supported... " >&6; }
+if ${apr_cv_sctp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+  apr_cv_sctp=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_SCTP_H
+#include <netinet/sctp.h>
+#endif
+#ifdef HAVE_NETINET_SCTP_UIO_H
+#include <netinet/sctp_uio.h>
+#endif
+#include <stdlib.h>
+int main(void) {
+    int s, opt = 1;
+    if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)) < 0)
+       exit(1);
+    if (setsockopt(s, IPPROTO_SCTP, SCTP_NODELAY, &opt, sizeof(int)) < 0)
+       exit(2);
+    exit(0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_sctp=yes
+else
+  apr_cv_sctp=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_sctp" >&5
+$as_echo "$apr_cv_sctp" >&6; }
+
+if test "$apr_cv_sctp" = "yes"; then
+    have_sctp=1
+else
+    have_sctp=0
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct ip_mreq" >&5
+$as_echo_n "checking for struct ip_mreq... " >&6; }
+if ${apr_cv_struct_ipmreq+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <netinet/in.h>
+
+int
+main ()
+{
+
+    struct ip_mreq mip;
+    mip.imr_interface.s_addr = INADDR_ANY;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_struct_ipmreq=yes
+else
+  apr_cv_struct_ipmreq=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_struct_ipmreq" >&5
+$as_echo "$apr_cv_struct_ipmreq" >&6; }
+
+if test $apr_cv_struct_ipmreq = yes; then
+
+$as_echo "#define HAVE_STRUCT_IPMREQ 1" >>confdefs.h
+
+fi
+
+
+
+
+
+
+
+for ac_func in set_h_errno
+do :
+  ac_fn_c_check_func "$LINENO" "set_h_errno" "ac_cv_func_set_h_errno"
+if test "x$ac_cv_func_set_h_errno" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SET_H_ERRNO 1
+_ACEOF
+
+fi
+done
+
+
+echo "${nl}Checking for IPv6 Networking support..."
+
+# Check whether --enable-ipv6 was given.
+if test "${enable_ipv6+set}" = set; then :
+  enableval=$enable_ipv6;  if test "$enableval" = "no"; then
+        user_disabled_ipv6=1
+    fi
+else
+   user_disabled_ipv6=0
+fi
+
+
+case $host in
+  *)
+    broken_ipv6=0
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getaddrinfo" >&5
+$as_echo_n "checking for library containing getaddrinfo... " >&6; }
+if ${ac_cv_search_getaddrinfo+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getaddrinfo ();
+int
+main ()
+{
+return getaddrinfo ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket inet6; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_getaddrinfo=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_getaddrinfo+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_getaddrinfo+:} false; then :
+
+else
+  ac_cv_search_getaddrinfo=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getaddrinfo" >&5
+$as_echo "$ac_cv_search_getaddrinfo" >&6; }
+ac_res=$ac_cv_search_getaddrinfo
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gai_strerror" >&5
+$as_echo_n "checking for library containing gai_strerror... " >&6; }
+if ${ac_cv_search_gai_strerror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gai_strerror ();
+int
+main ()
+{
+return gai_strerror ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket inet6; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gai_strerror=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gai_strerror+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gai_strerror+:} false; then :
+
+else
+  ac_cv_search_gai_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gai_strerror" >&5
+$as_echo "$ac_cv_search_gai_strerror" >&6; }
+ac_res=$ac_cv_search_gai_strerror
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getnameinfo" >&5
+$as_echo_n "checking for library containing getnameinfo... " >&6; }
+if ${ac_cv_search_getnameinfo+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getnameinfo ();
+int
+main ()
+{
+return getnameinfo ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket inet6; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_getnameinfo=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_getnameinfo+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_getnameinfo+:} false; then :
+
+else
+  ac_cv_search_getnameinfo=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getnameinfo" >&5
+$as_echo "$ac_cv_search_getnameinfo" >&6; }
+ac_res=$ac_cv_search_getnameinfo
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+for ac_func in gai_strerror
+do :
+  ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"
+if test "x$ac_cv_func_gai_strerror" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GAI_STRERROR 1
+_ACEOF
+
+fi
+done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getaddrinfo" >&5
+$as_echo_n "checking for working getaddrinfo... " >&6; }
+if ${ac_cv_working_getaddrinfo+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+
+  ac_cv_working_getaddrinfo="yes"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+int main(void) {
+    struct addrinfo hints, *ai;
+    int error;
+
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_socktype = SOCK_STREAM;
+    error = getaddrinfo("127.0.0.1", NULL, &hints, &ai);
+    if (error) {
+        exit(1);
+    }
+    if (ai->ai_addr->sa_family != AF_INET) {
+        exit(1);
+    }
+    exit(0);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+  ac_cv_working_getaddrinfo="yes"
+
+else
+
+  ac_cv_working_getaddrinfo="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_getaddrinfo" >&5
+$as_echo "$ac_cv_working_getaddrinfo" >&6; }
+if test "$ac_cv_working_getaddrinfo" = "yes"; then
+  if test "$ac_cv_func_gai_strerror" != "yes"; then
+    ac_cv_working_getaddrinfo="no"
+  else
+
+$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+
+  fi
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for negative error codes for getaddrinfo" >&5
+$as_echo_n "checking for negative error codes for getaddrinfo... " >&6; }
+if ${ac_cv_negative_eai+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+
+  ac_cv_negative_eai="no"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+int main(void) {
+    if (EAI_ADDRFAMILY < 0) {
+        exit(0);
+    }
+    exit(1);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+  ac_cv_negative_eai="yes"
+
+else
+
+  ac_cv_negative_eai="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_negative_eai" >&5
+$as_echo "$ac_cv_negative_eai" >&6; }
+if test "$ac_cv_negative_eai" = "yes"; then
+
+$as_echo "#define NEGATIVE_EAI 1" >>confdefs.h
+
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getnameinfo" >&5
+$as_echo_n "checking for working getnameinfo... " >&6; }
+if ${ac_cv_working_getnameinfo+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+
+  ac_cv_working_getnameinfo="yes"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+int main(void) {
+    struct sockaddr_in sa;
+    char hbuf[256];
+    int error;
+
+    sa.sin_family = AF_INET;
+    sa.sin_port = 0;
+    sa.sin_addr.s_addr = inet_addr("127.0.0.1");
+#ifdef SIN6_LEN
+    sa.sin_len = sizeof(sa);
+#endif
+
+    error = getnameinfo((const struct sockaddr *)&sa, sizeof(sa),
+                        hbuf, 256, NULL, 0,
+                        NI_NUMERICHOST);
+    if (error) {
+        exit(1);
+    } else {
+        exit(0);
+    }
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+  ac_cv_working_getnameinfo="yes"
+
+else
+
+  ac_cv_working_getnameinfo="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_getnameinfo" >&5
+$as_echo "$ac_cv_working_getnameinfo" >&6; }
+if test "$ac_cv_working_getnameinfo" = "yes"; then
+
+$as_echo "#define HAVE_GETNAMEINFO 1" >>confdefs.h
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sockaddr_in6" >&5
+$as_echo_n "checking for sockaddr_in6... " >&6; }
+if ${ac_cv_define_sockaddr_in6+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+int
+main ()
+{
+
+struct sockaddr_in6 sa;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+    ac_cv_define_sockaddr_in6=yes
+
+else
+
+    ac_cv_define_sockaddr_in6=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_define_sockaddr_in6" >&5
+$as_echo "$ac_cv_define_sockaddr_in6" >&6; }
+
+if test "$ac_cv_define_sockaddr_in6" = "yes"; then
+  have_sockaddr_in6=1
+else
+  have_sockaddr_in6=0
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sockaddr_storage" >&5
+$as_echo_n "checking for sockaddr_storage... " >&6; }
+if ${apr_cv_define_sockaddr_storage+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+int
+main ()
+{
+struct sockaddr_storage sa;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  apr_cv_define_sockaddr_storage=yes
+else
+  apr_cv_define_sockaddr_storage=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_define_sockaddr_storage" >&5
+$as_echo "$apr_cv_define_sockaddr_storage" >&6; }
+
+if test "$apr_cv_define_sockaddr_storage" = "yes"; then
+  have_sa_storage=1
+else
+  have_sa_storage=0
+fi
+
+
+
+have_ipv6="0"
+if test "$user_disabled_ipv6" = 1; then
+    ipv6_result="no -- disabled by user"
+else
+    if test "x$broken_ipv6" = "x0"; then
+        if test "x$have_sockaddr_in6" = "x1"; then
+            if test "x$ac_cv_working_getaddrinfo" = "xyes"; then
+                if test "x$ac_cv_working_getnameinfo" = "xyes"; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working AI_ADDRCONFIG" >&5
+$as_echo_n "checking for working AI_ADDRCONFIG... " >&6; }
+if ${apr_cv_gai_addrconfig+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  if test "$cross_compiling" = yes; then :
+  apr_cv_gai_addrconfig=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+int main(int argc, char **argv) {
+    struct addrinfo hints, *ai;
+
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_socktype = SOCK_STREAM;
+    hints.ai_flags = AI_ADDRCONFIG;
+    return getaddrinfo("localhost", NULL, &hints, &ai) != 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  apr_cv_gai_addrconfig=yes
+else
+  apr_cv_gai_addrconfig=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_cv_gai_addrconfig" >&5
+$as_echo "$apr_cv_gai_addrconfig" >&6; }
+
+if test $apr_cv_gai_addrconfig = yes; then
+
+$as_echo "#define HAVE_GAI_ADDRCONFIG 1" >>confdefs.h
+
+fi
+
+                    have_ipv6="1"
+                    ipv6_result="yes"
+                else
+                    ipv6_result="no -- no getnameinfo"
+                fi
+            else
+                ipv6_result="no -- no working getaddrinfo"
+            fi
+        else
+            ipv6_result="no -- no sockaddr_in6"
+        fi
+    else
+        ipv6_result="no -- the platform has known problems supporting IPv6"
+    fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if APR supports IPv6" >&5
+$as_echo_n "checking if APR supports IPv6... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6_result" >&5
+$as_echo "$ipv6_result" >&6; }
+
+
+
+# hstrerror is only needed if IPv6 is not enabled,
+# so getaddrinfo/gai_strerror are not used.
+if test $have_ipv6 = 0; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing hstrerror" >&5
+$as_echo_n "checking for library containing hstrerror... " >&6; }
+if ${ac_cv_search_hstrerror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char hstrerror ();
+int
+main ()
+{
+return hstrerror ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' resolv; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_hstrerror=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_hstrerror+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_hstrerror+:} false; then :
+
+else
+  ac_cv_search_hstrerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_hstrerror" >&5
+$as_echo "$ac_cv_search_hstrerror" >&6; }
+ac_res=$ac_cv_search_hstrerror
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_HSTRERROR 1" >>confdefs.h
+
+fi
+
+fi
+
+
+for ac_header in langinfo.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_langinfo_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LANGINFO_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_func in nl_langinfo
+do :
+  ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo"
+if test "x$ac_cv_func_nl_langinfo" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NL_LANGINFO 1
+_ACEOF
+
+fi
+done
+
+
+
+
+  if test -z "$have_unicode_fs"; then
+    test "x$silent" != "xyes" && echo "  setting have_unicode_fs to \"0\""
+    have_unicode_fs="0"
+  fi
+
+
+
+
+  if test -z "$apr_has_xthread_files"; then
+    test "x$silent" != "xyes" && echo "  setting apr_has_xthread_files to \"0\""
+    apr_has_xthread_files="0"
+  fi
+
+
+
+
+  if test -z "$apr_procattr_user_set_requires_password"; then
+    test "x$silent" != "xyes" && echo "  setting apr_procattr_user_set_requires_password to \"0\""
+    apr_procattr_user_set_requires_password="0"
+  fi
+
+
+
+
+  if test -z "$apr_thread_func"; then
+    test "x$silent" != "xyes" && echo "  setting apr_thread_func to \"\""
+    apr_thread_func=""
+  fi
+
+
+
+
+  if test -z "$apr_has_user"; then
+    test "x$silent" != "xyes" && echo "  setting apr_has_user to \"1\""
+    apr_has_user="1"
+  fi
+
+
+
+
+echo "${nl}Restore user-defined environment settings..."
+
+
+set X $apr_ste_save_CPPFLAGS
+if test ${#} -eq 1; then
+  EXTRA_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS=
+else
+  if test "x$apr_ste_save_CPPFLAGS" = "x$CPPFLAGS"; then
+    EXTRA_CPPFLAGS=
+  else
+    EXTRA_CPPFLAGS=`echo "$CPPFLAGS" | sed -e "s%${apr_ste_save_CPPFLAGS}%%"`
+    CPPFLAGS="$apr_ste_save_CPPFLAGS"
+  fi
+fi
+if test "x$silent" != "xyes"; then
+  echo "  restoring CPPFLAGS to \"$CPPFLAGS\""
+  echo "  setting EXTRA_CPPFLAGS to \"$EXTRA_CPPFLAGS\""
+fi
+
+
+
+set X $apr_ste_save_CFLAGS
+if test ${#} -eq 1; then
+  EXTRA_CFLAGS="$CFLAGS"
+  CFLAGS=
+else
+  if test "x$apr_ste_save_CFLAGS" = "x$CFLAGS"; then
+    EXTRA_CFLAGS=
+  else
+    EXTRA_CFLAGS=`echo "$CFLAGS" | sed -e "s%${apr_ste_save_CFLAGS}%%"`
+    CFLAGS="$apr_ste_save_CFLAGS"
+  fi
+fi
+if test "x$silent" != "xyes"; then
+  echo "  restoring CFLAGS to \"$CFLAGS\""
+  echo "  setting EXTRA_CFLAGS to \"$EXTRA_CFLAGS\""
+fi
+
+
+
+set X $apr_ste_save_LDFLAGS
+if test ${#} -eq 1; then
+  EXTRA_LDFLAGS="$LDFLAGS"
+  LDFLAGS=
+else
+  if test "x$apr_ste_save_LDFLAGS" = "x$LDFLAGS"; then
+    EXTRA_LDFLAGS=
+  else
+    EXTRA_LDFLAGS=`echo "$LDFLAGS" | sed -e "s%${apr_ste_save_LDFLAGS}%%"`
+    LDFLAGS="$apr_ste_save_LDFLAGS"
+  fi
+fi
+if test "x$silent" != "xyes"; then
+  echo "  restoring LDFLAGS to \"$LDFLAGS\""
+  echo "  setting EXTRA_LDFLAGS to \"$EXTRA_LDFLAGS\""
+fi
+
+
+
+set X $apr_ste_save_LIBS
+if test ${#} -eq 1; then
+  EXTRA_LIBS="$LIBS"
+  LIBS=
+else
+  if test "x$apr_ste_save_LIBS" = "x$LIBS"; then
+    EXTRA_LIBS=
+  else
+    EXTRA_LIBS=`echo "$LIBS" | sed -e "s%${apr_ste_save_LIBS}%%"`
+    LIBS="$apr_ste_save_LIBS"
+  fi
+fi
+if test "x$silent" != "xyes"; then
+  echo "  restoring LIBS to \"$LIBS\""
+  echo "  setting EXTRA_LIBS to \"$EXTRA_LIBS\""
+fi
+
+
+
+set X $apr_ste_save_INCLUDES
+if test ${#} -eq 1; then
+  EXTRA_INCLUDES="$INCLUDES"
+  INCLUDES=
+else
+  if test "x$apr_ste_save_INCLUDES" = "x$INCLUDES"; then
+    EXTRA_INCLUDES=
+  else
+    EXTRA_INCLUDES=`echo "$INCLUDES" | sed -e "s%${apr_ste_save_INCLUDES}%%"`
+    INCLUDES="$apr_ste_save_INCLUDES"
+  fi
+fi
+if test "x$silent" != "xyes"; then
+  echo "  restoring INCLUDES to \"$INCLUDES\""
+  echo "  setting EXTRA_INCLUDES to \"$EXTRA_INCLUDES\""
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Use -no-install or -no-fast-install to link the test
+# programs on all platforms but Darwin, where it would cause
+# the programs to be linked against installed versions of
+# libapr instead of those just built.
+case $host in
+    *-apple-darwin*)
+        LT_NO_INSTALL=""
+        ;;
+    *-mingw*)
+        LT_NO_INSTALL="-no-fast-install"
+        ;;
+    *)
+        LT_NO_INSTALL="-no-install"
+        ;;
+esac
+
+
+#
+# BSD/OS (BSDi) needs to use a different include syntax in the Makefiles
+#
+case $host in
+*bsdi*)
+    # Check whether they've installed GNU make
+    if make --version > /dev/null 2>&1; then
+	INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
+	INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
+    else
+	# BSDi make
+	INCLUDE_RULES=".include \"$apr_buildout/apr_rules.mk\""
+	INCLUDE_OUTPUTS=".include \"$apr_srcdir/build-outputs.mk\""
+    fi
+    ;;
+*)
+    INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
+    INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
+    ;;
+esac
+
+
+
+ac_config_files="$ac_config_files Makefile include/apr.h build/apr_rules.mk build/pkg/pkginfo apr-$APR_MAJOR_VERSION-config:apr-config.in apr.pc"
+
+
+if test -d $srcdir/test; then
+   ac_config_files="$ac_config_files test/Makefile test/internal/Makefile"
+
+fi
+
+dir=include/arch/unix
+test -d $dir || $MKDIR $dir
+
+ac_config_commands="$ac_config_commands default"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+# Commands run at the beginning of config.status:
+APR_SAVE_HEADERS="include/apr.h include/arch/unix/apr_private.h"
+APR_MAJOR_VERSION=$APR_MAJOR_VERSION
+APR_PLATFORM=$host
+
+for apri in \${APR_SAVE_HEADERS}; do
+  test -r \${apri} && mv \${apri} \${apri}.save
+done
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "include/arch/unix/apr_private.h") CONFIG_HEADERS="$CONFIG_HEADERS include/arch/unix/apr_private.h" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "include/apr.h") CONFIG_FILES="$CONFIG_FILES include/apr.h" ;;
+    "build/apr_rules.mk") CONFIG_FILES="$CONFIG_FILES build/apr_rules.mk" ;;
+    "build/pkg/pkginfo") CONFIG_FILES="$CONFIG_FILES build/pkg/pkginfo" ;;
+    "apr-$APR_MAJOR_VERSION-config") CONFIG_FILES="$CONFIG_FILES apr-$APR_MAJOR_VERSION-config:apr-config.in" ;;
+    "apr.pc") CONFIG_FILES="$CONFIG_FILES apr.pc" ;;
+    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
+    "test/internal/Makefile") CONFIG_FILES="$CONFIG_FILES test/internal/Makefile" ;;
+    "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+ ;;
+    "default":C)
+# Commands run at the end of config.status:
+for i in $APR_SAVE_HEADERS; do
+  if cmp -s $i $i.save 2>/dev/null; then
+    mv $i.save $i
+    { $as_echo "$as_me:${as_lineno-$LINENO}: $i is unchanged" >&5
+$as_echo "$as_me: $i is unchanged" >&6;}
+  fi
+  rm -f $i.save
+done
+chmod +x apr-$APR_MAJOR_VERSION-config
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+

Deleted: vendor/apache/apr/1.5.2/configure.in
===================================================================
--- vendor/apache/apr/dist/configure.in	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/configure.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,2809 +0,0 @@
-dnl 
-dnl Autoconf configuration file for APR
-dnl 
-dnl Process this file with autoconf to produce a configure script.
-dnl Use ./buildconf to prepare build files and run autoconf for APR.
-
-AC_PREREQ(2.59)
-
-AC_INIT(build/apr_common.m4)
-AC_CONFIG_HEADER(include/arch/unix/apr_private.h)
-AC_CONFIG_AUX_DIR(build)
-AC_CONFIG_MACRO_DIR(build)
-
-dnl 
-dnl Include our own M4 macros along with those for libtool
-dnl 
-sinclude(build/apr_common.m4)
-sinclude(build/apr_network.m4)
-sinclude(build/apr_threads.m4)
-sinclude(build/apr_win32.m4)
-sinclude(build/apr_hints.m4)
-sinclude(build/libtool.m4)
-sinclude(build/ltsugar.m4)
-sinclude(build/argz.m4)
-sinclude(build/ltoptions.m4)
-sinclude(build/ltversion.m4)
-sinclude(build/lt~obsolete.m4)
-
-dnl Hard-coded top of apr_private.h:
-AH_TOP([
-#ifndef APR_PRIVATE_H
-#define APR_PRIVATE_H
-])
-
-dnl Hard-coded inclusion at the tail end of apr_private.h:
-AH_BOTTOM([
-/* switch this on if we have a BeOS version below BONE */
-#if BEOS && !HAVE_BONE_VERSION
-#define BEOS_R5 1
-#else
-#define BEOS_BONE 1
-#endif
-
-/*
- * Darwin 10's default compiler (gcc42) builds for both 64 and
- * 32 bit architectures unless specifically told not to.
- * In those cases, we need to override types depending on how
- * we're being built at compile time.
- * NOTE: This is an ugly work-around for Darwin's
- * concept of universal binaries, a single package
- * (executable, lib, etc...) which contains both 32
- * and 64 bit versions. The issue is that if APR is
- * built universally, if something else is compiled
- * against it, some bit sizes will depend on whether
- * it is 32 or 64 bit. This is determined by the __LP64__
- * flag. Since we need to support both, we have to
- * handle OS X unqiuely.
- */
-#ifdef DARWIN_10
-
-#undef APR_OFF_T_STRFN
-#undef APR_INT64_STRFN
-#undef SIZEOF_LONG
-#undef SIZEOF_SIZE_T
-#undef SIZEOF_SSIZE_T
-#undef SIZEOF_VOIDP
-#undef SIZEOF_STRUCT_IOVEC
-
-#ifdef __LP64__
- #define APR_INT64_STRFN strtol
- #define SIZEOF_LONG    8
- #define SIZEOF_SIZE_T  8
- #define SIZEOF_SSIZE_T 8
- #define SIZEOF_VOIDP   8
- #define SIZEOF_STRUCT_IOVEC 16
-#else
- #define APR_INT64_STRFN strtoll
- #define SIZEOF_LONG    4
- #define SIZEOF_SIZE_T  4
- #define SIZEOF_SSIZE_T 4
- #define SIZEOF_VOIDP   4
- #define SIZEOF_STRUCT_IOVEC 8
-#endif
-
-#undef APR_OFF_T_STRFN
-#define APR_OFF_T_STRFN APR_INT64_STRFN
- 
-
-#undef SETPGRP_VOID
-#ifdef __DARWIN_UNIX03
- #define SETPGRP_VOID 1
-#else
-/* #undef SETPGRP_VOID */
-#endif
- 
-#endif /* DARWIN_10 */
-
-/*
- * Include common private declarations.
- */
-#include "../apr_private_common.h"
-#endif /* APR_PRIVATE_H */
-])
-
-dnl Save user-defined environment settings for later restoration
-dnl
-APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
-APR_SAVE_THE_ENVIRONMENT(CFLAGS)
-APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
-APR_SAVE_THE_ENVIRONMENT(LIBS)
-APR_SAVE_THE_ENVIRONMENT(INCLUDES)
-
-dnl Generate ./config.nice for reproducing runs of configure
-dnl
-APR_CONFIG_NICE(config.nice)
-
-AC_CANONICAL_SYSTEM
-echo "Configuring APR library"
-echo "Platform: $host"
-
-dnl Some initial steps for configuration.  We setup the default directory
-dnl and which files are to be configured.
-
-dnl Setup the directory macros now
-
-# Absolute source/build directory
-apr_srcdir=`(cd $srcdir && pwd)`
-apr_builddir=`pwd`
-AC_SUBST(apr_srcdir)
-AC_SUBST(apr_builddir)
-
-if test "$apr_builddir" != "$apr_srcdir"; then
-  USE_VPATH=1
-  APR_CONFIG_LOCATION=build
-else
-  APR_CONFIG_LOCATION=source
-fi
-
-AC_SUBST(APR_CONFIG_LOCATION)
-
-# Libtool might need this symbol -- it must point to the location of
-# the generated libtool script (not necessarily the "top" build dir).
-#
-top_builddir="$apr_builddir"
-AC_SUBST(top_builddir)
-
-# Directory containing apr build macros, helpers, and make rules
-# NOTE: make rules (apr_rules.mk) will be in the builddir for vpath
-#
-apr_buildout=$apr_builddir/build
-apr_builders=$apr_srcdir/build
-AC_SUBST(apr_builders)
-
-MKDIR=$apr_builders/mkdir.sh
-
-dnl Initialize mkdir -p functionality.
-APR_MKDIR_P_CHECK($apr_builders/mkdir.sh)
-
-# get our version information
-get_version="$apr_builders/get-version.sh"
-version_hdr="$apr_srcdir/include/apr_version.h"
-APR_MAJOR_VERSION="`$get_version major $version_hdr APR`"
-APR_DOTTED_VERSION="`$get_version all $version_hdr APR`"
-
-AC_SUBST(APR_DOTTED_VERSION)
-AC_SUBST(APR_MAJOR_VERSION)
-
-echo "APR Version: ${APR_DOTTED_VERSION}"
-
-dnl Enable the layout handling code, then reparse the prefix-style
-dnl arguments due to autoconf being a PITA.
-APR_ENABLE_LAYOUT(apr)
-APR_PARSE_ARGUMENTS
-
-dnl Set optional CC hints here in case autoconf makes an inappropriate choice.
-dnl This allows us to suggest what the compiler should be, but still
-dnl allows the user to override CC externally.
-APR_CC_HINTS
-
-dnl Do the various CC checks *before* preloading values. The preload code
-dnl may need to use compiler characteristics to make decisions. This macro
-dnl can only be used once within a configure script, so this prevents a
-dnl preload section from invoking the macro to get compiler info.
-AC_PROG_CC
-
-dnl AC_PROG_SED is only avaliable in recent autoconf versions.
-dnl Use AC_CHECK_PROG instead if AC_PROG_SED is not present.
-ifdef([AC_PROG_SED],
-      [AC_PROG_SED],
-      [AC_CHECK_PROG(SED, sed, sed)])
-
-dnl Preload
-APR_PRELOAD
-
-dnl These added to allow default directories to be used...
-DEFAULT_OSDIR="unix"
-echo "(Default will be ${DEFAULT_OSDIR})"
-
-apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random"
-
-dnl Checks for programs.
-AC_PROG_MAKE_SET
-AC_PROG_CPP
-AC_PROG_AWK
-AC_PROG_LN_S
-AC_PROG_RANLIB
-AC_PROG_INSTALL
-AC_CHECK_PROG(RM, rm, rm)
-AC_CHECK_PROG(AS, as, as)
-AC_CHECK_PROG(ASCPP, cpp, cpp)
-AC_CHECK_TOOL(AR, ar, ar)
-
-dnl Various OS checks that apparently set required flags
-ifdef([AC_USE_SYSTEM_EXTENSIONS], [
-AC_USE_SYSTEM_EXTENSIONS
-], [
-AC_AIX
-AC_MINIX
-])
-
-AC_ISC_POSIX
-APR_EBCDIC
-
-dnl this is our library name
-APR_LIBNAME="apr${libsuffix}"
-AC_SUBST(APR_LIBNAME)
-
-dnl prep libtool
-dnl
-echo "performing libtool configuration..."
-
-AC_ARG_ENABLE(experimental-libtool,[  --enable-experimental-libtool Use experimental custom libtool],
-  [experimental_libtool=$enableval],[experimental_libtool=no])
-
-dnl Workarounds for busted Libtool 2.x when we don't call AC_PROG_LIBTOOL
-if test "x$Xsed" = "x"; then
-  Xsed="$SED -e 1s/^X//"
-fi
-
-case $host in
-*-os2*)
-    # Use a custom-made libtool replacement
-    echo "using aplibtool"
-    LIBTOOL="$srcdir/build/aplibtool"
-    gcc $CFLAGS $CPPFLAGS -o $LIBTOOL.exe $LIBTOOL.c
-    ;;
-*)
-    if test "x$LTFLAGS" = "x"; then
-        LTFLAGS='--silent'
-    fi
-    if test "$experimental_libtool" = "yes"; then
-        # Use a custom-made libtool replacement
-        echo "using jlibtool"
-        LIBTOOL="$apr_builddir/libtool"
-        LIBTOOL_SRC="$apr_srcdir/build/jlibtool.c"
-        $CC $CFLAGS $CPPFLAGS -o $LIBTOOL $LIBTOOL_SRC
-        eval `$apr_builddir/libtool --config | grep "^shlibpath_var=[[A-Z_]]*$"`
-        if test "x$shlibpath_var" = "x"; then
-            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
-        fi
-    else
-    dnl libtoolize requires that the following not be indented
-    dnl should become LT_INIT(win32-dll)
-AC_LIBTOOL_WIN32_DLL
-AC_PROG_LIBTOOL
-        # get libtool's setting of shlibpath_var
-        eval `grep "^shlibpath_var=[[A-Z_]]*$" $apr_builddir/libtool`
-        if test "x$shlibpath_var" = "x"; then
-            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
-        fi
-    fi
-    ;;
-esac
-
-AC_ARG_WITH(installbuilddir, [  --with-installbuilddir=DIR location to store APR build files (defaults to '${datadir}/build')],
-  [ installbuilddir=$withval ], [ installbuilddir="${datadir}/build-${APR_MAJOR_VERSION}" ] )
-AC_SUBST(installbuilddir)
-
-AC_ARG_WITH(libtool, [  --without-libtool       avoid using libtool to link the library],
-  [ use_libtool=$withval ], [ use_libtool="yes" ] )
-
-if test "x$use_libtool" = "xyes"; then
-      lt_compile='$(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -o $@ -c $< && touch $@'
-      LT_VERSION="-version-info `$get_version libtool $version_hdr APR`"
-      link="\$(LIBTOOL) \$(LTFLAGS) --mode=link \$(LT_LDFLAGS) \$(COMPILE) \$(LT_VERSION) \$(ALL_LDFLAGS) -o \$@"
-      so_ext='lo'
-      lib_target='-rpath $(libdir) $(OBJECTS)'
-      export_lib_target='-rpath \$(libdir) \$(OBJECTS)'
-else
-      lt_compile='$(COMPILE) -o $@ -c $<'
-      link='$(AR) cr $(TARGET_LIB) $(OBJECTS); $(RANLIB) $(TARGET_LIB)'
-      so_ext='o'
-      lib_target=''
-      export_lib_target=''
-fi
-
-case $host in
-    *-solaris2*)
-        apr_platform_runtime_link_flag="-R"
-        ;;
-    *)
-        ;;
-esac
-
-AC_SUBST(lt_compile)
-AC_SUBST(link)
-AC_SUBST(so_ext)
-AC_SUBST(lib_target)
-AC_SUBST(export_lib_target)
-AC_SUBST(shlibpath_var)
-AC_SUBST(LTFLAGS)
-AC_SUBST(LT_LDFLAGS)
-AC_SUBST(LT_VERSION)
-
-dnl ----------------------------- Checks for compiler flags
-nl='
-'
-echo "${nl}Check for compiler flags..."
-
-dnl AC_PROG_CC sets -g in CFLAGS (and -O2 for gcc) by default.
-dnl On OS/390 this causes the compiler to insert extra debugger
-dnl hook instructions.  That's fine for debug/maintainer builds, not fine
-dnl otherwise.
-
-case $host in
-    *os390)
-        if test "$ac_test_CFLAGS" != set; then
-           APR_REMOVEFROM(CFLAGS,-g)
-        fi
-        ;;
-esac
-
-AC_ARG_ENABLE(debug,[  --enable-debug          Turn on debugging and compile time warnings],
-  [APR_ADDTO(CFLAGS,-g)
-   if test "$GCC" = "yes"; then
-     APR_ADDTO(CFLAGS,-Wall)
-   elif test "$AIX_XLC" = "yes"; then
-     APR_ADDTO(CFLAGS,-qfullpath)
-   fi
-])dnl
-
-AC_ARG_ENABLE(maintainer-mode,[  --enable-maintainer-mode  Turn on debugging and compile time warnings],
-  [APR_ADDTO(CFLAGS,-g)
-   if test "$GCC" = "yes"; then
-     APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations])
-   elif test "$AIX_XLC" = "yes"; then
-     APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
-   fi
-])dnl
-
-AC_ARG_ENABLE(profile,[  --enable-profile        Turn on profiling for the build (GCC)],
-  if test "$GCC" = "yes"; then
-    APR_ADDTO(CFLAGS, -pg)
-    APR_REMOVEFROM(CFLAGS, -g)
-    if test "$host" = "i586-pc-beos"; then
-        APR_REMOVEFROM(CFLAGS, -O2)
-        APR_ADDTO(CFLAGS, -O1)
-        APR_ADDTO(LDFLAGS, -p)
-    fi
-  fi
-)dnl
-
-AC_ARG_ENABLE(pool-debug,
-  [  --enable-pool-debug[[=yes|no|verbose|verbose-alloc|lifetime|owner|all]]    Turn on pools debugging],
-  [ if test -z "$enableval"; then
-        APR_ADDTO(CPPFLAGS, -DAPR_POOL_DEBUG=1)
-    elif test ! "$enableval" = "no"; then
-        apr_pool_debug=1
-    
-        for i in $enableval
-        do
-            flag=0
-        
-            case $i in
-            yes)
-                flag=1
-                ;;
-            verbose)
-                flag=2
-                ;;
-            lifetime)
-                flag=4
-                ;;
-            owner)
-                flag=8
-                ;;
-            verbose-alloc)
-                flag=16
-                ;;
-            all)
-                apr_pool_debug=31
-                ;;
-            *)
-                ;;
-            esac
-
-            if test $flag -gt 0; then
-                apr_pool_debug=`expr '(' $apr_pool_debug - $apr_pool_debug % \
-                    '(' $flag '*' 2 ')' ')' + $flag + $apr_pool_debug % $flag`
-            fi
-        done
-      
-        APR_ADDTO(CPPFLAGS, -DAPR_POOL_DEBUG=$apr_pool_debug)
-    fi
-  ])
-
-if test "$host" = "i586-pc-beos"; then
-  AC_ARG_ENABLE(malloc-debug,[  --enable-malloc-debug   Switch on malloc_debug for BeOS],
-    APR_REMOVEFROM(CFLAGS, -O2)
-    APR_ADDTO(CPPFLAGS, -fcheck-memory-usage -D_KERNEL_MODE)
-  ) dnl
-fi
-
-# this is the place to put specific options for platform/compiler
-# combinations
-case "$host:$CC" in
-    *-hp-hpux*:cc )
-	APR_ADDTO(CFLAGS,[-Ae +Z])
-	case $host in
-	  ia64-* )
-	    ;;
-          * )
-	    if echo "$CFLAGS " | grep '+DA' >/dev/null; then :
-	    else
-	      APR_ADDTO(CFLAGS,[+DAportable])
-	    fi 
-	    ;;
-        esac
-	;;
-    powerpc-*-beos:mwcc* )
-	APR_SETVAR(CPP,[mwcc -E])
-	APR_SETVAR(CC,mwcc)
-	APR_SETVAR(AR,ar)
-	;;
-esac
-
-AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins],
-[AC_TRY_RUN([
-int main()
-{
-    unsigned long val = 1010, tmp, *mem = &val;
-
-    if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
-        return 1;
-
-    tmp = val;
-
-    if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
-        return 1;
-
-    if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
-        return 1;
-
-    tmp = 3030;
-
-    if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
-        return 1;
-
-    if (__sync_lock_test_and_set(&val, 4040) != 3030)
-        return 1;
-
-    mem = &tmp;
-
-    if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
-        return 1;
-
-    __sync_synchronize();
-
-    if (mem != &val)
-        return 1;
-
-    return 0;
-}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])])
-
-if test "$ap_cv_atomic_builtins" = "yes"; then
-    AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
-fi
-
-case $host in
-    powerpc-405-*)
-        # The IBM ppc405cr processor has a bugged stwcx instruction.
-        AC_DEFINE(PPC405_ERRATA, 1, [Define on PowerPC 405 where errata 77 applies])
-        ;;
-    *)
-        ;;
-esac
-
-dnl Check the depend program we can use
-APR_CHECK_DEPEND
-
-proc_mutex_is_global=0
-
-config_subdirs="none"
-INSTALL_SUBDIRS="none"
-OBJECTS_PLATFORM='$(OBJECTS_unix)'
-
-case $host in
-   i386-ibm-aix* | *-ibm-aix[[1-2]].* | *-ibm-aix3.* | *-ibm-aix4.1 | *-ibm-aix4.1.* | *-ibm-aix4.2 | *-ibm-aix4.2.*)
-       OSDIR="aix"
-       APR_ADDTO(LDFLAGS,-lld)
-       eolstr="\\n"
-       OBJECTS_PLATFORM='$(OBJECTS_aix)'
-       ;;
-   *-os2*)
-       APR_ADDTO(CPPFLAGS,-DOS2)
-       APR_ADDTO(CFLAGS,-Zmt)
-       AC_CHECK_LIB(bsd, random)
-       OSDIR="os2"
-       enable_threads="system_threads"
-       eolstr="\\r\\n"
-       file_as_socket="0"
-       proc_mutex_is_global=1
-       OBJECTS_PLATFORM='$(OBJECTS_os2)'
-       ;;
-   *beos*)
-       OSDIR="beos"
-       APR_ADDTO(CPPFLAGS,-DBEOS)
-       enable_threads="system_threads"
-       native_mmap_emul="1"
-       APR_CHECK_DEFINE(BONE_VERSION, sys/socket.h)
-       eolstr="\\n"
-       osver=`uname -r`
-       proc_mutex_is_global=1
-       OBJECTS_PLATFORM='$(OBJECTS_beos)'
-       case $osver in
-          5.0.4)
-             file_as_socket="1"
-             ;;
-          *)
-             file_as_socket="0"
-             ;;
-       esac
-       ;;
-   *os390)
-       OSDIR="os390"
-       OBJECTS_PLATFORM='$(OBJECTS_os390)'
-       eolstr="\\n"
-       ;;
-   *os400)
-       OSDIR="as400"
-       eolstr="\\n"
-       ;;
-   *mingw*)
-       OSDIR="win32"
-       enable_threads="system_threads"
-       eolstr="\\r\\n"
-       file_as_socket=0
-       proc_mutex_is_global=1
-       OBJECTS_PLATFORM='$(OBJECTS_win32)'
-       ;;
-   *cygwin*)
-       OSDIR="unix"
-       enable_threads="no"
-       eolstr="\\n"
-       ;;
-   *hpux10* ) 
-       enable_threads="no"
-       OSDIR="unix"
-       eolstr="\\n"
-       ;;
-   *)
-       OSDIR="unix"
-       eolstr="\\n"
-       ;;
-esac
-
-AC_SUBST(OBJECTS_PLATFORM)
-
-# Check whether LFS has explicitly been disabled
-AC_ARG_ENABLE(lfs,[  --disable-lfs           Disable large file support on 32-bit platforms],
-[apr_lfs_choice=$enableval], [apr_lfs_choice=yes])
-
-if test "$apr_lfs_choice" = "yes"; then
-   # Check whether the transitional LFS API is sufficient
-   AC_CACHE_CHECK([whether to enable -D_LARGEFILE64_SOURCE], [apr_cv_use_lfs64], [
-   apr_save_CPPFLAGS=$CPPFLAGS
-   CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
-   AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-
-void main(void)
-{
-    int fd, ret = 0;
-    struct stat64 st;
-    off64_t off = 4242;
-
-    if (sizeof(off64_t) != 8 || sizeof(off_t) != 4)
-       exit(1);
-    if ((fd = open("conftest.lfs", O_LARGEFILE|O_CREAT|O_WRONLY, 0644)) < 0)
-       exit(2);
-    if (ftruncate64(fd, off) != 0)
-       ret = 3;
-    else if (fstat64(fd, &st) != 0 || st.st_size != off)
-       ret = 4;
-    else if (lseek64(fd, off, SEEK_SET) != off)
-       ret = 5;
-    else if (close(fd) != 0)
-       ret = 6;
-    else if (lstat64("conftest.lfs", &st) != 0 || st.st_size != off)
-       ret = 7;
-    else if (stat64("conftest.lfs", &st) != 0 || st.st_size != off)
-       ret = 8;
-    unlink("conftest.lfs");
-
-    exit(ret);
-}], [apr_cv_use_lfs64=yes], [apr_cv_use_lfs64=no], [apr_cv_use_lfs64=no])
-   CPPFLAGS=$apr_save_CPPFLAGS])
-   if test "$apr_cv_use_lfs64" = "yes"; then
-      APR_ADDTO(CPPFLAGS, [-D_LARGEFILE64_SOURCE])
-   fi
-fi
-
-AC_ARG_ENABLE(nonportable-atomics,
-[  --enable-nonportable-atomics  Use optimized atomic code which may produce nonportable binaries],
-[if test $enableval = yes; then
-   force_generic_atomics=no
- else
-   force_generic_atomics=yes
- fi
-],
-[case $host_cpu in
-   i[[456]]86) force_generic_atomics=yes ;;
-   *) force_generic_atomics=no ;;
-esac
-])
-
-if test $force_generic_atomics = yes; then
-   AC_DEFINE([USE_ATOMICS_GENERIC], 1,
-             [Define if use of generic atomics is requested])
-fi
-
-AC_SUBST(proc_mutex_is_global)
-AC_SUBST(eolstr)
-AC_SUBST(INSTALL_SUBDIRS)
-
-# For some platforms we need a version string which allows easy numeric
-# comparisons.
-case $host in
-    *freebsd*)
-        if test -x /sbin/sysctl; then
-            os_version=`/sbin/sysctl -n kern.osreldate`
-        else
-            os_version=000000
-        fi
-        ;;
-    *linux*)
-        os_version=`uname -r | sed -e 's/\(.\)\.\(.\)\.\(.\).*/\1\2\3/'`
-        ;;
-    *os390)
-        os_version=`uname -r | sed -e 's/\.//g'`
-        ;;
-    *)
-        os_version=OS_VERSION_IS_NOT_SET
-        ;;
-esac
-
-echo "${nl}Checking for libraries..."
-
-dnl ----------------------------- Checks for Any required Libraries
-dnl Note: Autoconf will always append LIBS with an extra " " in AC_CHECK_LIB.
-dnl It should check for LIBS being empty and set LIBS equal to the new value 
-dnl without the extra " " in that case, but they didn't do that.  So, we
-dnl end up LIBS="-lm -lcrypt -lnsl  -ldl" which is an annoyance.
-case $host in
-   *mingw*)
-      APR_ADDTO(LIBS,[-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock])
-      ac_cv_func_CreateFileMapping=yes
-      ;;
-   *)
-      AC_SEARCH_LIBS(gethostbyname, nsl)
-      AC_SEARCH_LIBS(gethostname, nsl)
-      AC_SEARCH_LIBS(socket, socket)
-      AC_SEARCH_LIBS(crypt, crypt ufc)
-      AC_CHECK_LIB(truerand, main)
-      AC_SEARCH_LIBS(modf, m)
-       ;;
-esac
-
-dnl ----------------------------- Checking for Threads
-echo "${nl}Checking for Threads..."
-
-if test -z "$enable_threads"; then
-	AC_ARG_ENABLE(threads,
-	[  --enable-threads        Enable threading support in APR.],
-	[ enable_threads=$enableval] ,
-	[ APR_CHECK_PTHREADS_H([ enable_threads="pthread" ] ,
-	                       [ enable_threads="no" ] ) ] )
-fi
-
-if test "$enable_threads" = "no"; then
-    threads="0"
-    pthreadh="0"
-    pthreadser="0"
-else
-    if test "$enable_threads" = "pthread"; then
-# We have specified pthreads for our threading library, just make sure
-# that we have everything we need
-      APR_PTHREADS_CHECK_SAVE
-      APR_PTHREADS_CHECK
-      APR_CHECK_PTHREADS_H([
-          threads="1"
-          pthreadh="1"
-          pthreadser="1" ], [
-          threads="0"
-          pthreadh="0"
-          pthreadser="0"
-          APR_PTHREADS_CHECK_RESTORE ] )
-    elif test "$enable_threads" = "system_threads"; then
-        threads="1"
-        pthreadh="0"
-        pthreadser="0"
-    else
-# We basically specified that we wanted threads, but not how to implement
-# them.  In this case, just look for pthreads.  In the future, we can check
-# for other threading libraries as well.
-      APR_PTHREADS_CHECK_SAVE
-      APR_PTHREADS_CHECK
-      APR_CHECK_PTHREADS_H([
-          threads="1"
-          pthreadh="1"
-          pthreadser="1" ], [
-          threads="0"
-          pthreadser="0"
-          pthreadh="0"
-          APR_PTHREADS_CHECK_RESTORE ] )
-    fi
-    if test "$pthreadh" = "1"; then
-        APR_CHECK_PTHREAD_GETSPECIFIC_TWO_ARGS
-        APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG
-        APR_CHECK_PTHREAD_RECURSIVE_MUTEX
-        AC_CHECK_FUNCS([pthread_key_delete pthread_rwlock_init \
-                        pthread_attr_setguardsize pthread_yield])
-
-        if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then
-            dnl ----------------------------- Checking for pthread_rwlock_t
-            AC_CACHE_CHECK([for pthread_rwlock_t], [apr_cv_type_rwlock_t],
-            AC_TRY_COMPILE([#include <sys/types.h>
-#include <pthread.h>], [pthread_rwlock_t *rwlock;],
-              [apr_cv_type_rwlock_t=yes], [apr_cv_type_rwlock_t=no], 
-              [apr_cv_type_rwlock_t=no]))
-            if test "$apr_cv_type_rwlock_t" = "yes"; then
-               AC_DEFINE(HAVE_PTHREAD_RWLOCKS, 1, [Define if pthread rwlocks are available])
-            fi
-        fi
-
-        if test "$ac_cv_func_pthread_yield" = "no"; then
-            dnl ----------------------------- Checking for sched_yield
-            AC_CHECK_HEADERS([sched.h])
-            AC_CHECK_FUNCS([sched_yield])
-        fi
-    fi
-fi
-
-ac_cv_define_READDIR_IS_THREAD_SAFE=no
-ac_cv_define_GETHOSTBYNAME_IS_THREAD_SAFE=no
-ac_cv_define_GETHOSTBYADDR_IS_THREAD_SAFE=no
-ac_cv_define_GETSERVBYNAME_IS_THREAD_SAFE=no
-if test "$threads" = "1"; then
-    echo "APR will use threads"
-    AC_CHECK_LIB(c_r, readdir,
-        AC_DEFINE(READDIR_IS_THREAD_SAFE, 1, 
-                  [Define if readdir is thread safe]))
-    if test "x$apr_gethostbyname_is_thread_safe" = "x"; then
-        AC_CHECK_LIB(c_r, gethostbyname, apr_gethostbyname_is_thread_safe=yes)
-    fi
-    if test "$apr_gethostbyname_is_thread_safe" = "yes"; then
-        AC_DEFINE(GETHOSTBYNAME_IS_THREAD_SAFE, 1,
-                  [Define if gethostbyname is thread safe])
-    fi
-    if test "x$apr_gethostbyaddr_is_thread_safe" = "x"; then
-        AC_CHECK_LIB(c_r, gethostbyaddr, apr_gethostbyaddr_is_thread_safe=yes)
-    fi
-    if test "$apr_gethostbyaddr_is_thread_safe" = "yes"; then
-        AC_DEFINE(GETHOSTBYADDR_IS_THREAD_SAFE, 1, 
-                  [Define if gethostbyaddr is thread safe])
-    fi
-    if test "x$apr_getservbyname_is_thread_safe" = "x"; then
-        AC_CHECK_LIB(c_r, getservbyname, apr_getservbyname_is_thread_safe=yes)
-    fi
-    if test "$apr_getservbyname_is_thread_safe" = "yes"; then
-        AC_DEFINE(GETSERVBYNAME_IS_THREAD_SAFE, 1, 
-                  [Define if getservbyname is thread safe])
-    fi
-    AC_CHECK_FUNCS(gethostbyname_r gethostbyaddr_r getservbyname_r)
-else
-    echo "APR will be non-threaded"
-fi
-
-dnl Electric Fence malloc checker.
-dnl --with-efence specifies the path to Electric Fence.
-dnl This test should remain after the threads checks since libefence
-dnl may depend on libpthread.
-AC_ARG_WITH(efence, 
-  [  --with-efence[[=DIR]]     path to Electric Fence installation], 
-  [ apr_efence_dir="$withval"
-    if test "$apr_efence_dir" != "yes"; then
-      APR_ADDTO(LDFLAGS,[-L$apr_efence_dir/lib])
-      if test "x$apr_platform_runtime_link_flag" != "x"; then
-          APR_ADDTO(LDFLAGS, 
-                    [$apr_platform_runtime_link_flag$apr_efence_dir/lib])
-      fi
-    fi
-    AC_CHECK_LIB(efence, malloc, 
-                 [ APR_ADDTO(LIBS,-lefence) ],
-                 [ AC_MSG_ERROR(Electric Fence requested but not detected) ])
-  ])
-
-AC_CHECK_FUNCS(sigsuspend, [ have_sigsuspend="1" ], [ have_sigsuspend="0" ])
-AC_CHECK_FUNCS(sigwait, [ have_sigwait="1" ], [ have_sigwait="0" ]) 
-dnl AC_CHECK_FUNCS doesn't work for this on Tru64 since the function
-dnl is renamed in signal.h.  Todo: Autodetect
-case $host in
-    *alpha*-dec-osf* )
-        have_sigwait="1"
-        ;;
-esac
-
-AC_SUBST(threads)
-AC_SUBST(have_sigsuspend)
-AC_SUBST(have_sigwait)
-
-AC_CHECK_FUNCS(poll kqueue port_create)
-
-# Check for the Linux epoll interface; epoll* may be available in libc
-# but return ENOSYS on a pre-2.6 kernel, so do a run-time check.
-AC_CACHE_CHECK([for epoll support], [apr_cv_epoll],
-[AC_TRY_RUN([
-#include <sys/epoll.h>
-#include <unistd.h>
-
-int main()
-{
-    return epoll_create(5) == -1;
-}], [apr_cv_epoll=yes], [apr_cv_epoll=no], [apr_cv_epoll=no])])
-
-if test "$apr_cv_epoll" = "yes"; then
-   AC_DEFINE([HAVE_EPOLL], 1, [Define if the epoll interface is supported])
-fi
-
-dnl ----------------------------- Checking for extended file descriptor handling
-# test for epoll_create1
-AC_CACHE_CHECK([for epoll_create1 support], [apr_cv_epoll_create1],
-[AC_TRY_RUN([
-#include <sys/epoll.h>
-#include <unistd.h>
-
-int main()
-{
-    return epoll_create1(0) == -1;
-}], [apr_cv_epoll_create1=yes], [apr_cv_epoll_create1=no], [apr_cv_epoll_create1=no])])
-
-if test "$apr_cv_epoll_create1" = "yes"; then
-   AC_DEFINE([HAVE_EPOLL_CREATE1], 1, [Define if epoll_create1 function is supported])
-fi
-
-# test for dup3
-AC_CACHE_CHECK([for dup3 support], [apr_cv_dup3],
-[AC_TRY_RUN([
-#include <unistd.h>
-
-int main()
-{
-    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
-}], [apr_cv_dup3=yes], [apr_cv_dup3=no], [apr_cv_dup3=no])])
-
-if test "$apr_cv_dup3" = "yes"; then
-   AC_DEFINE([HAVE_DUP3], 1, [Define if dup3 function is supported])
-fi
-
-# test for accept4
-AC_CACHE_CHECK([for accept4 support], [apr_cv_accept4],
-[AC_TRY_RUN([
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <errno.h>
-
-#define A4_SOCK "./apr_accept4_test_socket"
-
-int main()
-{
-    pid_t pid;
-    int fd;
-    struct sockaddr_un loc, rem;
-    socklen_t rem_sz;
-
-    if ((pid = fork())) {
-        int status;
-
-        unlink(A4_SOCK);
-
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            goto cleanup_failure2;
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        if (bind(fd, (struct sockaddr *) &loc,
-                 sizeof(struct sockaddr_un)) == -1)
-            goto cleanup_failure;
-
-        if (listen(fd, 5) == -1)
-            goto cleanup_failure;
-
-        rem_sz = sizeof(struct sockaddr_un);
-        if (accept4(fd, (struct sockaddr *) &rem, &rem_sz, 0) == -1) {
-            goto cleanup_failure;
-        }
-        else {
-            close(fd);
-            waitpid(pid, &status, 0);
-            unlink(A4_SOCK);
-            return 0;
-        }
-
-cleanup_failure:
-        close(fd);
-cleanup_failure2:
-        kill(pid, SIGKILL);
-        waitpid(pid, &status, 0);
-        unlink(A4_SOCK);
-        return 1;
-    }
-    else {
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            return 1; /* this will be bad: we'll hang */
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        while(connect(fd, (struct sockaddr *) &loc,
-                      sizeof(struct sockaddr_un)) == -1 &&
-              (errno==ENOENT || errno==ECONNREFUSED))
-            ;
-
-        close(fd);
-        return 0;
-    }
-}], [apr_cv_accept4=yes], [apr_cv_accept4=no], [apr_cv_accept4=no])])
-
-if test "$apr_cv_accept4" = "yes"; then
-   AC_DEFINE([HAVE_ACCEPT4], 1, [Define if accept4 function is supported])
-fi
-
-AC_CACHE_CHECK([for SOCK_CLOEXEC support], [apr_cv_sock_cloexec],
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/socket.h>
-
-int main()
-{
-    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
-}], [apr_cv_sock_cloexec=yes], [apr_cv_sock_cloexec=no], [apr_cv_sock_cloexec=no])])
-
-if test "$apr_cv_sock_cloexec" = "yes"; then
-   AC_DEFINE([HAVE_SOCK_CLOEXEC], 1, [Define if the SOCK_CLOEXEC flag is supported])
-fi
-
-dnl ----------------------------- Checking for fdatasync: OS X doesn't have it
-AC_CHECK_FUNCS(fdatasync)
-
-dnl ----------------------------- Checking for extended file descriptor handling
-# test for epoll_create1
-AC_CACHE_CHECK([for epoll_create1 support], [apr_cv_epoll_create1],
-[AC_TRY_RUN([
-#include <sys/epoll.h>
-#include <unistd.h>
-
-int main()
-{
-    return epoll_create1(0) == -1;
-}], [apr_cv_epoll_create1=yes], [apr_cv_epoll_create1=no], [apr_cv_epoll_create1=no])])
-
-if test "$apr_cv_epoll_create1" = "yes"; then
-   AC_DEFINE([HAVE_EPOLL_CREATE1], 1, [Define if epoll_create1 function is supported])
-fi
-
-# test for dup3
-AC_CACHE_CHECK([for dup3 support], [apr_cv_dup3],
-[AC_TRY_RUN([
-#include <unistd.h>
-
-int main()
-{
-    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
-}], [apr_cv_dup3=yes], [apr_cv_dup3=no], [apr_cv_dup3=no])])
-
-if test "$apr_cv_dup3" = "yes"; then
-   AC_DEFINE([HAVE_DUP3], 1, [Define if dup3 function is supported])
-fi
-
-# test for accept4
-AC_CACHE_CHECK([for accept4 support], [apr_cv_accept4],
-[AC_TRY_RUN([
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <errno.h>
-
-#define A4_SOCK "./apr_accept4_test_socket"
-
-int main()
-{
-    pid_t pid;
-    int fd;
-    struct sockaddr_un loc, rem;
-    socklen_t rem_sz;
-
-    if ((pid = fork())) {
-        int status;
-
-        unlink(A4_SOCK);
-
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            goto cleanup_failure2;
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        if (bind(fd, (struct sockaddr *) &loc,
-                 sizeof(struct sockaddr_un)) == -1)
-            goto cleanup_failure;
-
-        if (listen(fd, 5) == -1)
-            goto cleanup_failure;
-
-        rem_sz = sizeof(struct sockaddr_un);
-        if (accept4(fd, (struct sockaddr *) &rem, &rem_sz, 0) == -1) {
-            goto cleanup_failure;
-        }
-        else {
-            close(fd);
-            waitpid(pid, &status, 0);
-            unlink(A4_SOCK);
-            return 0;
-        }
-
-cleanup_failure:
-        close(fd);
-cleanup_failure2:
-        kill(pid, SIGKILL);
-        waitpid(pid, &status, 0);
-        unlink(A4_SOCK);
-        return 1;
-    }
-    else {
-        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
-            return 1; /* this will be bad: we'll hang */
-
-        loc.sun_family = AF_UNIX;
-        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
-
-        while(connect(fd, (struct sockaddr *) &loc,
-                      sizeof(struct sockaddr_un)) == -1 &&
-              (errno==ENOENT || errno==ECONNREFUSED))
-            ;
-
-        close(fd);
-        return 0;
-    }
-}], [apr_cv_accept4=yes], [apr_cv_accept4=no], [apr_cv_accept4=no])])
-
-if test "$apr_cv_accept4" = "yes"; then
-   AC_DEFINE([HAVE_ACCEPT4], 1, [Define if accept4 function is supported])
-fi
-
-AC_CACHE_CHECK([for SOCK_CLOEXEC support], [apr_cv_sock_cloexec],
-[AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/socket.h>
-
-int main()
-{
-    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
-}], [apr_cv_sock_cloexec=yes], [apr_cv_sock_cloexec=no], [apr_cv_sock_cloexec=no])])
-
-if test "$apr_cv_sock_cloexec" = "yes"; then
-   AC_DEFINE([HAVE_SOCK_CLOEXEC], 1, [Define if the SOCK_CLOEXEC flag is supported])
-fi
-
-dnl ----------------------------- Checking for missing POSIX thread functions
-AC_CHECK_FUNCS([getpwnam_r getpwuid_r getgrnam_r getgrgid_r])
-
-dnl ----------------------------- Checking for Shared Memory Support 
-echo "${nl}Checking for Shared Memory Support..."
-
-# The real-time POSIX extensions (e.g. shm_*, sem_*) may only
-# be available if linking against librt.
-AC_SEARCH_LIBS(shm_open, rt)
-
-case $host in
- *-sysv*)
-   ac_includes_default="$ac_includes_default
-#if HAVE_SYS_MUTEX_H /* needed to define lock_t for sys/shm.h */
-# include <sys/mutex.h>
-#endif";;
-esac
-
-AC_CHECK_HEADERS([sys/types.h sys/mman.h sys/ipc.h sys/mutex.h sys/shm.h sys/file.h kernel/OS.h os2.h windows.h])
-AC_CHECK_FUNCS([mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \
-                create_area])
-
-APR_CHECK_DEFINE(MAP_ANON, sys/mman.h)
-AC_CHECK_FILE(/dev/zero)
-
-# Not all systems can mmap /dev/zero (such as HP-UX).  Check for that.
-if test "$ac_cv_func_mmap" = "yes" &&
-   test "$ac_cv_file__dev_zero" = "yes"; then
-    AC_MSG_CHECKING(for mmap that can map /dev/zero)
-    AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#ifdef HAVE_SYS_MMAN_H
-#include <sys/mman.h>
-#endif
-    int main()
-    {
-        int fd;
-        void *m;
-        fd = open("/dev/zero", O_RDWR);
-        if (fd < 0) {
-            return 1;
-        }
-        m = mmap(0, sizeof(void*), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
-        if (m == (void *)-1) {  /* aka MAP_FAILED */
-            return 2;
-        }
-        if (munmap(m, sizeof(void*)) < 0) {
-            return 3;
-        }
-        return 0;
-    }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no])
-
-    AC_MSG_RESULT($ac_cv_file__dev_zero)
-fi
-
-# Now we determine which one is our anonymous shmem preference.
-haveshmgetanon="0"
-havemmapzero="0"
-havemmapanon="0"
-APR_BEGIN_DECISION([anonymous shared memory allocation method])
-APR_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl
-             func:shmget func:shmat func:shmdt func:shmctl,
-             [haveshmgetanon="1"
-              APR_DECIDE(USE_SHMEM_SHMGET_ANON, [SysV IPC shmget()])])
-APR_IFALLYES(header:sys/mman.h func:mmap func:munmap file:/dev/zero,
-             [havemmapzero="1"
-              APR_DECIDE(USE_SHMEM_MMAP_ZERO, 
-                  [SVR4-style mmap() on /dev/zero])])
-APR_IFALLYES(header:sys/mman.h func:mmap func:munmap define:MAP_ANON,
-             [havemmapanon="1"
-              APR_DECIDE(USE_SHMEM_MMAP_ANON, 
-                  [4.4BSD-style mmap() via MAP_ANON])])
-APR_IFALLYES(header:os2.h,
-             [haveos2shm="1"
-              APR_DECIDE(USE_SHMEM_OS2_ANON, [OS/2 DosAllocSharedMem()])])
-APR_IFALLYES(header:kernel/OS.h func:create_area,
-             [havebeosshm="1"
-              APR_DECIDE(USE_SHMEM_BEOS_ANON,
-                         [BeOS areas])])
-APR_IFALLYES(header:windows.h func:CreateFileMapping,
-             [havewin32shm="1"
-              APR_DECIDE(USE_SHMEM_WIN32_ANON,
-                         [Windows CreateFileMapping()])])
-case $host in
-    *linux* ) 
-        # Linux has problems with MM_SHMT_MMANON even though it reports
-        # that it has it.
-        # FIXME - find exact 2.3 version that MMANON was fixed in.  It is
-        # confirmed fixed in 2.4 series.
-        if test $os_version -le "240"; then
-            APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_ZERO USE_SHMEM_SHMGET_ANON)
-        fi
-        ;;
-    *hpux11* ) 
-        APR_DECISION_OVERRIDE(USE_SHMEM_SHMGET_ANON)
-        ;;
-esac
-APR_END_DECISION
-AC_DEFINE_UNQUOTED($ac_decision)
-
-useshmgetanon="0"
-usemmapzero="0"
-usemmapanon="0"
-
-case $ac_decision in
-    USE_SHMEM_SHMGET_ANON )
-        useshmgetanon="1"
-        ;;
-    USE_SHMEM_MMAP_ZERO )
-        usemmapzero="1"
-        ;;
-    USE_SHMEM_MMAP_ANON )
-        usemmapanon="1"
-        ;;
-esac
-
-AC_SUBST(useshmgetanon)
-AC_SUBST(usemmapzero)
-AC_SUBST(usemmapanon)
-AC_SUBST(haveshmgetanon)
-AC_SUBST(havemmapzero)
-AC_SUBST(havemmapanon)
-
-# Now we determine which one is our name-based shmem preference.
-havemmaptmp="0"
-havemmapshm="0"
-haveshmget="0"
-havebeosarea="0"
-haveos2shm="0"
-havewin32shm="0"
-APR_BEGIN_DECISION([namebased memory allocation method])
-APR_IFALLYES(header:sys/mman.h func:mmap func:munmap,
-             [havemmaptmp="1"
-              APR_DECIDE(USE_SHMEM_MMAP_TMP, 
-                  [Classical mmap() on temporary file])])
-APR_IFALLYES(header:sys/mman.h func:mmap func:munmap func:shm_open dnl
-             func:shm_unlink,
-             [havemmapshm="1"
-              APR_DECIDE(USE_SHMEM_MMAP_SHM, 
-                  [mmap() via POSIX.1 shm_open() on temporary file])])
-APR_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl
-             func:shmget func:shmat func:shmdt func:shmctl,
-             [haveshmget="1"
-              APR_DECIDE(USE_SHMEM_SHMGET, [SysV IPC shmget()])])
-APR_IFALLYES(header:kernel/OS.h func:create_area,
-             [havebeosshm="1"
-              APR_DECIDE(USE_SHMEM_BEOS, [BeOS areas])])
-APR_IFALLYES(header:os2.h,
-             [haveos2shm="1"
-              APR_DECIDE(USE_SHMEM_OS2, [OS/2 DosAllocSharedMem()])])
-APR_IFALLYES(header:windows.h,
-             [havewin32shm="1"
-              APR_DECIDE(USE_SHMEM_WIN32, [Windows shared memory])])
-case $host in
-    *linux* ) 
-        # Linux has problems with MM_SHMT_MMANON even though it reports
-        # that it has it.
-        # FIXME - find exact 2.3 version that MMANON was fixed in.  It is
-        # confirmed fixed in 2.4 series.
-        if test $os_version -le "240"; then
-            APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_TMP USE_SHMEM_MMAP_SHM dnl
-                                  USE_SHMEM_SHMGET)
-        fi
-        ;;
-esac
-APR_END_DECISION
-AC_DEFINE_UNQUOTED($ac_decision)
-
-usemmaptmp="0"
-usemmapshm="0"
-useshmget="0"
-usebeosarea="0"
-useos2shm="0"
-usewin32shm="0"
-
-case $ac_decision in
-    USE_SHMEM_MMAP_TMP )
-        usemmaptmp="1"
-        ;;
-    USE_SHMEM_MMAP_SHM )
-        usemmapshm="1"
-        ;;
-    USE_SHMEM_SHMGET )
-        useshmget="1"
-        ;;
-    USE_SHMEM_BEOS )
-        usebeosarea="1"
-        ;;
-    USE_SHMEM_OS2 )
-        useos2shm="1"
-        ;;
-    USE_SHMEM_WIN32 )
-        usewin32shm="1"
-        ;;
-esac
-
-# Do we have any shared memory support?
-if test "$usemmaptmp$usemmapshm$usemmapzero$useshmget$usemmapanon$usebeosarea$useos2shm$usewin32shm" = "00000000"; then
-  sharedmem="0"
-else
-  sharedmem="1"
-fi
-
-AC_SUBST(usemmaptmp)
-AC_SUBST(usemmapshm)
-AC_SUBST(useshmget)
-AC_SUBST(usebeosarea)
-AC_SUBST(useos2shm)
-AC_SUBST(usewin32shm)
-AC_SUBST(havemmaptmp)
-AC_SUBST(havemmapshm)
-AC_SUBST(haveshmget)
-AC_SUBST(havebeosarea)
-AC_SUBST(haveos2shm)
-AC_SUBST(havewin32shm)
-AC_SUBST(sharedmem)
-
-dnl ----------------------------- Checks for Any required Functions
-dnl Checks for library functions. (N.B. poll is further down)
-
-AC_FUNC_ALLOCA
-
-AC_CHECK_FUNCS([calloc setsid isinf isnan \
-                getenv putenv setenv unsetenv \
-                writev getifaddrs utime utimes])
-AC_CHECK_FUNCS(setrlimit, [ have_setrlimit="1" ], [ have_setrlimit="0" ]) 
-AC_CHECK_FUNCS(getrlimit, [ have_getrlimit="1" ], [ have_getrlimit="0" ]) 
-sendfile="0"
-AC_CHECK_LIB(sendfile, sendfilev)
-AC_CHECK_FUNCS(sendfile send_file sendfilev, [ sendfile="1" ])
-
-dnl THIS MUST COME AFTER THE THREAD TESTS - FreeBSD doesn't always have a
-dnl threaded poll() and we don't want to use sendfile on early FreeBSD 
-dnl systems if we are also using threads.
-
-AC_ARG_WITH(sendfile, [  --with-sendfile         Override decision to use sendfile],
-  [ if test "$withval" = "yes"; then
-        sendfile="1"
-    else
-        sendfile="0"
-    fi ], [
-    orig_sendfile=$sendfile
-    case $host in
-        *freebsd*)
-            # FreeBSD < 4.2 has issues with threads+sendfile
-            if test $os_version -le "401999"; then
-                if test "$threads" = "1"; then
-                    sendfile="0"
-                fi
-            fi
-            ;;
-        *alpha*-dec-osf* )
-            sendfile="0"
-            ;;
-        s390-*-linux-gnu)
-            # disable sendfile support for 2.2 on S/390
-            if test $os_version -lt 240; then
-                sendfile="0"
-            fi
-            ;;
-        *aix*)
-            # compiler-independent check for 64-bit build
-            AC_CHECK_SIZEOF(void*, 4)
-            if test "x$ac_cv_sizeof_voidp" = "x8"; then
-                # sendfile not working for 64-bit build
-                sendfile="0"
-            fi
-            ;;
-    esac       
-    if test "$orig_sendfile" != "$sendfile"; then
-      echo "sendfile support disabled to avoid system problem"
-    fi ] )
-AC_SUBST(sendfile)
-
-AC_CHECK_FUNCS(sigaction, [ have_sigaction="1" ], [ have_sigaction="0" ]) 
-AC_DECL_SYS_SIGLIST
-
-AC_CHECK_FUNCS(fork, [ fork="1" ], [ fork="0" ])
-APR_CHECK_INET_ADDR
-APR_CHECK_INET_NETWORK
-AC_SUBST(apr_inaddr_none)
-AC_CHECK_FUNC(_getch)
-AC_CHECK_FUNCS(strerror_r, [ strerror_r="1" ], [ strerror_r="0" ])
-if test "$strerror_r" = "1"; then
-  APR_CHECK_STRERROR_R_RC
-fi
-AC_CHECK_FUNCS(mmap, [ mmap="1" ], [ mmap="0" ])
-if test "$native_mmap_emul" = "1"; then
-    mmap="1"
-fi
-AC_CHECK_FUNCS(memmove, [ have_memmove="1" ], [have_memmove="0" ])
-AC_CHECK_FUNCS([getpass getpassphrase gmtime_r localtime_r mkstemp])
-
-AC_SUBST(fork)
-AC_SUBST(have_inet_addr)
-AC_SUBST(tcp_nodelay_inherited)
-AC_SUBST(o_nonblock_inherited)
-AC_SUBST(have_inet_network)
-AC_SUBST(have_sigaction)
-AC_SUBST(have_setrlimit)
-AC_SUBST(have_getrlimit)
-AC_SUBST(mmap)
-AC_SUBST(have_memmove)
-
-APR_CHECK_SIGWAIT_ONE_ARG
-
-dnl ----------------------------- Checks for Any required Headers
-AC_HEADER_STDC
-
-APR_FLAG_HEADERS(
-    ByteOrder.h		\
-    conio.h		\
-    crypt.h		\
-    ctype.h		\
-    dir.h		\
-    dirent.h		\
-    dl.h		\
-    dlfcn.h		\
-    errno.h		\
-    fcntl.h		\
-    grp.h		\
-    io.h		\
-    limits.h		\
-    mach-o/dyld.h	\
-    malloc.h		\
-    memory.h		\
-    netdb.h		\
-    osreldate.h		\
-    poll.h		\
-    process.h		\
-    pwd.h		\
-    semaphore.h		\
-    signal.h		\
-    stdarg.h		\
-    stddef.h		\
-    stdio.h		\
-    stdlib.h		\
-    string.h		\
-    strings.h		\
-    sysapi.h		\
-    sysgtime.h		\
-    termios.h		\
-    time.h		\
-    tpfeq.h		\
-    tpfio.h		\
-    unistd.h		\
-    unix.h		\
-    windows.h		\
-    winsock2.h		\
-    arpa/inet.h		\
-    kernel/OS.h		\
-    net/errno.h		\
-    netinet/in.h	\
-    netinet/sctp.h      \
-    netinet/sctp_uio.h  \
-    sys/file.h		\
-    sys/ioctl.h         \
-    sys/mman.h		\
-    sys/param.h         \
-    sys/poll.h		\
-    sys/resource.h	\
-    sys/select.h	\
-    sys/sem.h		\
-    sys/sendfile.h	\
-    sys/signal.h	\
-    sys/socket.h	\
-    sys/sockio.h	\
-    sys/stat.h          \
-    sys/sysctl.h	\
-    sys/syslimits.h	\
-    sys/time.h		\
-    sys/types.h		\
-    sys/uio.h		\
-    sys/un.h		\
-    sys/wait.h)
-
-# IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from
-# being included by itself.  Check for <netinet/tcp.h> manually,
-# including another header file first.
-AC_CACHE_CHECK([for netinet/tcp.h], [apr_cv_hdr_netinet_tcp_h],
-[AC_TRY_CPP(
-[#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#include <netinet/tcp.h>
-], [apr_cv_hdr_netinet_tcp_h=yes], [apr_cv_hdr_netinet_tcp_h=no])])
-if test "$apr_cv_hdr_netinet_tcp_h" = "yes"; then
-   netinet_tcph=1
-   AC_DEFINE([HAVE_NETINET_TCP_H], 1, [Defined if netinet/tcp.h is present])
-else
-   netinet_tcph=0
-fi
-
-AC_SUBST(arpa_ineth)
-AC_SUBST(conioh)
-AC_SUBST(ctypeh)
-AC_SUBST(crypth)
-AC_SUBST(errnoh)
-AC_SUBST(direnth)
-AC_SUBST(fcntlh)
-AC_SUBST(ioh)
-AC_SUBST(limitsh)
-AC_SUBST(netdbh)
-AC_SUBST(sys_syslimitsh)
-AC_SUBST(netinet_inh)
-AC_SUBST(netinet_sctph)
-AC_SUBST(netinet_sctp_uioh)
-AC_SUBST(netinet_tcph)
-AC_SUBST(stdargh)
-AC_SUBST(stdioh)
-AC_SUBST(stdlibh)
-AC_SUBST(stringh)
-AC_SUBST(stringsh)
-AC_SUBST(sys_ioctlh)
-AC_SUBST(sys_sendfileh)
-AC_SUBST(sys_signalh)
-AC_SUBST(sys_socketh)
-AC_SUBST(sys_sockioh)
-AC_SUBST(sys_typesh)
-AC_SUBST(sys_timeh)
-AC_SUBST(sys_uioh)
-AC_SUBST(sys_unh)
-AC_SUBST(timeh)
-AC_SUBST(unistdh)
-AC_SUBST(signalh)
-AC_SUBST(sys_waith)
-AC_SUBST(processh)
-AC_SUBST(pthreadh)
-AC_SUBST(semaphoreh)
-AC_SUBST(windowsh)
-AC_SUBST(winsock2h)
-
-# Checking for h_errno in <netdb.h>
-if test "$netdbh" = "1"; then
-  APR_CHECK_H_ERRNO_FLAG
-  if test "$ac_cv_h_errno_cflags" = "no"; then
-    AC_MSG_ERROR([can not find h_errno in netdb.h])
-  fi
-fi
-
-AC_ARG_ENABLE(allocator-uses-mmap,
-  [  --enable-allocator-uses-mmap    Use mmap in apr_allocator instead of malloc (experimental)],
-  [ if test "$enableval" = "yes"; then
-        APR_IFALLYES(header:sys/mman.h func:mmap func:munmap define:MAP_ANON,
-                     [AC_DEFINE(APR_ALLOCATOR_USES_MMAP, 1,
-                                [Define if apr_allocator should use mmap]) ],
-		     [AC_MSG_ERROR([mmap()/MAP_ANON not supported]) ]
-		    )
-    fi ]
-)
-
-dnl ----------------------------- Checks for standard typedefs
-AC_TYPE_OFF_T
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-AC_TYPE_UID_T
-AC_CHECK_TYPE(ssize_t, int)
-AC_C_INLINE
-AC_C_CONST
-AC_FUNC_SETPGRP
-
-APR_CHECK_SOCKLEN_T
-
-dnl Checks for pointer size
-AC_CHECK_SIZEOF(void*, 4)
-
-if test "x$ac_cv_sizeof_voidp" != "x"; then
-    voidp_size=$ac_cv_sizeof_voidp
-else
-    AC_ERROR([Cannot determine size of void*])
-fi
-
-dnl Checks for integer size
-AC_CHECK_SIZEOF(char, 1)
-AC_CHECK_SIZEOF(int, 4)
-AC_CHECK_SIZEOF(long, 4)
-AC_CHECK_SIZEOF(short, 2)
-AC_CHECK_SIZEOF(long long, 8)
-
-if test "$ac_cv_sizeof_short" = "2"; then
-    short_value=short
-fi
-if test "$ac_cv_sizeof_int" = "4"; then
-    int_value=int
-fi
-# Now we need to find what apr_int64_t (sizeof == 8) will be.
-# The first match is our preference.
-if test "$ac_cv_sizeof_int" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val)'
-    uint64_literal='#define APR_UINT64_C(val) (val##U)'
-    int64_t_fmt='#define APR_INT64_T_FMT "d"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "u"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "x"'
-    int64_value="int"
-    long_value=int
-    int64_strfn="strtoi"
-elif test "$ac_cv_sizeof_long" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val##L)'
-    uint64_literal='#define APR_UINT64_C(val) (val##UL)'
-    int64_t_fmt='#define APR_INT64_T_FMT "ld"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "lu"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "lx"'
-    int64_value="long"
-    long_value=long
-    int64_strfn="strtol"
-elif test "$ac_cv_sizeof_long_long" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val##LL)'
-    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
-    # Linux, Solaris, FreeBSD all support ll with printf.
-    # BSD 4.4 originated 'q'.  Solaris is more popular and 
-    # doesn't support 'q'.  Solaris wins.  Exceptions can
-    # go to the OS-dependent section.
-    int64_t_fmt='#define APR_INT64_T_FMT "lld"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "llu"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "llx"'
-    int64_value="long long"
-    long_value="long long"
-    int64_strfn="strtoll"
-elif test "$ac_cv_sizeof_longlong" = "8"; then
-    int64_literal='#define APR_INT64_C(val) (val##LL)'
-    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
-    int64_t_fmt='#define APR_INT64_T_FMT "qd"'
-    uint64_t_fmt='#define APR_UINT64_T_FMT "qu"'
-    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "qx"'
-    int64_value="__int64"
-    long_value="__int64"
-    int64_strfn="strtoll"
-else
-    # int64_literal may be overriden if your compiler thinks you have
-    # a 64-bit value but APR does not agree.
-    AC_ERROR([could not detect a 64-bit integer type])
-fi
-
-# If present, allow the C99 macro INT64_C to override our conversion.
-#
-# HP-UX's ANSI C compiler provides this without any includes, so we
-# will first look for INT64_C without adding stdint.h
-AC_CACHE_CHECK([for INT64_C], [apr_cv_define_INT64_C], [
-AC_EGREP_CPP(YES_IS_DEFINED,
-[#ifdef INT64_C
-YES_IS_DEFINED
-#endif], [apr_cv_define_INT64_C=yes], [
-    # Now check for INT64_C in stdint.h
-    AC_EGREP_CPP(YES_IS_DEFINED, [#include <stdint.h>
-#ifdef INT64_C
-YES_IS_DEFINED
-#endif], [apr_cv_define_INT64_C=yes], [apr_cv_define_INT64_C=no])])])
-
-if test "$apr_cv_define_INT64_C" = "yes"; then
-    int64_literal='#define APR_INT64_C(val) INT64_C(val)'
-    uint64_literal='#define APR_UINT64_C(val) UINT64_C(val)'
-    stdint=1
-else
-    stdint=0
-fi
-
-if test "$ac_cv_type_size_t" = "yes"; then
-    size_t_value="size_t"
-else
-    size_t_value="apr_int32_t"
-fi
-if test "$ac_cv_type_ssize_t" = "yes"; then
-    ssize_t_value="ssize_t"
-else
-    ssize_t_value="apr_int32_t"
-fi
-if test "$ac_cv_socklen_t" = "yes"; then
-    socklen_t_value="socklen_t"
-    case $host in
-        *-hp-hpux*)
-            if test "$ac_cv_sizeof_long" = "8"; then
-                # 64-bit HP-UX requires 32-bit socklens in
-                # kernel, but user-space declarations say
-                # 64-bit (socklen_t == size_t == long).
-                # This will result in many compile warnings,
-                # but we're functionally busted otherwise.
-                socklen_t_value="int"
-            fi
-            ;;
-    esac
-else
-    socklen_t_value="int"
-fi
-
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], pid_t, 8)
-
-if test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then
-    pid_t_fmt='#define APR_PID_T_FMT "hd"'
-elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_int"; then
-    pid_t_fmt='#define APR_PID_T_FMT "d"'
-elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long"; then
-    pid_t_fmt='#define APR_PID_T_FMT "ld"'
-elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long_long"; then
-    pid_t_fmt='#define APR_PID_T_FMT APR_INT64_T_FMT'
-else
-    pid_t_fmt='#error Can not determine the proper size for pid_t'
-fi
-
-# Basically, we have tried to figure out the correct format strings
-# for APR types which vary between platforms, but we don't always get
-# it right.
-case $host in
-   s390*linux*)
-       # uniquely, the 31-bit Linux/s390 uses "unsigned long int"
-       # for size_t rather than "unsigned int":
-       size_t_fmt="lu"
-       ssize_t_fmt="ld"
-       ;;
-   *-os2*)
-       size_t_fmt="lu"
-       ;;
-   *-solaris*)
-       if test "$ac_cv_sizeof_long" = "8"; then
-         pid_t_fmt='#define APR_PID_T_FMT "d"'
-       else
-         pid_t_fmt='#define APR_PID_T_FMT "ld"'
-       fi
-       ;;
-   *aix4*|*aix5*)
-       ssize_t_fmt="ld"
-       size_t_fmt="lu"
-       ;;
-    *beos*)
-        ssize_t_fmt="ld"
-        size_t_fmt="ld"
-        ;;
-    *apple-darwin*)
-        osver=`uname -r`
-        case $osver in
-           [[0-7]].*)
-              ssize_t_fmt="d"
-              ;;
-           *)
-              ssize_t_fmt="ld"
-              ;;
-        esac
-        size_t_fmt="lu"
-        ;;
-    *-mingw*)
-        int64_t_fmt='#define APR_INT64_T_FMT "I64d"'
-        uint64_t_fmt='#define APR_UINT64_T_FMT "I64u"'
-        uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "I64x"'
-        int64_value="__int64"
-        long_value="__int64"
-        int64_strfn="_strtoi64"
-        ;; 
-esac
-
-APR_CHECK_TYPES_COMPATIBLE(ssize_t, int, [ssize_t_fmt="d"])
-APR_CHECK_TYPES_COMPATIBLE(ssize_t, long, [ssize_t_fmt="ld"])
-APR_CHECK_TYPES_COMPATIBLE(size_t, unsigned int, [size_t_fmt="u"])
-APR_CHECK_TYPES_COMPATIBLE(size_t, unsigned long, [size_t_fmt="lu"])
-
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], ssize_t, 8)
-
-AC_MSG_CHECKING([which format to use for apr_ssize_t])
-if test -n "$ssize_t_fmt"; then
-    AC_MSG_RESULT(%$ssize_t_fmt)
-elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_int"; then
-    ssize_t_fmt="d"
-    AC_MSG_RESULT(%d)
-elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_long"; then
-    ssize_t_fmt="ld"
-    AC_MSG_RESULT(%ld)
-else
-    AC_ERROR([could not determine the proper format for apr_ssize_t])
-fi
-
-ssize_t_fmt="#define APR_SSIZE_T_FMT \"$ssize_t_fmt\""
-
-APR_CHECK_SIZEOF_EXTENDED([#include <stddef.h>], size_t, 8)
-
-AC_MSG_CHECKING([which format to use for apr_size_t])
-if test -n "$size_t_fmt"; then
-    AC_MSG_RESULT(%$size_t_fmt)
-elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_int"; then
-    size_t_fmt="d"
-    AC_MSG_RESULT(%d)
-elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_long"; then
-    size_t_fmt="ld"
-    AC_MSG_RESULT(%ld)
-else
-    AC_ERROR([could not determine the proper format for apr_size_t])
-fi
-
-size_t_fmt="#define APR_SIZE_T_FMT \"$size_t_fmt\""
-
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8)
-
-if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
-    # Enable LFS
-    aprlfs=1
-    AC_CHECK_FUNCS([mmap64 sendfile64 sendfilev64 mkstemp64 readdir64_r])
-elif test "${ac_cv_sizeof_off_t}" != "${ac_cv_sizeof_size_t}"; then
-    # unsure of using -gt above is as portable, can can't forsee where
-    # off_t can legitimately be smaller than size_t
-    aprlfs=1
-else
-    aprlfs=0     
-fi
-
-AC_MSG_CHECKING([which type to use for apr_off_t])
-if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
-    # LFS is go!
-    off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
-    off_t_value='off64_t'
-    off_t_strfn='apr_strtoi64'
-elif test "${ac_cv_sizeof_off_t}x${ac_cv_sizeof_long}" = "4x4"; then
-    # Special case: off_t may change size with _FILE_OFFSET_BITS
-    # on 32-bit systems with LFS support.  To avoid compatibility
-    # issues when other packages do define _FILE_OFFSET_BITS,
-    # hard-code apr_off_t to long.
-    off_t_value=long
-    off_t_fmt='#define APR_OFF_T_FMT "ld"'
-    off_t_strfn='strtol'
-elif test "$ac_cv_type_off_t" = "yes"; then
-    off_t_value=off_t
-    # off_t is more commonly a long than an int; prefer that case
-    # where int and long are the same size.
-    if test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long"; then
-        off_t_fmt='#define APR_OFF_T_FMT "ld"'
-        off_t_strfn='strtol'
-    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_int"; then
-        off_t_fmt='#define APR_OFF_T_FMT "d"'
-        off_t_strfn='strtoi'
-    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long_long"; then
-        off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
-        off_t_strfn='apr_strtoi64'
-    else
-        AC_ERROR([could not determine the size of off_t])
-    fi
-    # Per OS tuning...
-    case $host in
-    *-mingw*)
-        off_t_value=apr_int64_t
-        off_t_fmt='#define APR_OFF_T_FMT "I64d"'
-        off_t_strfn='_strtoi64'
-        ;;
-    esac
-else
-   # Fallback on int
-   off_t_value=apr_int32_t
-   off_t_fmt=d
-   off_t_strfn='strtoi'
-fi
-AC_MSG_RESULT($off_t_value)
-
-# Regardless of whether _LARGEFILE64_SOURCE is used, on some
-# platforms _FILE_OFFSET_BITS will affect the size of ino_t and hence
-# the build-time ABI may be different from the apparent ABI when using
-# APR with another package which *does* define _FILE_OFFSET_BITS.
-# (Exactly as per the case above with off_t where LFS is *not* used)
-#
-# To be safe, hard-code apr_ino_t as 'unsigned long' or 'unsigned int'
-# iff that is exactly the size of ino_t here; otherwise use ino_t as existing
-# releases did.  To be correct, apr_ino_t should have been made an
-# ino64_t as apr_off_t is off64_t, but this can't be done now without
-# breaking ABI.
-
-# Per OS tuning...
-case $host in
-*mingw*)
-    ino_t_value=apr_int64_t
-    ;;
-*)
-    ino_t_value=ino_t
-    APR_CHECK_SIZEOF_EXTENDED(AC_INCLUDES_DEFAULT, ino_t, $ac_cv_sizeof_long)
-    if test $ac_cv_sizeof_ino_t = 4; then
-        if test $ac_cv_sizeof_long = 4; then
-            ino_t_value="unsigned long"
-        else
-            ino_t_value="unsigned int"
-        fi
-    fi
-    ;;
-esac
-AC_MSG_NOTICE([using $ino_t_value for ino_t])
-
-# Checks for endianness
-AC_C_BIGENDIAN
-if test $ac_cv_c_bigendian = yes; then
-    bigendian=1
-else
-    bigendian=0
-fi
-
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>
-#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)
-AC_SUBST(long_value)
-AC_SUBST(int64_value)
-AC_SUBST(off_t_value)
-AC_SUBST(size_t_value)
-AC_SUBST(ssize_t_value)
-AC_SUBST(socklen_t_value)
-AC_SUBST(int64_t_fmt) 
-AC_SUBST(uint64_t_fmt) 
-AC_SUBST(uint64_t_hex_fmt) 
-AC_SUBST(ssize_t_fmt) 
-AC_SUBST(size_t_fmt)
-AC_SUBST(off_t_fmt) 
-AC_SUBST(pid_t_fmt)
-AC_SUBST(int64_literal) 
-AC_SUBST(uint64_literal) 
-AC_SUBST(stdint) 
-AC_SUBST(bigendian)
-AC_SUBST(aprlfs)
-AC_SUBST(have_iovec)
-AC_SUBST(ino_t_value)
-
-dnl ----------------------------- Checking for string functions
-AC_CHECK_FUNCS(strnicmp, have_strnicmp="1", have_strnicmp="0")
-AC_CHECK_FUNCS(strncasecmp, have_strncasecmp="1", have_strncasecmp="0")
-AC_CHECK_FUNCS(stricmp, have_stricmp="1", have_stricmp="0")
-AC_CHECK_FUNCS(strcasecmp, have_strcasecmp="1", have_strcasecmp="0")
-AC_CHECK_FUNCS(strdup, have_strdup="1", have_strdup="0")
-AC_CHECK_FUNCS(strstr, have_strstr="1", have_strstr="0")
-AC_CHECK_FUNCS(memchr, have_memchr="1", have_memchr="0")
-AC_CHECK_FUNC($int64_strfn, have_int64_strfn="1", have_int64_strfn="0")
-
-dnl ----------------------------- We have a fallback position
-if test "$have_int64_strfn" = "0" && test "$int64_strfn" = "strtoll"; then
-    int64_strfn="strtoq"
-    AC_CHECK_FUNC(strtoq, [have_int64_strfn=1], [have_int64_strfn=0])
-fi
-
-if test "$have_int64_strfn" = "1"; then
-  AC_DEFINE_UNQUOTED(APR_INT64_STRFN, [$int64_strfn],
-      [Define as function which can be used for conversion of strings to apr_int64_t])
-fi
-
-AC_SUBST(have_strnicmp)
-AC_SUBST(have_strncasecmp)
-AC_SUBST(have_stricmp)
-AC_SUBST(have_strcasecmp)
-AC_SUBST(have_strdup)
-AC_SUBST(have_strstr)
-AC_SUBST(have_memchr)
-
-if test "$off_t_strfn" = "apr_strtoi64" && test "$have_int64_strfn" = "1"; then
-    off_t_strfn=$int64_strfn
-fi
-AC_DEFINE_UNQUOTED(APR_OFF_T_STRFN, [$off_t_strfn],
-          [Define as function used for conversion of strings to apr_off_t])
-
-dnl ----------------------------- Checking for DSO support
-echo "${nl}Checking for DSO..."
-AC_ARG_ENABLE(dso,
-  [  --disable-dso           Disable DSO support ],
-  [if test "x$enableval" = "xyes"; then
-      dsotype=any
-   else
-      dsotype=$enableval
-   fi
-  ], [dsotype=any])
-
-if test "$dsotype" = "any"; then
-    if test "$dsotype" = "any"; then
-      case $host in
-        *darwin[[0-8]]\.*) 
-          # Original Darwin, not for 9.0!:
-          AC_CHECK_FUNC(NSLinkModule, [dsotype=dyld]);;
-        hppa*-hpux[[1-9]]\.*|hppa*-hpux1[[01]]*)
-          # shl is specific to parisc hpux SOM binaries, not used for 64 bit
-          AC_CHECK_LIB(dld, shl_load, [have_shl=1])
-          if test "$ac_cv_sizeof_voidp$have_shl" = "41"; then
-            dsotype=shl; APR_ADDTO(LIBS,-ldld)
-          fi;;
-        *mingw*|*-os2*)
-          # several 'other's below probably belong up here.  If they always
-          # use a platform implementation and shouldn't test the dlopen/dlfcn
-          # features, then bring them up here.
-          # But if they -should- optionally use dlfcn, and/or need the config
-          # detection of dlopen/dlsym, do not move them up.
-          dsotype=other ;;
-      esac
-    fi
-    # Normal POSIX:
-    if test "$dsotype" = "any"; then
-      AC_CHECK_FUNC(dlopen, [dsotype=dlfcn])
-    fi
-    if test "$dsotype" = "any"; then
-      AC_CHECK_LIB(dl, dlopen, [dsotype=dlfcn; APR_ADDTO(LIBS,-ldl)])
-    fi
-    if test "$dsotype" = "dlfcn"; then
-        # ReliantUnix has dlopen() in libc but dlsym() in libdl :(
-        AC_CHECK_FUNC(dlsym, [], 
-          [AC_CHECK_LIB(dl, dlsym, 
-             [APR_ADDTO(LIBS, -ldl)],
-             [dsotype=any
-              echo "Weird: dlopen() was found but dlsym() was not found!"])])
-    fi
-    if test "$dsotype" = "any"; then
-      # BeOS:
-      AC_CHECK_LIB(root, load_image, [dsotype=other])
-    fi
-    # Everything else:
-    if test "$dsotype" = "any"; then
-        case $host in
-        *os390|*os400|*-aix*)
-          # Some -aix5 will use dl, no hassles.  Keep that pattern here.
-          dsotype=other ;;
-        *-hpux*)
-          if test "$have_shl" = "1"; then
-            dsotype=shl; APR_ADDTO(LIBS,-ldld)
-          fi;;
-        esac
-    fi
-fi
-
-if test "$dsotype" = "any"; then
-    AC_MSG_ERROR([Could not detect suitable DSO implementation])
-elif test "$dsotype" = "no"; then
-    aprdso="0"
-else
-    case "$dsotype" in
-    dlfcn) AC_DEFINE(DSO_USE_DLFCN, 1, [Define if DSO support uses dlfcn.h]);;
-    shl)   AC_DEFINE(DSO_USE_SHL, 1, [Define if DSO support uses shl_load]);;
-    dyld)  AC_DEFINE(DSO_USE_DYLD, 1, [Define if DSO support uses dyld.h]);;
-    other) ;; # Use whatever is in dso/OSDIR
-    *) AC_MSG_ERROR([Unknown DSO implementation "$dsotype"]);;
-    esac
-    aprdso="1"
-    apr_modules="$apr_modules dso"
-fi
-
-AC_SUBST(aprdso)
-
-dnl ----------------------------- Checking for Processes
-echo "${nl}Checking for Processes..."
-
-AC_CHECK_FUNCS(waitpid)
-
-AC_ARG_ENABLE(other-child,
-  [  --enable-other-child    Enable reliable child processes ],
-  [ if test "$enableval" = "yes"; then
-        oc="1"
-    else
-        oc="0"
-    fi ],
-  [ oc=1 ] ) 
-  
-AC_SUBST(oc) 
-
-if test -z "$have_proc_invoked"; then
-  have_proc_invoked="0"
-fi
-
-AC_SUBST(have_proc_invoked)
-
-AC_MSG_CHECKING(for Variable Length Arrays)
-APR_TRY_COMPILE_NO_WARNING([],
-[
-    int foo[argc];
-    foo[0] = 0;
-], vla_msg=yes, vla_msg=no )
-AC_MSG_RESULT([$vla_msg])
-if test "$vla_msg" = "yes"; then
-    AC_DEFINE(HAVE_VLA, 1, [Define if C compiler supports VLA])
-fi
-
-AC_CACHE_CHECK(struct rlimit,ac_cv_struct_rlimit,[
-AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-main()
-{
-    struct rlimit limit;
-    limit.rlim_cur = 0;
-    limit.rlim_max = 0;
-    exit(0);
-}], [
-    ac_cv_struct_rlimit=yes ], [
-    ac_cv_struct_rlimit=no ], [
-    ac_cv_struct_rlimit=no ] ) ] )
-struct_rlimit=0
-test "x$ac_cv_struct_rlimit" = xyes && struct_rlimit=1
-AC_SUBST(struct_rlimit)
-
-dnl ----------------------------- Checking for Locking Characteristics 
-echo "${nl}Checking for Locking..."
-
-AC_CHECK_FUNCS(semget semctl flock)
-AC_CHECK_HEADERS(semaphore.h OS.h)
-AC_SEARCH_LIBS(sem_open, rt)
-AC_CHECK_FUNCS(sem_close sem_unlink sem_post sem_wait create_sem)
-
-# Some systems return ENOSYS from sem_open.
-AC_CACHE_CHECK(for working sem_open,ac_cv_func_sem_open,[
-AC_TRY_RUN([
-#include <errno.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <semaphore.h>
-#ifndef SEM_FAILED
-#define SEM_FAILED (-1)
-#endif
-main()
-{
-    sem_t *psem;
-    const char *sem_name = "/apr_autoconf";
-
-    psem = sem_open(sem_name, O_CREAT, 0644, 1);
-    if (psem == (sem_t *)SEM_FAILED) {
-	exit(1);
-    }
-    sem_close(psem);
-    psem = sem_open(sem_name, O_CREAT | O_EXCL, 0644, 1);
-    if (psem != (sem_t *)SEM_FAILED) {
-        sem_close(psem);
-        exit(1);
-    }
-    sem_unlink(sem_name);
-    exit(0);
-}], [ac_cv_func_sem_open=yes], [ac_cv_func_sem_open=no],
-[ac_cv_func_sem_open=no])])
-
-# It's stupid, but not all platforms have union semun, even those that need it.
-AC_MSG_CHECKING(for union semun in sys/sem.h)
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/sem.h>
-],[
-union semun arg;
-semctl(0, 0, 0, arg);
-], [have_union_semun="1" union_semun=yes ]
-msg=yes, [
-have_union_semun="0"
-msg=no ] )
-AC_MSG_RESULT([$msg])
-AC_SUBST(have_union_semun)
-
-dnl Checks for libraries.
-APR_CHECK_DEFINE(LOCK_EX, sys/file.h)
-APR_CHECK_DEFINE(F_SETLK, fcntl.h)
-APR_CHECK_DEFINE(SEM_UNDO, sys/sem.h)
-
-# We are assuming that if the platform doesn't have POLLIN, it doesn't have
-# any POLL definitions.
-APR_CHECK_DEFINE_FILES(POLLIN, poll.h sys/poll.h)
-
-if test "$threads" = "1"; then
-    APR_CHECK_DEFINE(PTHREAD_PROCESS_SHARED, pthread.h)
-    AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
-    # Some systems have setpshared and define PROCESS_SHARED, but don't 
-    # really support PROCESS_SHARED locks.  So, we must validate that we 
-    # can go through the steps without receiving some sort of system error.
-    # Linux and older versions of AIX have this problem.
-    APR_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED func:pthread_mutexattr_setpshared, [
-      AC_CACHE_CHECK([for working PROCESS_SHARED locks], apr_cv_process_shared_works, [
-      AC_TRY_RUN([
-#include <sys/types.h>
-#include <pthread.h>
-        int main()
-        {
-            pthread_mutex_t mutex;
-            pthread_mutexattr_t attr;
-            if (pthread_mutexattr_init(&attr))
-                exit(1);
-            if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED))
-                exit(2);
-            if (pthread_mutex_init(&mutex, &attr))
-                exit(3);
-            if (pthread_mutexattr_destroy(&attr))
-                exit(4);
-            if (pthread_mutex_destroy(&mutex))
-                exit(5);
-            exit(0);
-        }], [apr_cv_process_shared_works=yes], [apr_cv_process_shared_works=no])])
-      # Override detection of pthread_mutexattr_setpshared
-      ac_cv_func_pthread_mutexattr_setpshared=$apr_cv_process_shared_works])
-
-    if test "$ac_cv_func_pthread_mutexattr_setpshared" = "yes"; then
-        APR_CHECK_PTHREAD_ROBUST_SHARED_MUTEX
-    fi
-fi
-
-# See which lock mechanisms we can support on this system.
-APR_IFALLYES(header:semaphore.h func:sem_open func:sem_close dnl
-             func:sem_unlink func:sem_post func:sem_wait,
-             hasposixser="1", hasposixser="0")
-APR_IFALLYES(func:semget func:semctl define:SEM_UNDO, hassysvser="1", 
-             hassysvser="0")
-APR_IFALLYES(func:flock define:LOCK_EX, hasflockser="1", hasflockser="0")
-APR_IFALLYES(header:fcntl.h define:F_SETLK, hasfcntlser="1", hasfcntlser="0")
-# note: the current APR use of shared mutex requires /dev/zero
-APR_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl
-             func:pthread_mutexattr_setpshared dnl
-             file:/dev/zero,
-             hasprocpthreadser="1", hasprocpthreadser="0")
-APR_IFALLYES(header:OS.h func:create_sem, hasbeossem="1", hasbeossem="0")
-
-# See which lock mechanism we'll select by default on this system.
-# The last APR_DECIDE to execute sets the default.
-# At this stage, we match the ordering in Apache 1.3
-# which is (highest to lowest): sysvsem -> fcntl -> flock.
-# POSIX semaphores and cross-process pthread mutexes are not
-# used by default since they have less desirable behaviour when
-# e.g. a process holding the mutex segfaults.
-# The BEOSSEM decision doesn't require any substitutions but is
-# included here to prevent the fcntl() branch being selected
-# from the decision making.
-APR_BEGIN_DECISION([apr_lock implementation method])
-APR_IFALLYES(func:flock define:LOCK_EX,
-            APR_DECIDE(USE_FLOCK_SERIALIZE, [4.2BSD-style flock()]))
-APR_IFALLYES(header:fcntl.h define:F_SETLK,
-            APR_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()]))
-APR_IFALLYES(func:semget func:semctl define:SEM_UNDO,
-            APR_DECIDE(USE_SYSVSEM_SERIALIZE, [SysV IPC semget()]))
-APR_IFALLYES(header:OS.h func:create_sem, 
-            APR_DECIDE(USE_BEOSSEM, [BeOS Semaphores])) 
-if test "x$apr_lock_method" != "x"; then
-    APR_DECISION_FORCE($apr_lock_method)
-fi
-APR_END_DECISION
-AC_DEFINE_UNQUOTED($ac_decision)
-
-flockser="0"
-sysvser="0"
-posixser="0"
-procpthreadser="0"
-fcntlser="0"
-case $ac_decision in
-    USE_FLOCK_SERIALIZE )
-        flockser="1"
-        ;;
-    USE_FCNTL_SERIALIZE )
-        fcntlser="1"
-        ;;
-    USE_SYSVSEM_SERIALIZE )
-        sysvser="1"
-        ;;
-    USE_POSIXSEM_SERIALIZE )
-        posixser="1"
-        ;;
-    USE_PROC_PTHREAD_SERIALIZE )
-        procpthreadser="1"
-        ;;
-    USE_BEOSSEM )
-        beossem="1"
-        ;;
-esac
-
-if test $hasfcntlser = "1"; then
-AC_MSG_CHECKING(if fcntl returns EACCES when F_SETLK is already held)
-AC_TRY_RUN([
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#if defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#include <fcntl.h>
-#include <errno.h>
-
-int fd;
-struct flock proc_mutex_lock_it = {0};
-const char *fname = "conftest.fcntl";
-
-int main()
-{
-    int rc, status;;
-    proc_mutex_lock_it.l_whence = SEEK_SET;   /* from current point */
-    proc_mutex_lock_it.l_type = F_WRLCK;      /* set exclusive/write lock */
-
-    fd = creat(fname, S_IRWXU);
-    unlink(fname);
-
-    if (rc = lockit()) {
-        exit(-1);
-    }
-
-    if (fork()) {
-        wait(&status);
-    }
-    else {
-      return(lockit());
-    }
-
-    close(fd);
-    exit(WEXITSTATUS(status) != EACCES);
-}
-
-int lockit() {
-    int rc;
-    do {
-        rc = fcntl(fd, F_SETLK, &proc_mutex_lock_it);
-    } while ( rc < 0 && errno == EINTR);
-
-    return (rc < 0) ? errno : 0;
-}], [apr_fcntl_tryacquire_eacces=1], [apr_fcntl_tryacquire_eacces=0], [apr_fcntl_tryacquire_eacces=0])
-fi
-
-if test "$apr_fcntl_tryacquire_eacces" = "1"; then
-  AC_DEFINE(FCNTL_TRYACQUIRE_EACCES, 1, [Define if fcntl returns EACCES when F_SETLK is already held])
-  AC_MSG_RESULT(yes)
-else
-  AC_MSG_RESULT(no)
-fi
-
-
-AC_SUBST(hasflockser)
-AC_SUBST(hassysvser)
-AC_SUBST(hasposixser)
-AC_SUBST(hasfcntlser)
-AC_SUBST(hasprocpthreadser)
-AC_SUBST(flockser)
-AC_SUBST(sysvser)
-AC_SUBST(posixser)
-AC_SUBST(fcntlser)
-AC_SUBST(procpthreadser)
-AC_SUBST(pthreadser)
-
-AC_MSG_CHECKING(if all interprocess locks affect threads)
-if test "x$apr_process_lock_is_global" = "xyes"; then
-    proclockglobal="1"
-    AC_MSG_RESULT(yes)
-else
-    proclockglobal="0"
-    AC_MSG_RESULT(no)
-fi
-
-AC_SUBST(proclockglobal)
-
-AC_MSG_CHECKING(if POSIX sems affect threads in the same process)
-if test "x$apr_posixsem_is_global" = "xyes"; then
-  AC_DEFINE(POSIXSEM_IS_GLOBAL, 1, 
-            [Define if POSIX semaphores affect threads within the process])
-  AC_MSG_RESULT(yes)
-else
-  AC_MSG_RESULT(no)
-fi
-
-AC_MSG_CHECKING(if SysV sems affect threads in the same process)
-if test "x$apr_sysvsem_is_global" = "xyes"; then
-  AC_DEFINE(SYSVSEM_IS_GLOBAL, 1,
-            [Define if SysV semaphores affect threads within the process])
-  AC_MSG_RESULT(yes)
-else
-  AC_MSG_RESULT(no)
-fi
-
-AC_MSG_CHECKING(if fcntl locks affect threads in the same process)
-if test "x$apr_fcntl_is_global" = "xyes"; then
-  AC_DEFINE(FCNTL_IS_GLOBAL, 1,
-            [Define if fcntl locks affect threads within the process])
-  AC_MSG_RESULT(yes)
-else
-  AC_MSG_RESULT(no)
-fi
-
-AC_MSG_CHECKING(if flock locks affect threads in the same process)
-if test "x$apr_flock_is_global" = "xyes"; then
-  AC_DEFINE(FLOCK_IS_GLOBAL, 1,
-            [Define if flock locks affect threads within the process])
-  AC_MSG_RESULT(yes)
-else
-  AC_MSG_RESULT(no)
-fi
-
-dnl ----------------------------- Checking for /dev/random 
-AC_MSG_CHECKING(for entropy source)
-
-why_no_rand=""
-
-AC_ARG_WITH(egd, 
-  [  --with-egd[[=DIR]]        use EGD-compatible socket],
-  [ AC_DEFINE(HAVE_EGD, 1, [Define if EGD is supported])
-    if test "$withval" = "yes"; then
-        AC_DEFINE_UNQUOTED(EGD_DEFAULT_SOCKET, ["/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"], 
-         [Define to list of paths to EGD sockets])
-    else
-        AC_DEFINE_UNQUOTED(EGD_DEFAULT_SOCKET, ["$withval"])
-    fi
-    AC_MSG_RESULT(EGD-compatible daemon)
-    rand="1"
-  ])
-
-if test "$rand" != "1"; then
-  AC_ARG_WITH(devrandom,
-    [  --with-devrandom[[=DEV]]  use /dev/random or compatible [[searches by default]]],
-    [ apr_devrandom="$withval" ], [ apr_devrandom="yes" ])
-
-  if test "$apr_devrandom" = "yes"; then
-    # /dev/random on OpenBSD doesn't provide random data, so
-    # prefer /dev/arandom, which does; see random(4).
-    for f in /dev/arandom /dev/urandom /dev/random; do
-      if test -r $f; then
-        apr_devrandom=$f
-        rand=1
-        break
-      fi
-    done
-  elif test "$apr_devrandom" != "no"; then
-    if test -r "$apr_devrandom"; then
-      rand="1"
-    else
-      AC_ERROR([$apr_devrandom not found or unreadable.])
-    fi
-  fi
-
-  if test "$rand" = "1"; then
-    case $host in
-      *os390)
-        if test $os_version -lt 1700; then
-          rand="0"
-          why_no_rand=" ($apr_devrandom unusable on z/OS before V1R7)"
-        fi
-        ;;
-    esac
-  fi
-
-  if test "$rand" = "1"; then
-    AC_DEFINE_UNQUOTED(DEV_RANDOM, ["$apr_devrandom"], [Define to path of random device])
-    AC_MSG_RESULT([$apr_devrandom])
-  fi
-fi
-
-if test "$rand" != "1"; then
-    case $host in
-        # we have built in support for OS/2
-        *-os2*)
-            AC_MSG_RESULT([Using OS/2 builtin random])
-            rand="1"
-            ;;
-        *)
-            if test "$rand" != "1"; then
-              if test "$ac_cv_lib_truerand_main" = "yes"; then
-                AC_DEFINE(HAVE_TRUERAND, 1, [Define if truerand is supported])
-                AC_MSG_RESULT(truerand)
-                rand="1"
-              else
-                AC_MSG_RESULT(not found$why_no_rand)
-                rand="0"
-              fi
-            fi
-            ;;
-    esac
-fi
-
-AC_SUBST(rand)
-
-dnl ----------------------------- Checking for File Info Support 
-echo "${nl}Checking for File Info Support..."
-AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_atimensec,
-struct stat.st_ctimensec, struct stat.st_mtimensec, struct stat.st_atim.tv_nsec,
-struct stat.st_ctim.tv_nsec, struct stat.st_mtim.tv_nsec,
-struct stat.st_atime_n, struct stat.st_ctime_n, struct stat.st_mtime_n],,,[
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif])
-
-APR_CHECK_DIRENT_INODE
-APR_CHECK_DIRENT_TYPE
-
-dnl ----------------------------- Checking for UUID Support 
-echo "${nl}Checking for OS UUID Support..."
-
-AC_CHECK_HEADERS(uuid.h uuid/uuid.h sys/uuid.h, break)
-
-apr_revert_save_LIBS=$LIBS
-
-# Prefer the flavor(s) that live in libc;
-AC_SEARCH_LIBS(uuid_create, uuid)
-AC_SEARCH_LIBS(uuid_generate, uuid)
-if test "$ac_cv_search_uuid_create" = "none required" -o \
-        "$ac_cv_search_uuid_generate" = "none required"; then
- LIBS=$apr_revert_save_LIBS
-fi
-
-AC_CHECK_FUNCS(uuid_create uuid_generate)
-
-AC_CACHE_CHECK([for os uuid usability], [apr_cv_osuuid], [
-# Ensure this test closely mirrors misc/unix/rand.c!
-uuid_includes="
-#if defined(HAVE_SYS_TYPES_H)
-#include <sys/types.h>
-#endif
-#if defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#if defined(HAVE_UUID_H)
-#include <uuid.h>
-#elif defined(HAVE_UUID_UUID_H)
-#include <uuid/uuid.h>
-#elif defined(HAVE_SYS_UUID_H)
-#include <sys/uuid.h>
-#endif
-"
- apr_cv_osuuid=no
- if test $ac_cv_func_uuid_create = yes; then
-  AC_TRY_LINK([$uuid_includes], [
-    uuid_t g;
-    uint32_t s;
-    uuid_create(&g, &s);
-    if (s == uuid_s_ok) s = 0;
-  ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_create=no])
- fi
- if test $ac_cv_func_uuid_generate = yes; then
-  AC_TRY_LINK([$uuid_includes], [
-    uuid_t g;
-    uuid_generate(g);
-  ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_generate=no])
- fi 
-])
-
-if test $apr_cv_osuuid = yes; then
-  osuuid="1"
-else
-  osuuid="0"
-  LIBS=$apr_revert_save_LIBS
-fi
-AC_SUBST(osuuid)
-
-
-dnl ----------------------------- Checking for Time Support 
-echo "${nl}Checking for Time Support..."
-
-AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[
-#include <sys/types.h>
-#include <time.h>])
-
-dnl ----------------------------- Checking for Networking Support 
-echo "${nl}Checking for Networking support..."
-APR_TYPE_IN_ADDR
-if test "$ac_cv_type_in_addr" = "yes"; then
-  have_in_addr="1"
-else
-  have_in_addr="0"
-fi
-
-AC_MSG_CHECKING([if fd == socket on this platform])
-if test "x$file_as_socket" != "x0" ; then
-    file_as_socket="1";
-    echo "yes"
-else
-    echo "no"
-fi
-
-AC_SUBST(have_in_addr)
-AC_SUBST(file_as_socket)
-
-if test "$ac_cv_func_poll $file_as_socket" = "yes 1"; then
-    AC_DEFINE(WAITIO_USES_POLL, 1,
-              [Define if apr_wait_for_io_or_timeout() uses poll(2)])
-fi
-
-# Check the types only if we have gethostbyname_r
-if test "$ac_cv_func_gethostbyname_r" = "yes"; then
-    APR_CHECK_GETHOSTBYNAME_R_STYLE
-fi
-
-# Check the types only if we have getservbyname_r
-if test "$ac_cv_func_getservbyname_r" = "yes"; then
-    APR_CHECK_GETSERVBYNAME_R_STYLE
-fi
-
-APR_CHECK_TCP_NODELAY_INHERITED
-APR_CHECK_O_NONBLOCK_INHERITED
-APR_CHECK_TCP_NODELAY_WITH_CORK
-
-# Look for a way of corking TCP...
-APR_CHECK_DEFINE(TCP_CORK, netinet/tcp.h)
-APR_CHECK_DEFINE(TCP_NOPUSH, netinet/tcp.h)
-apr_tcp_nopush_flag="0"
-have_corkable_tcp="0"
-if test "x$ac_cv_define_TCP_CORK" = "xyes"; then
-    apr_tcp_nopush_flag="TCP_CORK"
-    have_corkable_tcp="1"
-else
-    case $host in
-        *linux*)
-            AC_EGREP_CPP(yes,[
-#include <linux/socket.h>
-#ifdef TCP_CORK
-yes
-#endif
-            ],[
-                apr_tcp_nopush_flag="3"
-                have_corkable_tcp="1"
-            ])
-            ;;
-        *)
-            ;;
-    esac
-fi
-if test "x$ac_cv_define_TCP_NOPUSH" = "xyes"; then
-    apr_tcp_nopush_flag="TCP_NOPUSH"
-    have_corkable_tcp="1"
-fi
-
-APR_CHECK_DEFINE(SO_ACCEPTFILTER, sys/socket.h)
-if test "x$ac_cv_define_SO_ACCEPTFILTER" = "xyes"; then
-    acceptfilter="1"
-else
-    acceptfilter="0"
-fi
-
-APR_CHECK_SCTP
-APR_CHECK_MCAST
-
-AC_SUBST(apr_tcp_nopush_flag)
-AC_SUBST(have_corkable_tcp)
-AC_SUBST(acceptfilter)
-AC_SUBST(have_sctp)
-
-AC_CHECK_FUNCS(set_h_errno)
-
-echo "${nl}Checking for IPv6 Networking support..."
-dnl Start of checking for IPv6 support...
-
-AC_ARG_ENABLE(ipv6,
-  [  --disable-ipv6          Disable IPv6 support in APR.],
-  [ if test "$enableval" = "no"; then
-        user_disabled_ipv6=1
-    fi ],
-  [ user_disabled_ipv6=0 ] )
-
-case $host in
-  *)
-    broken_ipv6=0
-esac
-
-AC_SEARCH_LIBS(getaddrinfo, socket inet6)
-AC_SEARCH_LIBS(gai_strerror, socket inet6)
-AC_SEARCH_LIBS(getnameinfo, socket inet6)
-AC_CHECK_FUNCS(gai_strerror)
-APR_CHECK_WORKING_GETADDRINFO
-APR_CHECK_NEGATIVE_EAI
-APR_CHECK_WORKING_GETNAMEINFO
-APR_CHECK_SOCKADDR_IN6
-APR_CHECK_SOCKADDR_STORAGE
-
-have_ipv6="0"
-if test "$user_disabled_ipv6" = 1; then
-    ipv6_result="no -- disabled by user"
-else
-    if test "x$broken_ipv6" = "x0"; then
-        if test "x$have_sockaddr_in6" = "x1"; then
-            if test "x$ac_cv_working_getaddrinfo" = "xyes"; then
-                if test "x$ac_cv_working_getnameinfo" = "xyes"; then
-                    APR_CHECK_GETADDRINFO_ADDRCONFIG
-                    have_ipv6="1"
-                    ipv6_result="yes"
-                else
-                    ipv6_result="no -- no getnameinfo"
-                fi
-            else
-                ipv6_result="no -- no working getaddrinfo"
-            fi
-        else
-            ipv6_result="no -- no sockaddr_in6"
-        fi
-    else
-        ipv6_result="no -- the platform has known problems supporting IPv6"
-    fi
-fi
-
-AC_MSG_CHECKING(if APR supports IPv6)
-AC_MSG_RESULT($ipv6_result)
-
-AC_SUBST(have_ipv6)
-
-# hstrerror is only needed if IPv6 is not enabled,
-# so getaddrinfo/gai_strerror are not used.
-if test $have_ipv6 = 0; then
-  AC_SEARCH_LIBS(hstrerror, resolv,
-    [AC_DEFINE(HAVE_HSTRERROR, 1, [Define if hstrerror is present])])
-fi
-
-dnl Check for langinfo support
-
-AC_CHECK_HEADERS(langinfo.h)
-AC_CHECK_FUNCS(nl_langinfo)
-
-dnl ------------------------------ Defaults for some platform nuances
-
-dnl Do we have a Win32-centric Unicode FS?
-APR_SETIFNULL(have_unicode_fs, [0])
-AC_SUBST(have_unicode_fs)
-
-APR_SETIFNULL(apr_has_xthread_files, [0])
-AC_SUBST(apr_has_xthread_files)
-
-APR_SETIFNULL(apr_procattr_user_set_requires_password, [0])
-AC_SUBST(apr_procattr_user_set_requires_password)
-
-APR_SETIFNULL(apr_thread_func, [])
-AC_SUBST(apr_thread_func)
-
-APR_SETIFNULL(apr_has_user, [1])
-AC_SUBST(apr_has_user)
-
-dnl ----------------------------- Finalize the variables
-
-echo "${nl}Restore user-defined environment settings..."
-
-APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
-APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
-APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
-APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
-APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
-AC_SUBST(NOTEST_CPPFLAGS)
-AC_SUBST(NOTEST_CFLAGS)
-AC_SUBST(NOTEST_LDFLAGS)
-AC_SUBST(NOTEST_LIBS)
-AC_SUBST(NOTEST_INCLUDES)
-
-dnl ----------------------------- Construct the files
-
-AC_SUBST(LDLIBS)
-AC_SUBST(INCLUDES)
-AC_SUBST(AR)
-AC_SUBST(RM)
-AC_SUBST(OSDIR)
-AC_SUBST(DEFAULT_OSDIR)
-AC_SUBST(EXEEXT)
-AC_SUBST(LIBTOOL_LIBS)
-
-# Use -no-install to link the test programs on all platforms
-# but Darwin, where it would cause the programs to be linked
-# against installed versions of libapr instead of those just
-# built.
-case $host in
-*-apple-darwin*) LT_NO_INSTALL="" ;;
-*) LT_NO_INSTALL="-no-install" ;;
-esac
-AC_SUBST(LT_NO_INSTALL)
-
-#
-# BSD/OS (BSDi) needs to use a different include syntax in the Makefiles
-#
-case $host in
-*bsdi*)
-    # Check whether they've installed GNU make
-    if make --version > /dev/null 2>&1; then 
-	INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
-	INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
-    else
-	# BSDi make
-	INCLUDE_RULES=".include \"$apr_buildout/apr_rules.mk\""
-	INCLUDE_OUTPUTS=".include \"$apr_srcdir/build-outputs.mk\""
-    fi
-    ;;
-*)
-    INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
-    INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
-    ;;
-esac
-AC_SUBST(INCLUDE_RULES)
-AC_SUBST(INCLUDE_OUTPUTS)
-
-AC_CONFIG_FILES([Makefile
-                 include/apr.h
-                 build/apr_rules.mk
-                 build/pkg/pkginfo
-                 apr-$APR_MAJOR_VERSION-config:apr-config.in
-                 apr.pc])
-
-if test -d $srcdir/test; then
-   AC_CONFIG_FILES([test/Makefile test/internal/Makefile])
-fi
-
-dir=include/arch/unix
-test -d $dir || $MKDIR $dir
-
-AC_CONFIG_COMMANDS([default], [
-# Commands run at the end of config.status:
-for i in $APR_SAVE_HEADERS; do
-  if cmp -s $i $i.save 2>/dev/null; then
-    mv $i.save $i
-    AC_MSG_NOTICE([$i is unchanged])
-  fi
-  rm -f $i.save
-done
-chmod +x apr-$APR_MAJOR_VERSION-config
-],[
-dnl This section is expanded by configure UNQUOTED so variable 
-dnl references must be backslash-escaped as necessary.
-
-# Commands run at the beginning of config.status:
-APR_SAVE_HEADERS="include/apr.h include/arch/unix/apr_private.h"
-APR_MAJOR_VERSION=$APR_MAJOR_VERSION
-APR_PLATFORM=$host
-
-for apri in \${APR_SAVE_HEADERS}; do
-  test -r \${apri} && mv \${apri} \${apri}.save
-done
-])
-
-AC_OUTPUT

Copied: vendor/apache/apr/1.5.2/configure.in (from rev 9273, vendor/apache/apr/dist/configure.in)
===================================================================
--- vendor/apache/apr/1.5.2/configure.in	                        (rev 0)
+++ vendor/apache/apr/1.5.2/configure.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,2864 @@
+dnl 
+dnl Autoconf configuration file for APR
+dnl 
+dnl Process this file with autoconf to produce a configure script.
+dnl Use ./buildconf to prepare build files and run autoconf for APR.
+
+AC_PREREQ(2.59)
+
+AC_INIT(build/apr_common.m4)
+AC_CONFIG_HEADER(include/arch/unix/apr_private.h)
+AC_CONFIG_AUX_DIR(build)
+AC_CONFIG_MACRO_DIR(build)
+
+dnl 
+dnl Include our own M4 macros along with those for libtool
+dnl 
+sinclude(build/apr_common.m4)
+sinclude(build/apr_network.m4)
+sinclude(build/apr_threads.m4)
+sinclude(build/apr_win32.m4)
+sinclude(build/apr_hints.m4)
+sinclude(build/libtool.m4)
+sinclude(build/ltsugar.m4)
+sinclude(build/argz.m4)
+sinclude(build/ltoptions.m4)
+sinclude(build/ltversion.m4)
+sinclude(build/lt~obsolete.m4)
+
+dnl Hard-coded top of apr_private.h:
+AH_TOP([
+#ifndef APR_PRIVATE_H
+#define APR_PRIVATE_H
+])
+
+dnl Hard-coded inclusion at the tail end of apr_private.h:
+AH_BOTTOM([
+/* switch this on if we have a BeOS version below BONE */
+#if defined(BEOS) && !defined(HAVE_BONE_VERSION)
+#define BEOS_R5 1
+#else
+#define BEOS_BONE 1
+#endif
+
+/*
+ * Darwin 10's default compiler (gcc42) builds for both 64 and
+ * 32 bit architectures unless specifically told not to.
+ * In those cases, we need to override types depending on how
+ * we're being built at compile time.
+ * NOTE: This is an ugly work-around for Darwin's
+ * concept of universal binaries, a single package
+ * (executable, lib, etc...) which contains both 32
+ * and 64 bit versions. The issue is that if APR is
+ * built universally, if something else is compiled
+ * against it, some bit sizes will depend on whether
+ * it is 32 or 64 bit. This is determined by the __LP64__
+ * flag. Since we need to support both, we have to
+ * handle OS X unqiuely.
+ */
+#ifdef DARWIN_10
+
+#undef APR_OFF_T_STRFN
+#undef APR_INT64_STRFN
+#undef SIZEOF_LONG
+#undef SIZEOF_SIZE_T
+#undef SIZEOF_SSIZE_T
+#undef SIZEOF_VOIDP
+#undef SIZEOF_STRUCT_IOVEC
+
+#ifdef __LP64__
+ #define APR_INT64_STRFN strtol
+ #define SIZEOF_LONG    8
+ #define SIZEOF_SIZE_T  8
+ #define SIZEOF_SSIZE_T 8
+ #define SIZEOF_VOIDP   8
+ #define SIZEOF_STRUCT_IOVEC 16
+#else
+ #define APR_INT64_STRFN strtoll
+ #define SIZEOF_LONG    4
+ #define SIZEOF_SIZE_T  4
+ #define SIZEOF_SSIZE_T 4
+ #define SIZEOF_VOIDP   4
+ #define SIZEOF_STRUCT_IOVEC 8
+#endif
+
+#undef APR_OFF_T_STRFN
+#define APR_OFF_T_STRFN APR_INT64_STRFN
+ 
+
+#undef SETPGRP_VOID
+#ifdef __DARWIN_UNIX03
+ #define SETPGRP_VOID 1
+#else
+/* #undef SETPGRP_VOID */
+#endif
+ 
+#endif /* DARWIN_10 */
+
+/*
+ * Include common private declarations.
+ */
+#include "../apr_private_common.h"
+#endif /* APR_PRIVATE_H */
+])
+
+dnl Save user-defined environment settings for later restoration
+dnl
+APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
+APR_SAVE_THE_ENVIRONMENT(CFLAGS)
+APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
+APR_SAVE_THE_ENVIRONMENT(LIBS)
+APR_SAVE_THE_ENVIRONMENT(INCLUDES)
+
+dnl Generate ./config.nice for reproducing runs of configure
+dnl
+APR_CONFIG_NICE(config.nice)
+
+AC_CANONICAL_SYSTEM
+echo "Configuring APR library"
+echo "Platform: $host"
+
+dnl Some initial steps for configuration.  We setup the default directory
+dnl and which files are to be configured.
+
+dnl Setup the directory macros now
+
+# Absolute source/build directory
+apr_srcdir=`(cd $srcdir && pwd)`
+apr_builddir=`pwd`
+AC_SUBST(apr_srcdir)
+AC_SUBST(apr_builddir)
+
+if test "$apr_builddir" != "$apr_srcdir"; then
+  USE_VPATH=1
+  APR_CONFIG_LOCATION=build
+else
+  APR_CONFIG_LOCATION=source
+fi
+
+AC_SUBST(APR_CONFIG_LOCATION)
+
+# Libtool might need this symbol -- it must point to the location of
+# the generated libtool script (not necessarily the "top" build dir).
+#
+top_builddir="$apr_builddir"
+AC_SUBST(top_builddir)
+
+# Directory containing apr build macros, helpers, and make rules
+# NOTE: make rules (apr_rules.mk) will be in the builddir for vpath
+#
+apr_buildout=$apr_builddir/build
+apr_builders=$apr_srcdir/build
+AC_SUBST(apr_builders)
+
+MKDIR=$apr_builders/mkdir.sh
+
+dnl Initialize mkdir -p functionality.
+APR_MKDIR_P_CHECK($apr_builders/mkdir.sh)
+
+# get our version information
+get_version="$apr_builders/get-version.sh"
+version_hdr="$apr_srcdir/include/apr_version.h"
+APR_MAJOR_VERSION="`$get_version major $version_hdr APR`"
+APR_DOTTED_VERSION="`$get_version all $version_hdr APR`"
+
+AC_SUBST(APR_DOTTED_VERSION)
+AC_SUBST(APR_MAJOR_VERSION)
+
+echo "APR Version: ${APR_DOTTED_VERSION}"
+
+dnl Enable the layout handling code, then reparse the prefix-style
+dnl arguments due to autoconf being a PITA.
+APR_ENABLE_LAYOUT(apr)
+APR_PARSE_ARGUMENTS
+
+dnl Set optional CC hints here in case autoconf makes an inappropriate choice.
+dnl This allows us to suggest what the compiler should be, but still
+dnl allows the user to override CC externally.
+APR_CC_HINTS
+
+dnl Do the various CC checks *before* preloading values. The preload code
+dnl may need to use compiler characteristics to make decisions. This macro
+dnl can only be used once within a configure script, so this prevents a
+dnl preload section from invoking the macro to get compiler info.
+AC_PROG_CC
+
+dnl AC_PROG_SED is only avaliable in recent autoconf versions.
+dnl Use AC_CHECK_PROG instead if AC_PROG_SED is not present.
+ifdef([AC_PROG_SED],
+      [AC_PROG_SED],
+      [AC_CHECK_PROG(SED, sed, sed)])
+
+dnl Preload
+APR_PRELOAD
+
+dnl These added to allow default directories to be used...
+DEFAULT_OSDIR="unix"
+echo "(Default will be ${DEFAULT_OSDIR})"
+
+apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random"
+
+dnl Checks for programs.
+AC_PROG_MAKE_SET
+AC_PROG_CPP
+AC_PROG_AWK
+AC_PROG_LN_S
+AC_PROG_RANLIB
+AC_PROG_INSTALL
+AC_CHECK_PROG(RM, rm, rm)
+AC_CHECK_PROG(AS, as, as)
+AC_CHECK_PROG(ASCPP, cpp, cpp)
+AC_CHECK_TOOL(AR, ar, ar)
+
+dnl Various OS checks that apparently set required flags
+ifdef([AC_USE_SYSTEM_EXTENSIONS], [
+AC_USE_SYSTEM_EXTENSIONS
+], [
+AC_AIX
+AC_MINIX
+])
+
+AC_ISC_POSIX
+APR_EBCDIC
+
+dnl this is our library name
+APR_LIBNAME="apr${libsuffix}"
+AC_SUBST(APR_LIBNAME)
+
+dnl prep libtool
+dnl
+echo "performing libtool configuration..."
+
+AC_ARG_ENABLE(experimental-libtool,[  --enable-experimental-libtool Use experimental custom libtool],
+  [experimental_libtool=$enableval],[experimental_libtool=no])
+
+dnl Workarounds for busted Libtool 2.x when we don't call AC_PROG_LIBTOOL
+if test "x$Xsed" = "x"; then
+  Xsed="$SED -e 1s/^X//"
+fi
+
+case $host in
+*-os2*)
+    # Use a custom-made libtool replacement
+    echo "using aplibtool"
+    LIBTOOL="$srcdir/build/aplibtool"
+    gcc $CFLAGS $CPPFLAGS -o $LIBTOOL.exe $LIBTOOL.c
+    ;;
+*)
+    if test "x$LTFLAGS" = "x"; then
+        LTFLAGS='--silent'
+    fi
+    if test "$experimental_libtool" = "yes"; then
+        # Use a custom-made libtool replacement
+        echo "using jlibtool"
+        LIBTOOL="$apr_builddir/libtool"
+        LIBTOOL_SRC="$apr_srcdir/build/jlibtool.c"
+        $CC $CFLAGS $CPPFLAGS -o $LIBTOOL $LIBTOOL_SRC
+        eval `$apr_builddir/libtool --config | grep "^shlibpath_var=[[A-Z_]]*$"`
+        if test "x$shlibpath_var" = "x"; then
+            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
+        fi
+    else
+    dnl libtoolize requires that the following not be indented
+    dnl should become LT_INIT(win32-dll)
+AC_LIBTOOL_WIN32_DLL
+AC_PROG_LIBTOOL
+        # get libtool's setting of shlibpath_var
+        eval `grep "^shlibpath_var=[[A-Z_]]*$" $apr_builddir/libtool`
+        if test "x$shlibpath_var" = "x"; then
+            shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR
+        fi
+    fi
+    ;;
+esac
+
+AC_ARG_WITH(installbuilddir, [  --with-installbuilddir=DIR location to store APR build files (defaults to '${datadir}/build')],
+  [ installbuilddir=$withval ], [ installbuilddir="${datadir}/build-${APR_MAJOR_VERSION}" ] )
+AC_SUBST(installbuilddir)
+
+AC_ARG_WITH(libtool, [  --without-libtool       avoid using libtool to link the library],
+  [ use_libtool=$withval ], [ use_libtool="yes" ] )
+
+if test "x$use_libtool" = "xyes"; then
+      lt_compile='$(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -o $@ -c $< && touch $@'
+      LT_VERSION="-version-info `$get_version libtool $version_hdr APR`"
+      link="\$(LIBTOOL) \$(LTFLAGS) --mode=link \$(COMPILE) \$(LT_LDFLAGS) \$(LT_VERSION) \$(ALL_LDFLAGS) -o \$@"
+      so_ext='lo'
+      lib_target='-rpath $(libdir) $(OBJECTS)'
+      export_lib_target='-rpath \$(libdir) \$(OBJECTS)'
+else
+      lt_compile='$(COMPILE) -o $@ -c $<'
+      link='$(AR) cr $(TARGET_LIB) $(OBJECTS); $(RANLIB) $(TARGET_LIB)'
+      so_ext='o'
+      lib_target=''
+      export_lib_target=''
+fi
+
+case $host in
+    *-solaris2*)
+        apr_platform_runtime_link_flag="-R"
+        ;;
+    *-mingw* | *-cygwin*)
+        LT_LDFLAGS="$LT_LDFLAGS -no-undefined"
+        ;;
+    *)
+        ;;
+esac
+
+AC_SUBST(lt_compile)
+AC_SUBST(link)
+AC_SUBST(so_ext)
+AC_SUBST(lib_target)
+AC_SUBST(export_lib_target)
+AC_SUBST(shlibpath_var)
+AC_SUBST(LTFLAGS)
+AC_SUBST(LT_LDFLAGS)
+AC_SUBST(LT_VERSION)
+
+dnl ----------------------------- Checks for compiler flags
+nl='
+'
+echo "${nl}Check for compiler flags..."
+
+dnl AC_PROG_CC sets -g in CFLAGS (and -O2 for gcc) by default.
+dnl On OS/390 this causes the compiler to insert extra debugger
+dnl hook instructions.  That's fine for debug/maintainer builds, not fine
+dnl otherwise.
+
+case $host in
+    *os390)
+        if test "$ac_test_CFLAGS" != set; then
+           APR_REMOVEFROM(CFLAGS,-g)
+        fi
+        ;;
+esac
+
+AC_ARG_ENABLE(debug,[  --enable-debug          Turn on debugging and compile time warnings],
+  [APR_ADDTO(CFLAGS,-g)
+   if test "$GCC" = "yes"; then
+     APR_ADDTO(CFLAGS,-Wall)
+   elif test "$AIX_XLC" = "yes"; then
+     APR_ADDTO(CFLAGS,-qfullpath)
+   fi
+])dnl
+
+AC_ARG_ENABLE(maintainer-mode,[  --enable-maintainer-mode  Turn on debugging and compile time warnings],
+  [APR_ADDTO(CFLAGS,-g)
+   if test "$GCC" = "yes"; then
+     APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations])
+   elif test "$AIX_XLC" = "yes"; then
+     APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
+   fi
+])dnl
+
+AC_ARG_ENABLE(profile,[  --enable-profile        Turn on profiling for the build (GCC)],
+  if test "$GCC" = "yes"; then
+    APR_ADDTO(CFLAGS, -pg)
+    APR_REMOVEFROM(CFLAGS, -g)
+    if test "$host" = "i586-pc-beos"; then
+        APR_REMOVEFROM(CFLAGS, -O2)
+        APR_ADDTO(CFLAGS, -O1)
+        APR_ADDTO(LDFLAGS, -p)
+    fi
+  fi
+)dnl
+
+AC_ARG_ENABLE(pool-debug,
+  [  --enable-pool-debug[[=yes|no|verbose|verbose-alloc|lifetime|owner|all]]    Turn on pools debugging],
+  [ if test -z "$enableval"; then
+        APR_ADDTO(CPPFLAGS, -DAPR_POOL_DEBUG=1)
+    elif test ! "$enableval" = "no"; then
+        apr_pool_debug=1
+    
+        for i in $enableval
+        do
+            flag=0
+        
+            case $i in
+            yes)
+                flag=1
+                ;;
+            verbose)
+                flag=2
+                ;;
+            lifetime)
+                flag=4
+                ;;
+            owner)
+                flag=8
+                ;;
+            verbose-alloc)
+                flag=16
+                ;;
+            all)
+                apr_pool_debug=31
+                ;;
+            *)
+                ;;
+            esac
+
+            if test $flag -gt 0; then
+                apr_pool_debug=`expr '(' $apr_pool_debug - $apr_pool_debug % \
+                    '(' $flag '*' 2 ')' ')' + $flag + $apr_pool_debug % $flag`
+            fi
+        done
+      
+        APR_ADDTO(CPPFLAGS, -DAPR_POOL_DEBUG=$apr_pool_debug)
+    fi
+  ])
+
+if test "$host" = "i586-pc-beos"; then
+  AC_ARG_ENABLE(malloc-debug,[  --enable-malloc-debug   Switch on malloc_debug for BeOS],
+    APR_REMOVEFROM(CFLAGS, -O2)
+    APR_ADDTO(CPPFLAGS, -fcheck-memory-usage -D_KERNEL_MODE)
+  ) dnl
+fi
+
+# this is the place to put specific options for platform/compiler
+# combinations
+case "$host:$CC" in
+    *-hp-hpux*:cc )
+	APR_ADDTO(CFLAGS,[-Ae +Z])
+	case $host in
+	  ia64-* )
+	    ;;
+          * )
+	    if echo "$CFLAGS " | grep '+DA' >/dev/null; then :
+	    else
+	      APR_ADDTO(CFLAGS,[+DAportable])
+	    fi 
+	    ;;
+        esac
+	;;
+    powerpc-*-beos:mwcc* )
+	APR_SETVAR(CPP,[mwcc -E])
+	APR_SETVAR(CC,mwcc)
+	APR_SETVAR(AR,ar)
+	;;
+    dnl If building static APR, both the APR build and the app build
+    dnl need -DAPR_DECLARE_STATIC to generate the right linkage from    
+    dnl APR_DECLARE et al.
+    dnl If building dynamic APR, the APR build needs APR_DECLARE_EXPORT
+    dnl and the app build should have neither define.
+    *-mingw* | *-cygwin*)
+        if test "$enable_shared" = "yes"; then
+            APR_ADDTO(INTERNAL_CPPFLAGS, -DAPR_DECLARE_EXPORT)
+        else
+            APR_ADDTO(CPPFLAGS, -DAPR_DECLARE_STATIC)
+        fi
+        ;;
+esac
+
+AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins],
+[AC_TRY_RUN([
+int main()
+{
+    unsigned long val = 1010, tmp, *mem = &val;
+
+    if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
+        return 1;
+
+    tmp = val;
+
+    if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
+        return 1;
+
+    if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
+        return 1;
+
+    tmp = 3030;
+
+    if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
+        return 1;
+
+    if (__sync_lock_test_and_set(&val, 4040) != 3030)
+        return 1;
+
+    mem = &tmp;
+
+    if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
+        return 1;
+
+    __sync_synchronize();
+
+    if (mem != &val)
+        return 1;
+
+    return 0;
+}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])])
+
+if test "$ap_cv_atomic_builtins" = "yes"; then
+    AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
+fi
+
+case $host in
+    powerpc-405-*)
+        # The IBM ppc405cr processor has a bugged stwcx instruction.
+        AC_DEFINE(PPC405_ERRATA, 1, [Define on PowerPC 405 where errata 77 applies])
+        ;;
+    *)
+        ;;
+esac
+
+dnl Check the depend program we can use
+APR_CHECK_DEPEND
+
+proc_mutex_is_global=0
+
+config_subdirs="none"
+INSTALL_SUBDIRS="none"
+OBJECTS_PLATFORM='$(OBJECTS_unix)'
+
+case $host in
+   i386-ibm-aix* | *-ibm-aix[[1-2]].* | *-ibm-aix3.* | *-ibm-aix4.1 | *-ibm-aix4.1.* | *-ibm-aix4.2 | *-ibm-aix4.2.*)
+       OSDIR="aix"
+       APR_ADDTO(LDFLAGS,-lld)
+       eolstr="\\n"
+       OBJECTS_PLATFORM='$(OBJECTS_aix)'
+       ;;
+   *-os2*)
+       APR_ADDTO(CPPFLAGS,-DOS2)
+       APR_ADDTO(CFLAGS,-Zmt)
+       AC_CHECK_LIB(bsd, random)
+       OSDIR="os2"
+       enable_threads="system_threads"
+       eolstr="\\r\\n"
+       file_as_socket="0"
+       proc_mutex_is_global=1
+       OBJECTS_PLATFORM='$(OBJECTS_os2)'
+       ;;
+   *beos*)
+       OSDIR="beos"
+       APR_ADDTO(CPPFLAGS,-DBEOS)
+       enable_threads="system_threads"
+       native_mmap_emul="1"
+       APR_CHECK_DEFINE(BONE_VERSION, sys/socket.h)
+       eolstr="\\n"
+       osver=`uname -r`
+       proc_mutex_is_global=1
+       OBJECTS_PLATFORM='$(OBJECTS_beos)'
+       case $osver in
+          5.0.4)
+             file_as_socket="1"
+             ;;
+          *)
+             file_as_socket="0"
+             ;;
+       esac
+       ;;
+   *os390)
+       OSDIR="os390"
+       OBJECTS_PLATFORM='$(OBJECTS_os390)'
+       eolstr="\\n"
+       ;;
+   *os400)
+       OSDIR="as400"
+       eolstr="\\n"
+       ;;
+   *mingw*)
+       OSDIR="win32"
+       enable_threads="system_threads"
+       eolstr="\\r\\n"
+       file_as_socket=0
+       proc_mutex_is_global=1
+       OBJECTS_PLATFORM='$(OBJECTS_win32)'
+       ;;
+   *cygwin*)
+       OSDIR="unix"
+       enable_threads="no"
+       eolstr="\\n"
+       ;;
+   *hpux10* ) 
+       enable_threads="no"
+       OSDIR="unix"
+       eolstr="\\n"
+       ;;
+   *)
+       OSDIR="unix"
+       eolstr="\\n"
+       ;;
+esac
+
+AC_SUBST(OBJECTS_PLATFORM)
+
+# Check whether LFS has explicitly been disabled
+AC_ARG_ENABLE(lfs,[  --disable-lfs           Disable large file support on 32-bit platforms],
+[apr_lfs_choice=$enableval], [apr_lfs_choice=yes])
+
+if test "$apr_lfs_choice" = "yes"; then
+   # Check whether the transitional LFS API is sufficient
+   AC_CACHE_CHECK([whether to enable -D_LARGEFILE64_SOURCE], [apr_cv_use_lfs64], [
+   apr_save_CPPFLAGS=$CPPFLAGS
+   CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
+   AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+void main(void)
+{
+    int fd, ret = 0;
+    struct stat64 st;
+    off64_t off = 4242;
+
+    if (sizeof(off64_t) != 8 || sizeof(off_t) != 4)
+       exit(1);
+    if ((fd = open("conftest.lfs", O_LARGEFILE|O_CREAT|O_WRONLY, 0644)) < 0)
+       exit(2);
+    if (ftruncate64(fd, off) != 0)
+       ret = 3;
+    else if (fstat64(fd, &st) != 0 || st.st_size != off)
+       ret = 4;
+    else if (lseek64(fd, off, SEEK_SET) != off)
+       ret = 5;
+    else if (close(fd) != 0)
+       ret = 6;
+    else if (lstat64("conftest.lfs", &st) != 0 || st.st_size != off)
+       ret = 7;
+    else if (stat64("conftest.lfs", &st) != 0 || st.st_size != off)
+       ret = 8;
+    unlink("conftest.lfs");
+
+    exit(ret);
+}], [apr_cv_use_lfs64=yes], [apr_cv_use_lfs64=no], [apr_cv_use_lfs64=no])
+   CPPFLAGS=$apr_save_CPPFLAGS])
+   if test "$apr_cv_use_lfs64" = "yes"; then
+      APR_ADDTO(CPPFLAGS, [-D_LARGEFILE64_SOURCE])
+   fi
+fi
+
+AC_ARG_ENABLE(nonportable-atomics,
+[  --enable-nonportable-atomics  Use optimized atomic code which may produce nonportable binaries],
+[if test $enableval = yes; then
+   force_generic_atomics=no
+ else
+   force_generic_atomics=yes
+ fi
+],
+[case $host_cpu in
+   i[[456]]86) force_generic_atomics=yes ;;
+   *) force_generic_atomics=no
+      case $host in
+         *solaris2.10*)
+            AC_TRY_COMPILE(
+                [#include <atomic.h>],
+                [void *ptr = NULL; atomic_cas_ptr(&ptr, NULL, NULL);],,
+                [force_generic_atomics=yes]
+            )
+            if test $force_generic_atomics = yes; then
+                AC_MSG_NOTICE([nonportable atomic support disabled, system needs Patch-ID 118884 or 118885])
+            fi
+            ;;
+      esac
+      ;;
+esac
+])
+
+if test $force_generic_atomics = yes; then
+   AC_DEFINE([USE_ATOMICS_GENERIC], 1,
+             [Define if use of generic atomics is requested])
+fi
+
+AC_SUBST(proc_mutex_is_global)
+AC_SUBST(eolstr)
+AC_SUBST(INSTALL_SUBDIRS)
+
+# For some platforms we need a version string which allows easy numeric
+# comparisons.
+case $host in
+    *freebsd*)
+        if test -x /sbin/sysctl; then
+            os_version=`/sbin/sysctl -n kern.osreldate`
+        else
+            os_version=000000
+        fi
+        ;;
+    *linux*)
+        os_major=[`uname -r | sed -e 's/\([1-9][0-9]*\)\..*/\1/'`]
+        os_minor=[`uname -r | sed -e 's/[1-9][0-9]*\.\([0-9]\+\)\..*/\1/'`]
+        if test $os_major -lt 2 -o \( $os_major -eq 2 -a $os_minor -lt 4 \); then
+            AC_MSG_WARN([Configured for pre-2.4 Linux $os_major.$os_minor])
+            os_pre24linux=1
+        else
+            os_pre24linux=0
+            AC_MSG_NOTICE([Configured for Linux $os_major.$os_minor])
+        fi
+        ;;
+    *os390)
+        os_version=`uname -r | sed -e 's/\.//g'`
+        ;;
+    *)
+        os_version=OS_VERSION_IS_NOT_SET
+        ;;
+esac
+
+echo "${nl}Checking for libraries..."
+
+dnl ----------------------------- Checks for Any required Libraries
+dnl Note: Autoconf will always append LIBS with an extra " " in AC_CHECK_LIB.
+dnl It should check for LIBS being empty and set LIBS equal to the new value 
+dnl without the extra " " in that case, but they didn't do that.  So, we
+dnl end up LIBS="-lm -lcrypt -lnsl  -ldl" which is an annoyance.
+case $host in
+   *mingw*)
+      APR_ADDTO(LIBS,[-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock])
+      ac_cv_func_CreateFileMapping=yes
+      ;;
+   *)
+      AC_SEARCH_LIBS(gethostbyname, nsl)
+      AC_SEARCH_LIBS(gethostname, nsl)
+      AC_SEARCH_LIBS(socket, socket)
+      AC_SEARCH_LIBS(crypt, crypt ufc)
+      AC_CHECK_LIB(truerand, main)
+      AC_SEARCH_LIBS(modf, m)
+       ;;
+esac
+
+dnl ----------------------------- Checking for Threads
+echo "${nl}Checking for Threads..."
+
+if test -z "$enable_threads"; then
+	AC_ARG_ENABLE(threads,
+	[  --enable-threads        Enable threading support in APR.],
+	[ enable_threads=$enableval] ,
+	[ APR_CHECK_PTHREADS_H([ enable_threads="pthread" ] ,
+	                       [ enable_threads="no" ] ) ] )
+fi
+
+if test "$enable_threads" = "no"; then
+    threads="0"
+    pthreadh="0"
+    pthreadser="0"
+else
+    if test "$enable_threads" = "pthread"; then
+# We have specified pthreads for our threading library, just make sure
+# that we have everything we need
+      APR_PTHREADS_CHECK_SAVE
+      APR_PTHREADS_CHECK
+      APR_CHECK_PTHREADS_H([
+          threads="1"
+          pthreadh="1"
+          pthreadser="1" ], [
+          threads="0"
+          pthreadh="0"
+          pthreadser="0"
+          APR_PTHREADS_CHECK_RESTORE ] )
+    elif test "$enable_threads" = "system_threads"; then
+        threads="1"
+        pthreadh="0"
+        pthreadser="0"
+    else
+# We basically specified that we wanted threads, but not how to implement
+# them.  In this case, just look for pthreads.  In the future, we can check
+# for other threading libraries as well.
+      APR_PTHREADS_CHECK_SAVE
+      APR_PTHREADS_CHECK
+      APR_CHECK_PTHREADS_H([
+          threads="1"
+          pthreadh="1"
+          pthreadser="1" ], [
+          threads="0"
+          pthreadser="0"
+          pthreadh="0"
+          APR_PTHREADS_CHECK_RESTORE ] )
+    fi
+    if test "$pthreadh" = "1"; then
+        APR_CHECK_PTHREAD_GETSPECIFIC_TWO_ARGS
+        APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG
+        APR_CHECK_PTHREAD_RECURSIVE_MUTEX
+        AC_CHECK_FUNCS([pthread_key_delete pthread_rwlock_init \
+                        pthread_attr_setguardsize pthread_yield])
+
+        if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then
+            dnl ----------------------------- Checking for pthread_rwlock_t
+            AC_CACHE_CHECK([for pthread_rwlock_t], [apr_cv_type_rwlock_t],
+            AC_TRY_COMPILE([#include <sys/types.h>
+#include <pthread.h>], [pthread_rwlock_t *rwlock;],
+              [apr_cv_type_rwlock_t=yes], [apr_cv_type_rwlock_t=no], 
+              [apr_cv_type_rwlock_t=no]))
+            if test "$apr_cv_type_rwlock_t" = "yes"; then
+               AC_DEFINE(HAVE_PTHREAD_RWLOCKS, 1, [Define if pthread rwlocks are available])
+            fi
+        fi
+
+        if test "$ac_cv_func_pthread_yield" = "no"; then
+            dnl ----------------------------- Checking for sched_yield
+            AC_CHECK_HEADERS([sched.h])
+            AC_CHECK_FUNCS([sched_yield])
+        fi
+    fi
+fi
+
+ac_cv_define_READDIR_IS_THREAD_SAFE=no
+ac_cv_define_GETHOSTBYNAME_IS_THREAD_SAFE=no
+ac_cv_define_GETHOSTBYADDR_IS_THREAD_SAFE=no
+ac_cv_define_GETSERVBYNAME_IS_THREAD_SAFE=no
+if test "$threads" = "1"; then
+    echo "APR will use threads"
+    AC_CHECK_LIB(c_r, readdir,
+        AC_DEFINE(READDIR_IS_THREAD_SAFE, 1, 
+                  [Define if readdir is thread safe]))
+    if test "x$apr_gethostbyname_is_thread_safe" = "x"; then
+        AC_CHECK_LIB(c_r, gethostbyname, apr_gethostbyname_is_thread_safe=yes)
+    fi
+    if test "$apr_gethostbyname_is_thread_safe" = "yes"; then
+        AC_DEFINE(GETHOSTBYNAME_IS_THREAD_SAFE, 1,
+                  [Define if gethostbyname is thread safe])
+    fi
+    if test "x$apr_gethostbyaddr_is_thread_safe" = "x"; then
+        AC_CHECK_LIB(c_r, gethostbyaddr, apr_gethostbyaddr_is_thread_safe=yes)
+    fi
+    if test "$apr_gethostbyaddr_is_thread_safe" = "yes"; then
+        AC_DEFINE(GETHOSTBYADDR_IS_THREAD_SAFE, 1, 
+                  [Define if gethostbyaddr is thread safe])
+    fi
+    if test "x$apr_getservbyname_is_thread_safe" = "x"; then
+        AC_CHECK_LIB(c_r, getservbyname, apr_getservbyname_is_thread_safe=yes)
+    fi
+    if test "$apr_getservbyname_is_thread_safe" = "yes"; then
+        AC_DEFINE(GETSERVBYNAME_IS_THREAD_SAFE, 1, 
+                  [Define if getservbyname is thread safe])
+    fi
+    AC_CHECK_FUNCS(gethostbyname_r gethostbyaddr_r getservbyname_r)
+else
+    echo "APR will be non-threaded"
+fi
+
+dnl Electric Fence malloc checker.
+dnl --with-efence specifies the path to Electric Fence.
+dnl This test should remain after the threads checks since libefence
+dnl may depend on libpthread.
+AC_ARG_WITH(efence, 
+  [  --with-efence[[=DIR]]     path to Electric Fence installation], 
+  [ apr_efence_dir="$withval"
+    if test "$apr_efence_dir" != "yes"; then
+      APR_ADDTO(LDFLAGS,[-L$apr_efence_dir/lib])
+      if test "x$apr_platform_runtime_link_flag" != "x"; then
+          APR_ADDTO(LDFLAGS, 
+                    [$apr_platform_runtime_link_flag$apr_efence_dir/lib])
+      fi
+    fi
+    AC_CHECK_LIB(efence, malloc, 
+                 [ APR_ADDTO(LIBS,-lefence) ],
+                 [ AC_MSG_ERROR(Electric Fence requested but not detected) ])
+  ])
+
+AC_CHECK_FUNCS(sigsuspend, [ have_sigsuspend="1" ], [ have_sigsuspend="0" ])
+AC_CHECK_FUNCS(sigwait, [ have_sigwait="1" ], [ have_sigwait="0" ]) 
+dnl AC_CHECK_FUNCS doesn't work for this on Tru64 since the function
+dnl is renamed in signal.h.  Todo: Autodetect
+case $host in
+    *alpha*-dec-osf* )
+        have_sigwait="1"
+        ;;
+esac
+
+AC_SUBST(threads)
+AC_SUBST(have_sigsuspend)
+AC_SUBST(have_sigwait)
+
+AC_CHECK_FUNCS(poll kqueue port_create)
+
+# Check for the Linux epoll interface; epoll* may be available in libc
+# but return ENOSYS on a pre-2.6 kernel, so do a run-time check.
+AC_CACHE_CHECK([for epoll support], [apr_cv_epoll],
+[AC_TRY_RUN([
+#include <sys/epoll.h>
+#include <unistd.h>
+
+int main()
+{
+    return epoll_create(5) == -1;
+}], [apr_cv_epoll=yes], [apr_cv_epoll=no], [apr_cv_epoll=no])])
+
+if test "$apr_cv_epoll" = "yes"; then
+   AC_DEFINE([HAVE_EPOLL], 1, [Define if the epoll interface is supported])
+fi
+
+dnl ----------------------------- Checking for extended file descriptor handling
+# test for epoll_create1
+AC_CACHE_CHECK([for epoll_create1 support], [apr_cv_epoll_create1],
+[AC_TRY_RUN([
+#include <sys/epoll.h>
+#include <unistd.h>
+
+int main()
+{
+    return epoll_create1(0) == -1;
+}], [apr_cv_epoll_create1=yes], [apr_cv_epoll_create1=no], [apr_cv_epoll_create1=no])])
+
+if test "$apr_cv_epoll_create1" = "yes"; then
+   AC_DEFINE([HAVE_EPOLL_CREATE1], 1, [Define if epoll_create1 function is supported])
+fi
+
+# test for dup3
+AC_CACHE_CHECK([for dup3 support], [apr_cv_dup3],
+[AC_TRY_RUN([
+#include <unistd.h>
+
+int main()
+{
+    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
+}], [apr_cv_dup3=yes], [apr_cv_dup3=no], [apr_cv_dup3=no])])
+
+if test "$apr_cv_dup3" = "yes"; then
+   AC_DEFINE([HAVE_DUP3], 1, [Define if dup3 function is supported])
+fi
+
+# Test for accept4().  Create a non-blocking socket, bind it to
+# an unspecified port & address (kernel picks), and attempt to
+# call accept4() on it.  If the syscall is wired up (i.e. the
+# kernel is new enough), it should return EAGAIN.
+AC_CACHE_CHECK([for accept4 support], [apr_cv_accept4],
+[AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+int main(int argc, char **argv)
+{
+    int fd, flags;
+    struct sockaddr_in sin;
+
+    if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+        return 1;
+    flags = fcntl(fd, F_GETFL);
+    if (flags == -1 || fcntl(fd, F_SETFL, flags|O_NONBLOCK) == -1)
+        return 5;
+
+    memset(&sin, 0, sizeof sin);
+    sin.sin_family = AF_INET;
+    
+    if (bind(fd, (struct sockaddr *) &sin, sizeof sin) == -1)
+        return 2;
+    
+    if (listen(fd, 5) == -1)
+        return 3;
+
+    if (accept4(fd, NULL, 0, SOCK_NONBLOCK) == 0
+        || errno == EAGAIN || errno == EWOULDBLOCK)
+        return 0;
+
+    return 4;
+}], [apr_cv_accept4=yes], [apr_cv_accept4=no], [apr_cv_accept4=no])])
+
+if test "$apr_cv_accept4" = "yes"; then
+   AC_DEFINE([HAVE_ACCEPT4], 1, [Define if accept4 function is supported])
+fi
+
+AC_CACHE_CHECK([for SOCK_CLOEXEC support], [apr_cv_sock_cloexec],
+[AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int main()
+{
+    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
+}], [apr_cv_sock_cloexec=yes], [apr_cv_sock_cloexec=no], [apr_cv_sock_cloexec=no])])
+
+if test "$apr_cv_sock_cloexec" = "yes"; then
+   AC_DEFINE([HAVE_SOCK_CLOEXEC], 1, [Define if the SOCK_CLOEXEC flag is supported])
+fi
+
+dnl ----------------------------- Checking for fdatasync: OS X doesn't have it
+AC_CHECK_FUNCS(fdatasync)
+
+dnl ----------------------------- Checking for extended file descriptor handling
+# test for epoll_create1
+AC_CACHE_CHECK([for epoll_create1 support], [apr_cv_epoll_create1],
+[AC_TRY_RUN([
+#include <sys/epoll.h>
+#include <unistd.h>
+
+int main()
+{
+    return epoll_create1(0) == -1;
+}], [apr_cv_epoll_create1=yes], [apr_cv_epoll_create1=no], [apr_cv_epoll_create1=no])])
+
+if test "$apr_cv_epoll_create1" = "yes"; then
+   AC_DEFINE([HAVE_EPOLL_CREATE1], 1, [Define if epoll_create1 function is supported])
+fi
+
+# Check for z/OS async i/o support.  
+AC_CACHE_CHECK([for asio -> message queue support], [apr_cv_aio_msgq],
+[AC_TRY_RUN([
+#define _AIO_OS390
+#include <aio.h>
+
+int main()
+{
+    struct aiocb a;
+
+    a.aio_notifytype = AIO_MSGQ;  /* use IPC message queue for notification */
+
+    return aio_cancel(2, NULL) == -1;
+}], [apr_cv_aio_msgq=yes], [apr_cv_aio_msgq=no], [apr_cv_aio_msgq=no])])
+
+if test "$apr_cv_aio_msgq" = "yes"; then
+   AC_DEFINE([HAVE_AIO_MSGQ], 1, [Define if async i/o supports message q's])
+fi
+
+# test for dup3
+AC_CACHE_CHECK([for dup3 support], [apr_cv_dup3],
+[AC_TRY_RUN([
+#include <unistd.h>
+
+int main()
+{
+    return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1;
+}], [apr_cv_dup3=yes], [apr_cv_dup3=no], [apr_cv_dup3=no])])
+
+if test "$apr_cv_dup3" = "yes"; then
+   AC_DEFINE([HAVE_DUP3], 1, [Define if dup3 function is supported])
+fi
+
+# test for accept4
+AC_CACHE_CHECK([for accept4 support], [apr_cv_accept4],
+[AC_TRY_RUN([
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <signal.h>
+#include <errno.h>
+
+#define A4_SOCK "./apr_accept4_test_socket"
+
+int main()
+{
+    pid_t pid;
+    int fd;
+    struct sockaddr_un loc, rem;
+    socklen_t rem_sz;
+
+    if ((pid = fork())) {
+        int status;
+
+        unlink(A4_SOCK);
+
+        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
+            goto cleanup_failure2;
+
+        loc.sun_family = AF_UNIX;
+        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
+
+        if (bind(fd, (struct sockaddr *) &loc,
+                 sizeof(struct sockaddr_un)) == -1)
+            goto cleanup_failure;
+
+        if (listen(fd, 5) == -1)
+            goto cleanup_failure;
+
+        rem_sz = sizeof(struct sockaddr_un);
+        if (accept4(fd, (struct sockaddr *) &rem, &rem_sz, 0) == -1) {
+            goto cleanup_failure;
+        }
+        else {
+            close(fd);
+            waitpid(pid, &status, 0);
+            unlink(A4_SOCK);
+            return 0;
+        }
+
+cleanup_failure:
+        close(fd);
+cleanup_failure2:
+        kill(pid, SIGKILL);
+        waitpid(pid, &status, 0);
+        unlink(A4_SOCK);
+        return 1;
+    }
+    else {
+        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
+            return 1; /* this will be bad: we'll hang */
+
+        loc.sun_family = AF_UNIX;
+        strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1);
+
+        while(connect(fd, (struct sockaddr *) &loc,
+                      sizeof(struct sockaddr_un)) == -1 &&
+              (errno==ENOENT || errno==ECONNREFUSED))
+            ;
+
+        close(fd);
+        return 0;
+    }
+}], [apr_cv_accept4=yes], [apr_cv_accept4=no], [apr_cv_accept4=no])])
+
+if test "$apr_cv_accept4" = "yes"; then
+   AC_DEFINE([HAVE_ACCEPT4], 1, [Define if accept4 function is supported])
+fi
+
+AC_CACHE_CHECK([for SOCK_CLOEXEC support], [apr_cv_sock_cloexec],
+[AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int main()
+{
+    return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
+}], [apr_cv_sock_cloexec=yes], [apr_cv_sock_cloexec=no], [apr_cv_sock_cloexec=no])])
+
+if test "$apr_cv_sock_cloexec" = "yes"; then
+   AC_DEFINE([HAVE_SOCK_CLOEXEC], 1, [Define if the SOCK_CLOEXEC flag is supported])
+fi
+
+dnl ----------------------------- Checking for missing POSIX thread functions
+AC_CHECK_FUNCS([getpwnam_r getpwuid_r getgrnam_r getgrgid_r])
+
+dnl ----------------------------- Checking for Shared Memory Support 
+echo "${nl}Checking for Shared Memory Support..."
+
+# The real-time POSIX extensions (e.g. shm_*, sem_*) may only
+# be available if linking against librt.
+AC_SEARCH_LIBS(shm_open, rt)
+
+case $host in
+ *-sysv*)
+   ac_includes_default="$ac_includes_default
+#if HAVE_SYS_MUTEX_H /* needed to define lock_t for sys/shm.h */
+# include <sys/mutex.h>
+#endif";;
+esac
+
+AC_CHECK_HEADERS([sys/types.h sys/mman.h sys/ipc.h sys/mutex.h sys/shm.h sys/file.h kernel/OS.h os2.h windows.h])
+AC_CHECK_FUNCS([mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \
+                create_area])
+
+APR_CHECK_DEFINE(MAP_ANON, sys/mman.h)
+AC_CHECK_FILE(/dev/zero)
+
+# Not all systems can mmap /dev/zero (such as HP-UX).  Check for that.
+if test "$ac_cv_func_mmap" = "yes" &&
+   test "$ac_cv_file__dev_zero" = "yes"; then
+    AC_MSG_CHECKING(for mmap that can map /dev/zero)
+    AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+    int main()
+    {
+        int fd;
+        void *m;
+        fd = open("/dev/zero", O_RDWR);
+        if (fd < 0) {
+            return 1;
+        }
+        m = mmap(0, sizeof(void*), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+        if (m == (void *)-1) {  /* aka MAP_FAILED */
+            return 2;
+        }
+        if (munmap(m, sizeof(void*)) < 0) {
+            return 3;
+        }
+        return 0;
+    }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no])
+
+    AC_MSG_RESULT($ac_cv_file__dev_zero)
+fi
+
+# Now we determine which one is our anonymous shmem preference.
+haveshmgetanon="0"
+havemmapzero="0"
+havemmapanon="0"
+APR_BEGIN_DECISION([anonymous shared memory allocation method])
+APR_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl
+             func:shmget func:shmat func:shmdt func:shmctl,
+             [haveshmgetanon="1"
+              APR_DECIDE(USE_SHMEM_SHMGET_ANON, [SysV IPC shmget()])])
+APR_IFALLYES(header:sys/mman.h func:mmap func:munmap file:/dev/zero,
+             [havemmapzero="1"
+              APR_DECIDE(USE_SHMEM_MMAP_ZERO, 
+                  [SVR4-style mmap() on /dev/zero])])
+APR_IFALLYES(header:sys/mman.h func:mmap func:munmap define:MAP_ANON,
+             [havemmapanon="1"
+              APR_DECIDE(USE_SHMEM_MMAP_ANON, 
+                  [4.4BSD-style mmap() via MAP_ANON])])
+APR_IFALLYES(header:os2.h,
+             [haveos2shm="1"
+              APR_DECIDE(USE_SHMEM_OS2_ANON, [OS/2 DosAllocSharedMem()])])
+APR_IFALLYES(header:kernel/OS.h func:create_area,
+             [havebeosshm="1"
+              APR_DECIDE(USE_SHMEM_BEOS_ANON,
+                         [BeOS areas])])
+APR_IFALLYES(header:windows.h func:CreateFileMapping,
+             [havewin32shm="1"
+              APR_DECIDE(USE_SHMEM_WIN32_ANON,
+                         [Windows CreateFileMapping()])])
+case $host in
+    *linux* ) 
+        # Linux has problems with MM_SHMT_MMANON even though it reports
+        # that it has it.
+        # FIXME - find exact 2.3 version that MMANON was fixed in.  It is
+        # confirmed fixed in 2.4 series.
+        if test $os_pre24linux -eq 1; then
+            AC_MSG_WARN([Disabling anon mmap() support for Linux pre-2.4])
+            APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_ZERO USE_SHMEM_SHMGET_ANON)
+        fi
+        ;;
+    *hpux11* ) 
+        APR_DECISION_OVERRIDE(USE_SHMEM_SHMGET_ANON)
+        ;;
+esac
+APR_END_DECISION
+AC_DEFINE_UNQUOTED($ac_decision)
+
+useshmgetanon="0"
+usemmapzero="0"
+usemmapanon="0"
+
+case $ac_decision in
+    USE_SHMEM_SHMGET_ANON )
+        useshmgetanon="1"
+        ;;
+    USE_SHMEM_MMAP_ZERO )
+        usemmapzero="1"
+        ;;
+    USE_SHMEM_MMAP_ANON )
+        usemmapanon="1"
+        ;;
+esac
+
+AC_SUBST(useshmgetanon)
+AC_SUBST(usemmapzero)
+AC_SUBST(usemmapanon)
+AC_SUBST(haveshmgetanon)
+AC_SUBST(havemmapzero)
+AC_SUBST(havemmapanon)
+
+# Now we determine which one is our name-based shmem preference.
+havemmaptmp="0"
+havemmapshm="0"
+haveshmget="0"
+havebeosarea="0"
+haveos2shm="0"
+havewin32shm="0"
+APR_BEGIN_DECISION([namebased memory allocation method])
+APR_IFALLYES(header:sys/mman.h func:mmap func:munmap,
+             [havemmaptmp="1"
+              APR_DECIDE(USE_SHMEM_MMAP_TMP, 
+                  [Classical mmap() on temporary file])])
+APR_IFALLYES(header:sys/mman.h func:mmap func:munmap func:shm_open dnl
+             func:shm_unlink,
+             [havemmapshm="1"
+              APR_DECIDE(USE_SHMEM_MMAP_SHM, 
+                  [mmap() via POSIX.1 shm_open() on temporary file])])
+APR_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl
+             func:shmget func:shmat func:shmdt func:shmctl,
+             [haveshmget="1"
+              APR_DECIDE(USE_SHMEM_SHMGET, [SysV IPC shmget()])])
+APR_IFALLYES(header:kernel/OS.h func:create_area,
+             [havebeosshm="1"
+              APR_DECIDE(USE_SHMEM_BEOS, [BeOS areas])])
+APR_IFALLYES(header:os2.h,
+             [haveos2shm="1"
+              APR_DECIDE(USE_SHMEM_OS2, [OS/2 DosAllocSharedMem()])])
+APR_IFALLYES(header:windows.h,
+             [havewin32shm="1"
+              APR_DECIDE(USE_SHMEM_WIN32, [Windows shared memory])])
+AC_ARG_ENABLE(posix-shm,
+[  --enable-posix-shm      Use POSIX shared memory (shm_open) if available],
+[
+if test "$havemmapshm" = "1"; then
+  APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_SHM)
+fi
+])
+case $host in
+    *linux* ) 
+        # Linux pre-2.4 had problems with MM_SHMT_MMANON even though
+        # it reports that it has it.
+        if test $os_pre24linux -eq 1; then
+            APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_TMP USE_SHMEM_MMAP_SHM dnl
+                                  USE_SHMEM_SHMGET)
+        fi
+        ;;
+esac
+APR_END_DECISION
+AC_DEFINE_UNQUOTED($ac_decision)
+
+usemmaptmp="0"
+usemmapshm="0"
+useshmget="0"
+usebeosarea="0"
+useos2shm="0"
+usewin32shm="0"
+
+case $ac_decision in
+    USE_SHMEM_MMAP_TMP )
+        usemmaptmp="1"
+        ;;
+    USE_SHMEM_MMAP_SHM )
+        usemmapshm="1"
+        ;;
+    USE_SHMEM_SHMGET )
+        useshmget="1"
+        ;;
+    USE_SHMEM_BEOS )
+        usebeosarea="1"
+        ;;
+    USE_SHMEM_OS2 )
+        useos2shm="1"
+        ;;
+    USE_SHMEM_WIN32 )
+        usewin32shm="1"
+        ;;
+esac
+
+# Do we have any shared memory support?
+if test "$usemmaptmp$usemmapshm$usemmapzero$useshmget$usemmapanon$usebeosarea$useos2shm$usewin32shm" = "00000000"; then
+  sharedmem="0"
+else
+  sharedmem="1"
+fi
+
+AC_SUBST(usemmaptmp)
+AC_SUBST(usemmapshm)
+AC_SUBST(useshmget)
+AC_SUBST(usebeosarea)
+AC_SUBST(useos2shm)
+AC_SUBST(usewin32shm)
+AC_SUBST(havemmaptmp)
+AC_SUBST(havemmapshm)
+AC_SUBST(haveshmget)
+AC_SUBST(havebeosarea)
+AC_SUBST(haveos2shm)
+AC_SUBST(havewin32shm)
+AC_SUBST(sharedmem)
+
+dnl ----------------------------- Checks for Any required Functions
+dnl Checks for library functions. (N.B. poll is further down)
+
+AC_FUNC_ALLOCA
+
+AC_CHECK_FUNCS([calloc setsid isinf isnan \
+                getenv putenv setenv unsetenv \
+                writev getifaddrs utime utimes])
+AC_CHECK_FUNCS(setrlimit, [ have_setrlimit="1" ], [ have_setrlimit="0" ]) 
+AC_CHECK_FUNCS(getrlimit, [ have_getrlimit="1" ], [ have_getrlimit="0" ]) 
+sendfile="0"
+AC_CHECK_LIB(sendfile, sendfilev)
+AC_CHECK_FUNCS(sendfile send_file sendfilev, [ sendfile="1" ])
+
+dnl THIS MUST COME AFTER THE THREAD TESTS - FreeBSD doesn't always have a
+dnl threaded poll() and we don't want to use sendfile on early FreeBSD 
+dnl systems if we are also using threads.
+
+AC_ARG_WITH(sendfile, [  --with-sendfile         Override decision to use sendfile],
+  [ if test "$withval" = "yes"; then
+        sendfile="1"
+    else
+        sendfile="0"
+    fi ], [
+    orig_sendfile=$sendfile
+    case $host in
+        *freebsd*)
+            # FreeBSD < 4.2 has issues with threads+sendfile
+            if test $os_version -le "401999"; then
+                if test "$threads" = "1"; then
+                    sendfile="0"
+                fi
+            fi
+            ;;
+        *alpha*-dec-osf* )
+            sendfile="0"
+            ;;
+        s390-*-linux-gnu)
+            # disable sendfile support for 2.2 on S/390
+            if test $os_pre24linux -eq 1; then
+                AC_MSG_WARN([Disabled sendfile support for Linux 2.2 on S/390])
+                sendfile="0"
+            fi
+            ;;
+        *aix*)
+            # compiler-independent check for 64-bit build
+            AC_CHECK_SIZEOF(void*, 4)
+            if test "x$ac_cv_sizeof_voidp" = "x8"; then
+                # sendfile not working for 64-bit build
+                sendfile="0"
+            fi
+            ;;
+    esac       
+    if test "$orig_sendfile" != "$sendfile"; then
+      echo "sendfile support disabled to avoid system problem"
+    fi ] )
+AC_SUBST(sendfile)
+
+AC_CHECK_FUNCS(sigaction, [ have_sigaction="1" ], [ have_sigaction="0" ]) 
+AC_DECL_SYS_SIGLIST
+
+AC_CHECK_FUNCS(fork, [ fork="1" ], [ fork="0" ])
+APR_CHECK_INET_ADDR
+APR_CHECK_INET_NETWORK
+AC_SUBST(apr_inaddr_none)
+AC_CHECK_FUNC(_getch)
+AC_CHECK_FUNCS(strerror_r, [ strerror_r="1" ], [ strerror_r="0" ])
+if test "$strerror_r" = "1"; then
+  APR_CHECK_STRERROR_R_RC
+fi
+AC_CHECK_FUNCS(mmap, [ mmap="1" ], [ mmap="0" ])
+if test "$native_mmap_emul" = "1"; then
+    mmap="1"
+fi
+AC_CHECK_FUNCS(memmove, [ have_memmove="1" ], [have_memmove="0" ])
+AC_CHECK_FUNCS([getpass getpassphrase gmtime_r localtime_r])
+case $host in
+    *-hp-hpux*)
+        dnl mkstemp is limited to 26 temporary files (a-z); use APR replacement
+        ;;
+    *)
+        AC_CHECK_FUNCS(mkstemp)
+        ;;
+esac
+
+AC_SUBST(fork)
+AC_SUBST(have_inet_addr)
+AC_SUBST(tcp_nodelay_inherited)
+AC_SUBST(o_nonblock_inherited)
+AC_SUBST(have_inet_network)
+AC_SUBST(have_sigaction)
+AC_SUBST(have_setrlimit)
+AC_SUBST(have_getrlimit)
+AC_SUBST(mmap)
+AC_SUBST(have_memmove)
+
+APR_CHECK_SIGWAIT_ONE_ARG
+
+dnl ----------------------------- Checks for Any required Headers
+AC_HEADER_STDC
+
+APR_FLAG_HEADERS(
+    ByteOrder.h		\
+    conio.h		\
+    crypt.h		\
+    ctype.h		\
+    dir.h		\
+    dirent.h		\
+    dl.h		\
+    dlfcn.h		\
+    errno.h		\
+    fcntl.h		\
+    grp.h		\
+    io.h		\
+    limits.h		\
+    mach-o/dyld.h	\
+    malloc.h		\
+    memory.h		\
+    netdb.h		\
+    osreldate.h		\
+    poll.h		\
+    process.h		\
+    pwd.h		\
+    semaphore.h		\
+    signal.h		\
+    stdarg.h		\
+    stddef.h		\
+    stdio.h		\
+    stdlib.h		\
+    string.h		\
+    strings.h		\
+    sysapi.h		\
+    sysgtime.h		\
+    termios.h		\
+    time.h		\
+    tpfeq.h		\
+    tpfio.h		\
+    unistd.h		\
+    unix.h		\
+    windows.h		\
+    winsock2.h		\
+    arpa/inet.h		\
+    kernel/OS.h		\
+    net/errno.h		\
+    netinet/in.h	\
+    netinet/sctp.h      \
+    netinet/sctp_uio.h  \
+    sys/file.h		\
+    sys/ioctl.h         \
+    sys/mman.h		\
+    sys/param.h         \
+    sys/poll.h		\
+    sys/resource.h	\
+    sys/select.h	\
+    sys/sem.h		\
+    sys/sendfile.h	\
+    sys/signal.h	\
+    sys/socket.h	\
+    sys/sockio.h	\
+    sys/stat.h          \
+    sys/sysctl.h	\
+    sys/syslimits.h	\
+    sys/time.h		\
+    sys/types.h		\
+    sys/uio.h		\
+    sys/un.h		\
+    sys/wait.h)
+
+# IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from
+# being included by itself.  Check for <netinet/tcp.h> manually,
+# including another header file first.
+AC_CACHE_CHECK([for netinet/tcp.h], [apr_cv_hdr_netinet_tcp_h],
+[AC_TRY_CPP(
+[#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#include <netinet/tcp.h>
+], [apr_cv_hdr_netinet_tcp_h=yes], [apr_cv_hdr_netinet_tcp_h=no])])
+if test "$apr_cv_hdr_netinet_tcp_h" = "yes"; then
+   netinet_tcph=1
+   AC_DEFINE([HAVE_NETINET_TCP_H], 1, [Defined if netinet/tcp.h is present])
+else
+   netinet_tcph=0
+fi
+
+AC_SUBST(arpa_ineth)
+AC_SUBST(conioh)
+AC_SUBST(ctypeh)
+AC_SUBST(crypth)
+AC_SUBST(errnoh)
+AC_SUBST(direnth)
+AC_SUBST(fcntlh)
+AC_SUBST(ioh)
+AC_SUBST(limitsh)
+AC_SUBST(netdbh)
+AC_SUBST(sys_syslimitsh)
+AC_SUBST(netinet_inh)
+AC_SUBST(netinet_sctph)
+AC_SUBST(netinet_sctp_uioh)
+AC_SUBST(netinet_tcph)
+AC_SUBST(stdargh)
+AC_SUBST(stdioh)
+AC_SUBST(stdlibh)
+AC_SUBST(stringh)
+AC_SUBST(stringsh)
+AC_SUBST(sys_ioctlh)
+AC_SUBST(sys_sendfileh)
+AC_SUBST(sys_signalh)
+AC_SUBST(sys_socketh)
+AC_SUBST(sys_sockioh)
+AC_SUBST(sys_typesh)
+AC_SUBST(sys_timeh)
+AC_SUBST(sys_uioh)
+AC_SUBST(sys_unh)
+AC_SUBST(timeh)
+AC_SUBST(unistdh)
+AC_SUBST(signalh)
+AC_SUBST(sys_waith)
+AC_SUBST(processh)
+AC_SUBST(pthreadh)
+AC_SUBST(semaphoreh)
+AC_SUBST(windowsh)
+AC_SUBST(winsock2h)
+
+# Checking for h_errno in <netdb.h>
+if test "$netdbh" = "1"; then
+  APR_CHECK_H_ERRNO_FLAG
+  if test "$ac_cv_h_errno_cflags" = "no"; then
+    AC_MSG_ERROR([can not find h_errno in netdb.h])
+  fi
+fi
+
+AC_ARG_ENABLE(allocator-uses-mmap,
+  [  --enable-allocator-uses-mmap    Use mmap in apr_allocator instead of malloc ],
+  [ if test "$enableval" = "yes"; then
+        APR_IFALLYES(header:sys/mman.h func:mmap func:munmap define:MAP_ANON,
+                     [AC_DEFINE(APR_ALLOCATOR_USES_MMAP, 1,
+                                [Define if apr_allocator should use mmap]) ],
+		     [AC_MSG_ERROR([mmap()/MAP_ANON not supported]) ]
+		    )
+    fi ]
+)
+
+dnl ----------------------------- Checks for standard typedefs
+AC_TYPE_OFF_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_TYPE_UID_T
+AC_CHECK_TYPE(ssize_t, int)
+AC_C_INLINE
+AC_C_CONST
+AC_FUNC_SETPGRP
+
+APR_CHECK_SOCKLEN_T
+
+dnl Checks for pointer size
+AC_CHECK_SIZEOF(void*, 4)
+
+if test "x$ac_cv_sizeof_voidp" != "x"; then
+    voidp_size=$ac_cv_sizeof_voidp
+else
+    AC_ERROR([Cannot determine size of void*])
+fi
+
+dnl Checks for integer size
+AC_CHECK_SIZEOF(char, 1)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(long long, 8)
+
+if test "$ac_cv_sizeof_short" = "2"; then
+    short_value=short
+fi
+if test "$ac_cv_sizeof_int" = "4"; then
+    int_value=int
+fi
+# Now we need to find what apr_int64_t (sizeof == 8) will be.
+# The first match is our preference.
+if test "$ac_cv_sizeof_int" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val)'
+    uint64_literal='#define APR_UINT64_C(val) (val##U)'
+    int64_t_fmt='#define APR_INT64_T_FMT "d"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "u"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "x"'
+    int64_value="int"
+    long_value=int
+    int64_strfn="strtoi"
+elif test "$ac_cv_sizeof_long" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val##L)'
+    uint64_literal='#define APR_UINT64_C(val) (val##UL)'
+    int64_t_fmt='#define APR_INT64_T_FMT "ld"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "lu"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "lx"'
+    int64_value="long"
+    long_value=long
+    int64_strfn="strtol"
+elif test "$ac_cv_sizeof_long_long" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val##LL)'
+    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
+    # Linux, Solaris, FreeBSD all support ll with printf.
+    # BSD 4.4 originated 'q'.  Solaris is more popular and 
+    # doesn't support 'q'.  Solaris wins.  Exceptions can
+    # go to the OS-dependent section.
+    int64_t_fmt='#define APR_INT64_T_FMT "lld"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "llu"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "llx"'
+    int64_value="long long"
+    long_value="long long"
+    int64_strfn="strtoll"
+elif test "$ac_cv_sizeof_longlong" = "8"; then
+    int64_literal='#define APR_INT64_C(val) (val##LL)'
+    uint64_literal='#define APR_UINT64_C(val) (val##ULL)'
+    int64_t_fmt='#define APR_INT64_T_FMT "qd"'
+    uint64_t_fmt='#define APR_UINT64_T_FMT "qu"'
+    uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "qx"'
+    int64_value="__int64"
+    long_value="__int64"
+    int64_strfn="strtoll"
+else
+    # int64_literal may be overriden if your compiler thinks you have
+    # a 64-bit value but APR does not agree.
+    AC_ERROR([could not detect a 64-bit integer type])
+fi
+
+# If present, allow the C99 macro INT64_C to override our conversion.
+#
+# HP-UX's ANSI C compiler provides this without any includes, so we
+# will first look for INT64_C without adding stdint.h
+AC_CACHE_CHECK([for INT64_C], [apr_cv_define_INT64_C], [
+AC_EGREP_CPP(YES_IS_DEFINED,
+[#ifdef INT64_C
+YES_IS_DEFINED
+#endif], [apr_cv_define_INT64_C=yes], [
+    # Now check for INT64_C in stdint.h
+    AC_EGREP_CPP(YES_IS_DEFINED, [#include <stdint.h>
+#ifdef INT64_C
+YES_IS_DEFINED
+#endif], [apr_cv_define_INT64_C=yes], [apr_cv_define_INT64_C=no])])])
+
+if test "$apr_cv_define_INT64_C" = "yes"; then
+    int64_literal='#define APR_INT64_C(val) INT64_C(val)'
+    uint64_literal='#define APR_UINT64_C(val) UINT64_C(val)'
+    stdint=1
+else
+    stdint=0
+fi
+
+if test "$ac_cv_type_size_t" = "yes"; then
+    size_t_value="size_t"
+else
+    size_t_value="apr_int32_t"
+fi
+if test "$ac_cv_type_ssize_t" = "yes"; then
+    ssize_t_value="ssize_t"
+else
+    ssize_t_value="apr_int32_t"
+fi
+if test "$ac_cv_socklen_t" = "yes"; then
+    socklen_t_value="socklen_t"
+    case $host in
+        *-hp-hpux*)
+            if test "$ac_cv_sizeof_long" = "8"; then
+                # 64-bit HP-UX requires 32-bit socklens in
+                # kernel, but user-space declarations say
+                # 64-bit (socklen_t == size_t == long).
+                # This will result in many compile warnings,
+                # but we're functionally busted otherwise.
+                socklen_t_value="int"
+            fi
+            ;;
+    esac
+else
+    socklen_t_value="int"
+fi
+
+APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], pid_t, 8)
+
+if test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then
+    pid_t_fmt='#define APR_PID_T_FMT "hd"'
+elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_int"; then
+    pid_t_fmt='#define APR_PID_T_FMT "d"'
+elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long"; then
+    pid_t_fmt='#define APR_PID_T_FMT "ld"'
+elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long_long"; then
+    pid_t_fmt='#define APR_PID_T_FMT APR_INT64_T_FMT'
+else
+    pid_t_fmt='#error Can not determine the proper size for pid_t'
+fi
+
+# Basically, we have tried to figure out the correct format strings
+# for APR types which vary between platforms, but we don't always get
+# it right.
+case $host in
+   s390*linux*)
+       # uniquely, the 31-bit Linux/s390 uses "unsigned long int"
+       # for size_t rather than "unsigned int":
+       size_t_fmt="lu"
+       ssize_t_fmt="ld"
+       ;;
+   *-os2*)
+       size_t_fmt="lu"
+       ;;
+   *-solaris*)
+       if test "$ac_cv_sizeof_long" = "8"; then
+         pid_t_fmt='#define APR_PID_T_FMT "d"'
+       else
+         pid_t_fmt='#define APR_PID_T_FMT "ld"'
+       fi
+       ;;
+   *aix4*|*aix5*)
+       ssize_t_fmt="ld"
+       size_t_fmt="lu"
+       ;;
+    *beos*)
+        ssize_t_fmt="ld"
+        size_t_fmt="ld"
+        ;;
+    *apple-darwin*)
+        osver=`uname -r`
+        case $osver in
+           [[0-7]].*)
+              ssize_t_fmt="d"
+              ;;
+           *)
+              ssize_t_fmt="ld"
+              ;;
+        esac
+        size_t_fmt="lu"
+        ;;
+    *-mingw*)
+        int64_t_fmt='#define APR_INT64_T_FMT "I64d"'
+        uint64_t_fmt='#define APR_UINT64_T_FMT "I64u"'
+        uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "I64x"'
+        int64_value="__int64"
+        long_value="__int64"
+        int64_strfn="_strtoi64"
+        ;; 
+esac
+
+APR_CHECK_TYPES_COMPATIBLE(ssize_t, int, [ssize_t_fmt="d"])
+APR_CHECK_TYPES_COMPATIBLE(ssize_t, long, [ssize_t_fmt="ld"])
+APR_CHECK_TYPES_COMPATIBLE(size_t, unsigned int, [size_t_fmt="u"])
+APR_CHECK_TYPES_COMPATIBLE(size_t, unsigned long, [size_t_fmt="lu"])
+
+APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], ssize_t, 8)
+
+AC_MSG_CHECKING([which format to use for apr_ssize_t])
+if test -n "$ssize_t_fmt"; then
+    AC_MSG_RESULT(%$ssize_t_fmt)
+elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_int"; then
+    ssize_t_fmt="d"
+    AC_MSG_RESULT(%d)
+elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_long"; then
+    ssize_t_fmt="ld"
+    AC_MSG_RESULT(%ld)
+else
+    AC_ERROR([could not determine the proper format for apr_ssize_t])
+fi
+
+ssize_t_fmt="#define APR_SSIZE_T_FMT \"$ssize_t_fmt\""
+
+APR_CHECK_SIZEOF_EXTENDED([#include <stddef.h>], size_t, 8)
+
+AC_MSG_CHECKING([which format to use for apr_size_t])
+if test -n "$size_t_fmt"; then
+    AC_MSG_RESULT(%$size_t_fmt)
+elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_int"; then
+    size_t_fmt="d"
+    AC_MSG_RESULT(%d)
+elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_long"; then
+    size_t_fmt="ld"
+    AC_MSG_RESULT(%ld)
+else
+    AC_ERROR([could not determine the proper format for apr_size_t])
+fi
+
+size_t_fmt="#define APR_SIZE_T_FMT \"$size_t_fmt\""
+
+APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8)
+
+if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
+    # Enable LFS
+    aprlfs=1
+    AC_CHECK_FUNCS([mmap64 sendfile64 sendfilev64 readdir64_r])
+    case $host in
+        *-hp-hpux*)
+            dnl mkstemp64 is limited to 26 temporary files (a-z); use APR replacement
+            ;;
+        *)
+            AC_CHECK_FUNCS(mkstemp64)
+            ;;
+    esac
+elif test "${ac_cv_sizeof_off_t}" != "${ac_cv_sizeof_size_t}"; then
+    # unsure of using -gt above is as portable, can can't forsee where
+    # off_t can legitimately be smaller than size_t
+    aprlfs=1
+else
+    aprlfs=0     
+fi
+
+AC_MSG_CHECKING([which type to use for apr_off_t])
+if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
+    # LFS is go!
+    off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
+    off_t_value='off64_t'
+    off_t_strfn='apr_strtoi64'
+elif test "${ac_cv_sizeof_off_t}x${ac_cv_sizeof_long}" = "4x4"; then
+    # Special case: off_t may change size with _FILE_OFFSET_BITS
+    # on 32-bit systems with LFS support.  To avoid compatibility
+    # issues when other packages do define _FILE_OFFSET_BITS,
+    # hard-code apr_off_t to long.
+    off_t_value=long
+    off_t_fmt='#define APR_OFF_T_FMT "ld"'
+    off_t_strfn='strtol'
+elif test "$ac_cv_type_off_t" = "yes"; then
+    off_t_value=off_t
+    # off_t is more commonly a long than an int; prefer that case
+    # where int and long are the same size.
+    if test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long"; then
+        off_t_fmt='#define APR_OFF_T_FMT "ld"'
+        off_t_strfn='strtol'
+    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_int"; then
+        off_t_fmt='#define APR_OFF_T_FMT "d"'
+        off_t_strfn='strtoi'
+    elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long_long"; then
+        off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT'
+        off_t_strfn='apr_strtoi64'
+    else
+        AC_ERROR([could not determine the size of off_t])
+    fi
+    # Per OS tuning...
+    case $host in
+    *-mingw*)
+        off_t_value=apr_int64_t
+        off_t_fmt='#define APR_OFF_T_FMT "I64d"'
+        off_t_strfn='_strtoi64'
+        ;;
+    esac
+else
+   # Fallback on int
+   off_t_value=apr_int32_t
+   off_t_fmt=d
+   off_t_strfn='strtoi'
+fi
+AC_MSG_RESULT($off_t_value)
+
+# Regardless of whether _LARGEFILE64_SOURCE is used, on some
+# platforms _FILE_OFFSET_BITS will affect the size of ino_t and hence
+# the build-time ABI may be different from the apparent ABI when using
+# APR with another package which *does* define _FILE_OFFSET_BITS.
+# (Exactly as per the case above with off_t where LFS is *not* used)
+#
+# To be safe, hard-code apr_ino_t as 'unsigned long' or 'unsigned int'
+# iff that is exactly the size of ino_t here; otherwise use ino_t as existing
+# releases did.  To be correct, apr_ino_t should have been made an
+# ino64_t as apr_off_t is off64_t, but this can't be done now without
+# breaking ABI.
+
+# Per OS tuning...
+case $host in
+*mingw*)
+    ino_t_value=apr_int64_t
+    ;;
+*)
+    ino_t_value=ino_t
+    APR_CHECK_SIZEOF_EXTENDED(AC_INCLUDES_DEFAULT, ino_t, $ac_cv_sizeof_long)
+    if test $ac_cv_sizeof_ino_t = 4; then
+        if test $ac_cv_sizeof_long = 4; then
+            ino_t_value="unsigned long"
+        else
+            ino_t_value="unsigned int"
+        fi
+    fi
+    ;;
+esac
+AC_MSG_NOTICE([using $ino_t_value for ino_t])
+
+# Checks for endianness
+AC_C_BIGENDIAN
+if test $ac_cv_c_bigendian = yes; then
+    bigendian=1
+else
+    bigendian=0
+fi
+
+APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>
+#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)
+AC_SUBST(long_value)
+AC_SUBST(int64_value)
+AC_SUBST(off_t_value)
+AC_SUBST(size_t_value)
+AC_SUBST(ssize_t_value)
+AC_SUBST(socklen_t_value)
+AC_SUBST(int64_t_fmt) 
+AC_SUBST(uint64_t_fmt) 
+AC_SUBST(uint64_t_hex_fmt) 
+AC_SUBST(ssize_t_fmt) 
+AC_SUBST(size_t_fmt)
+AC_SUBST(off_t_fmt) 
+AC_SUBST(pid_t_fmt)
+AC_SUBST(int64_literal) 
+AC_SUBST(uint64_literal) 
+AC_SUBST(stdint) 
+AC_SUBST(bigendian)
+AC_SUBST(aprlfs)
+AC_SUBST(have_iovec)
+AC_SUBST(ino_t_value)
+
+dnl ----------------------------- Checking for string functions
+AC_CHECK_FUNCS(strnicmp, have_strnicmp="1", have_strnicmp="0")
+AC_CHECK_FUNCS(strncasecmp, have_strncasecmp="1", have_strncasecmp="0")
+AC_CHECK_FUNCS(stricmp, have_stricmp="1", have_stricmp="0")
+AC_CHECK_FUNCS(strcasecmp, have_strcasecmp="1", have_strcasecmp="0")
+AC_CHECK_FUNCS(strdup, have_strdup="1", have_strdup="0")
+AC_CHECK_FUNCS(strstr, have_strstr="1", have_strstr="0")
+AC_CHECK_FUNCS(memchr, have_memchr="1", have_memchr="0")
+AC_CHECK_FUNC($int64_strfn, have_int64_strfn="1", have_int64_strfn="0")
+
+dnl ----------------------------- We have a fallback position
+if test "$have_int64_strfn" = "0" && test "$int64_strfn" = "strtoll"; then
+    int64_strfn="strtoq"
+    AC_CHECK_FUNC(strtoq, [have_int64_strfn=1], [have_int64_strfn=0])
+fi
+
+if test "$have_int64_strfn" = "1"; then
+  AC_DEFINE_UNQUOTED(APR_INT64_STRFN, [$int64_strfn],
+      [Define as function which can be used for conversion of strings to apr_int64_t])
+fi
+
+AC_SUBST(have_strnicmp)
+AC_SUBST(have_strncasecmp)
+AC_SUBST(have_stricmp)
+AC_SUBST(have_strcasecmp)
+AC_SUBST(have_strdup)
+AC_SUBST(have_strstr)
+AC_SUBST(have_memchr)
+
+if test "$off_t_strfn" = "apr_strtoi64" && test "$have_int64_strfn" = "1"; then
+    off_t_strfn=$int64_strfn
+fi
+AC_DEFINE_UNQUOTED(APR_OFF_T_STRFN, [$off_t_strfn],
+          [Define as function used for conversion of strings to apr_off_t])
+
+dnl ----------------------------- Checking for DSO support
+echo "${nl}Checking for DSO..."
+AC_ARG_ENABLE(dso,
+  [  --disable-dso           Disable DSO support ],
+  [if test "x$enableval" = "xyes"; then
+      dsotype=any
+   else
+      dsotype=$enableval
+   fi
+  ], [dsotype=any])
+
+if test "$dsotype" = "any"; then
+    if test "$dsotype" = "any"; then
+      case $host in
+        *darwin[[0-8]]\.*) 
+          # Original Darwin, not for 9.0!:
+          AC_CHECK_FUNC(NSLinkModule, [dsotype=dyld]);;
+        hppa*-hpux[[1-9]]\.*|hppa*-hpux1[[01]]*)
+          # shl is specific to parisc hpux SOM binaries, not used for 64 bit
+          AC_CHECK_LIB(dld, shl_load, [have_shl=1])
+          if test "$ac_cv_sizeof_voidp$have_shl" = "41"; then
+            dsotype=shl; APR_ADDTO(LIBS,-ldld)
+          fi;;
+        *mingw*|*-os2*)
+          # several 'other's below probably belong up here.  If they always
+          # use a platform implementation and shouldn't test the dlopen/dlfcn
+          # features, then bring them up here.
+          # But if they -should- optionally use dlfcn, and/or need the config
+          # detection of dlopen/dlsym, do not move them up.
+          dsotype=other ;;
+      esac
+    fi
+    # Normal POSIX:
+    if test "$dsotype" = "any"; then
+      AC_CHECK_FUNC(dlopen, [dsotype=dlfcn])
+    fi
+    if test "$dsotype" = "any"; then
+      AC_CHECK_LIB(dl, dlopen, [dsotype=dlfcn; APR_ADDTO(LIBS,-ldl)])
+    fi
+    if test "$dsotype" = "dlfcn"; then
+        # ReliantUnix has dlopen() in libc but dlsym() in libdl :(
+        AC_CHECK_FUNC(dlsym, [], 
+          [AC_CHECK_LIB(dl, dlsym, 
+             [APR_ADDTO(LIBS, -ldl)],
+             [dsotype=any
+              echo "Weird: dlopen() was found but dlsym() was not found!"])])
+    fi
+    if test "$dsotype" = "any"; then
+      # BeOS:
+      AC_CHECK_LIB(root, load_image, [dsotype=other])
+    fi
+    # Everything else:
+    if test "$dsotype" = "any"; then
+        case $host in
+        *os390|*os400|*-aix*)
+          # Some -aix5 will use dl, no hassles.  Keep that pattern here.
+          dsotype=other ;;
+        *-hpux*)
+          if test "$have_shl" = "1"; then
+            dsotype=shl; APR_ADDTO(LIBS,-ldld)
+          fi;;
+        esac
+    fi
+fi
+
+if test "$dsotype" = "any"; then
+    AC_MSG_ERROR([Could not detect suitable DSO implementation])
+elif test "$dsotype" = "no"; then
+    aprdso="0"
+else
+    case "$dsotype" in
+    dlfcn) AC_DEFINE(DSO_USE_DLFCN, 1, [Define if DSO support uses dlfcn.h]);;
+    shl)   AC_DEFINE(DSO_USE_SHL, 1, [Define if DSO support uses shl_load]);;
+    dyld)  AC_DEFINE(DSO_USE_DYLD, 1, [Define if DSO support uses dyld.h]);;
+    other) ;; # Use whatever is in dso/OSDIR
+    *) AC_MSG_ERROR([Unknown DSO implementation "$dsotype"]);;
+    esac
+    aprdso="1"
+    apr_modules="$apr_modules dso"
+fi
+
+AC_SUBST(aprdso)
+
+dnl ----------------------------- Checking for Processes
+echo "${nl}Checking for Processes..."
+
+AC_CHECK_FUNCS(waitpid)
+
+AC_ARG_ENABLE(other-child,
+  [  --enable-other-child    Enable reliable child processes ],
+  [ if test "$enableval" = "yes"; then
+        oc="1"
+    else
+        oc="0"
+    fi ],
+  [ oc=1 ] ) 
+  
+AC_SUBST(oc) 
+
+if test -z "$have_proc_invoked"; then
+  have_proc_invoked="0"
+fi
+
+AC_SUBST(have_proc_invoked)
+
+AC_MSG_CHECKING(for Variable Length Arrays)
+APR_TRY_COMPILE_NO_WARNING([],
+[
+    int foo[argc];
+    foo[0] = 0;
+], vla_msg=yes, vla_msg=no )
+AC_MSG_RESULT([$vla_msg])
+if test "$vla_msg" = "yes"; then
+    AC_DEFINE(HAVE_VLA, 1, [Define if C compiler supports VLA])
+fi
+
+AC_CACHE_CHECK(struct rlimit,ac_cv_struct_rlimit,[
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+main()
+{
+    struct rlimit limit;
+    limit.rlim_cur = 0;
+    limit.rlim_max = 0;
+    exit(0);
+}], [
+    ac_cv_struct_rlimit=yes ], [
+    ac_cv_struct_rlimit=no ], [
+    ac_cv_struct_rlimit=no ] ) ] )
+struct_rlimit=0
+test "x$ac_cv_struct_rlimit" = xyes && struct_rlimit=1
+AC_SUBST(struct_rlimit)
+
+dnl ----------------------------- Checking for Locking Characteristics 
+echo "${nl}Checking for Locking..."
+
+AC_CHECK_FUNCS(semget semctl flock)
+AC_CHECK_HEADERS(semaphore.h OS.h)
+AC_SEARCH_LIBS(sem_open, rt)
+AC_CHECK_FUNCS(sem_close sem_unlink sem_post sem_wait create_sem)
+
+# Some systems return ENOSYS from sem_open.
+AC_CACHE_CHECK(for working sem_open,ac_cv_func_sem_open,[
+AC_TRY_RUN([
+#include <errno.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <semaphore.h>
+#ifndef SEM_FAILED
+#define SEM_FAILED (-1)
+#endif
+main()
+{
+    sem_t *psem;
+    const char *sem_name = "/apr_autoconf";
+
+    psem = sem_open(sem_name, O_CREAT, 0644, 1);
+    if (psem == (sem_t *)SEM_FAILED) {
+	exit(1);
+    }
+    sem_close(psem);
+    psem = sem_open(sem_name, O_CREAT | O_EXCL, 0644, 1);
+    if (psem != (sem_t *)SEM_FAILED) {
+        sem_close(psem);
+        exit(1);
+    }
+    sem_unlink(sem_name);
+    exit(0);
+}], [ac_cv_func_sem_open=yes], [ac_cv_func_sem_open=no],
+[ac_cv_func_sem_open=no])])
+
+# It's stupid, but not all platforms have union semun, even those that need it.
+AC_MSG_CHECKING(for union semun in sys/sem.h)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/sem.h>
+],[
+union semun arg;
+semctl(0, 0, 0, arg);
+], [have_union_semun="1" union_semun=yes ]
+msg=yes, [
+have_union_semun="0"
+msg=no ] )
+AC_MSG_RESULT([$msg])
+AC_SUBST(have_union_semun)
+
+dnl Checks for libraries.
+APR_CHECK_DEFINE(LOCK_EX, sys/file.h)
+APR_CHECK_DEFINE(F_SETLK, fcntl.h)
+APR_CHECK_DEFINE(SEM_UNDO, sys/sem.h)
+
+# We are assuming that if the platform doesn't have POLLIN, it doesn't have
+# any POLL definitions.
+APR_CHECK_DEFINE_FILES(POLLIN, poll.h sys/poll.h)
+
+if test "$threads" = "1"; then
+    APR_CHECK_DEFINE(PTHREAD_PROCESS_SHARED, pthread.h)
+    AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
+    # Some systems have setpshared and define PROCESS_SHARED, but don't 
+    # really support PROCESS_SHARED locks.  So, we must validate that we 
+    # can go through the steps without receiving some sort of system error.
+    # Linux and older versions of AIX have this problem.
+    APR_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED func:pthread_mutexattr_setpshared, [
+      AC_CACHE_CHECK([for working PROCESS_SHARED locks], apr_cv_process_shared_works, [
+      AC_TRY_RUN([
+#include <sys/types.h>
+#include <pthread.h>
+        int main()
+        {
+            pthread_mutex_t mutex;
+            pthread_mutexattr_t attr;
+            if (pthread_mutexattr_init(&attr))
+                exit(1);
+            if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED))
+                exit(2);
+            if (pthread_mutex_init(&mutex, &attr))
+                exit(3);
+            if (pthread_mutexattr_destroy(&attr))
+                exit(4);
+            if (pthread_mutex_destroy(&mutex))
+                exit(5);
+            exit(0);
+        }], [apr_cv_process_shared_works=yes], [apr_cv_process_shared_works=no])])
+      # Override detection of pthread_mutexattr_setpshared
+      ac_cv_func_pthread_mutexattr_setpshared=$apr_cv_process_shared_works])
+
+    if test "$ac_cv_func_pthread_mutexattr_setpshared" = "yes"; then
+        APR_CHECK_PTHREAD_ROBUST_SHARED_MUTEX
+    fi
+fi
+
+# See which lock mechanisms we can support on this system.
+APR_IFALLYES(header:semaphore.h func:sem_open func:sem_close dnl
+             func:sem_unlink func:sem_post func:sem_wait,
+             hasposixser="1", hasposixser="0")
+APR_IFALLYES(func:semget func:semctl define:SEM_UNDO, hassysvser="1", 
+             hassysvser="0")
+APR_IFALLYES(func:flock define:LOCK_EX, hasflockser="1", hasflockser="0")
+APR_IFALLYES(header:fcntl.h define:F_SETLK, hasfcntlser="1", hasfcntlser="0")
+# note: the current APR use of shared mutex requires /dev/zero
+APR_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl
+             func:pthread_mutexattr_setpshared dnl
+             file:/dev/zero,
+             hasprocpthreadser="1", hasprocpthreadser="0")
+APR_IFALLYES(header:OS.h func:create_sem, hasbeossem="1", hasbeossem="0")
+
+# See which lock mechanism we'll select by default on this system.
+# The last APR_DECIDE to execute sets the default.
+# At this stage, we match the ordering in Apache 1.3
+# which is (highest to lowest): sysvsem -> fcntl -> flock.
+# POSIX semaphores and cross-process pthread mutexes are not
+# used by default since they have less desirable behaviour when
+# e.g. a process holding the mutex segfaults.
+# The BEOSSEM decision doesn't require any substitutions but is
+# included here to prevent the fcntl() branch being selected
+# from the decision making.
+APR_BEGIN_DECISION([apr_lock implementation method])
+APR_IFALLYES(func:flock define:LOCK_EX,
+            APR_DECIDE(USE_FLOCK_SERIALIZE, [4.2BSD-style flock()]))
+APR_IFALLYES(header:fcntl.h define:F_SETLK,
+            APR_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()]))
+APR_IFALLYES(func:semget func:semctl define:SEM_UNDO,
+            APR_DECIDE(USE_SYSVSEM_SERIALIZE, [SysV IPC semget()]))
+APR_IFALLYES(header:OS.h func:create_sem, 
+            APR_DECIDE(USE_BEOSSEM, [BeOS Semaphores])) 
+if test "x$apr_lock_method" != "x"; then
+    APR_DECISION_FORCE($apr_lock_method)
+fi
+APR_END_DECISION
+AC_DEFINE_UNQUOTED($ac_decision)
+
+flockser="0"
+sysvser="0"
+posixser="0"
+procpthreadser="0"
+fcntlser="0"
+case $ac_decision in
+    USE_FLOCK_SERIALIZE )
+        flockser="1"
+        ;;
+    USE_FCNTL_SERIALIZE )
+        fcntlser="1"
+        ;;
+    USE_SYSVSEM_SERIALIZE )
+        sysvser="1"
+        ;;
+    USE_POSIXSEM_SERIALIZE )
+        posixser="1"
+        ;;
+    USE_PROC_PTHREAD_SERIALIZE )
+        procpthreadser="1"
+        ;;
+    USE_BEOSSEM )
+        beossem="1"
+        ;;
+esac
+
+if test $hasfcntlser = "1"; then
+AC_MSG_CHECKING(if fcntl returns EACCES when F_SETLK is already held)
+AC_TRY_RUN([
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+#include <fcntl.h>
+#include <errno.h>
+
+int fd;
+struct flock proc_mutex_lock_it = {0};
+const char *fname = "conftest.fcntl";
+
+int main()
+{
+    int rc, status;;
+    proc_mutex_lock_it.l_whence = SEEK_SET;   /* from current point */
+    proc_mutex_lock_it.l_type = F_WRLCK;      /* set exclusive/write lock */
+
+    fd = creat(fname, S_IRWXU);
+    unlink(fname);
+
+    if (rc = lockit()) {
+        exit(-1);
+    }
+
+    if (fork()) {
+        wait(&status);
+    }
+    else {
+      return(lockit());
+    }
+
+    close(fd);
+    exit(WEXITSTATUS(status) != EACCES);
+}
+
+int lockit() {
+    int rc;
+    do {
+        rc = fcntl(fd, F_SETLK, &proc_mutex_lock_it);
+    } while ( rc < 0 && errno == EINTR);
+
+    return (rc < 0) ? errno : 0;
+}], [apr_fcntl_tryacquire_eacces=1], [apr_fcntl_tryacquire_eacces=0], [apr_fcntl_tryacquire_eacces=0])
+fi
+
+if test "$apr_fcntl_tryacquire_eacces" = "1"; then
+  AC_DEFINE(FCNTL_TRYACQUIRE_EACCES, 1, [Define if fcntl returns EACCES when F_SETLK is already held])
+  AC_MSG_RESULT(yes)
+else
+  AC_MSG_RESULT(no)
+fi
+
+
+AC_SUBST(hasflockser)
+AC_SUBST(hassysvser)
+AC_SUBST(hasposixser)
+AC_SUBST(hasfcntlser)
+AC_SUBST(hasprocpthreadser)
+AC_SUBST(flockser)
+AC_SUBST(sysvser)
+AC_SUBST(posixser)
+AC_SUBST(fcntlser)
+AC_SUBST(procpthreadser)
+AC_SUBST(pthreadser)
+
+AC_MSG_CHECKING(if all interprocess locks affect threads)
+if test "x$apr_process_lock_is_global" = "xyes"; then
+    proclockglobal="1"
+    AC_MSG_RESULT(yes)
+else
+    proclockglobal="0"
+    AC_MSG_RESULT(no)
+fi
+
+AC_SUBST(proclockglobal)
+
+AC_MSG_CHECKING(if POSIX sems affect threads in the same process)
+if test "x$apr_posixsem_is_global" = "xyes"; then
+  AC_DEFINE(POSIXSEM_IS_GLOBAL, 1, 
+            [Define if POSIX semaphores affect threads within the process])
+  AC_MSG_RESULT(yes)
+else
+  AC_MSG_RESULT(no)
+fi
+
+AC_MSG_CHECKING(if SysV sems affect threads in the same process)
+if test "x$apr_sysvsem_is_global" = "xyes"; then
+  AC_DEFINE(SYSVSEM_IS_GLOBAL, 1,
+            [Define if SysV semaphores affect threads within the process])
+  AC_MSG_RESULT(yes)
+else
+  AC_MSG_RESULT(no)
+fi
+
+AC_MSG_CHECKING(if fcntl locks affect threads in the same process)
+if test "x$apr_fcntl_is_global" = "xyes"; then
+  AC_DEFINE(FCNTL_IS_GLOBAL, 1,
+            [Define if fcntl locks affect threads within the process])
+  AC_MSG_RESULT(yes)
+else
+  AC_MSG_RESULT(no)
+fi
+
+AC_MSG_CHECKING(if flock locks affect threads in the same process)
+if test "x$apr_flock_is_global" = "xyes"; then
+  AC_DEFINE(FLOCK_IS_GLOBAL, 1,
+            [Define if flock locks affect threads within the process])
+  AC_MSG_RESULT(yes)
+else
+  AC_MSG_RESULT(no)
+fi
+
+dnl ----------------------------- Checking for /dev/random 
+AC_MSG_CHECKING(for entropy source)
+
+why_no_rand=""
+
+AC_ARG_WITH(egd, 
+  [  --with-egd[[=DIR]]        use EGD-compatible socket],
+  [ AC_DEFINE(HAVE_EGD, 1, [Define if EGD is supported])
+    if test "$withval" = "yes"; then
+        AC_DEFINE_UNQUOTED(EGD_DEFAULT_SOCKET, ["/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"], 
+         [Define to list of paths to EGD sockets])
+    else
+        AC_DEFINE_UNQUOTED(EGD_DEFAULT_SOCKET, ["$withval"])
+    fi
+    AC_MSG_RESULT(EGD-compatible daemon)
+    rand="1"
+  ])
+
+if test "$rand" != "1"; then
+  AC_ARG_WITH(devrandom,
+    [  --with-devrandom[[=DEV]]  use /dev/random or compatible [[searches by default]]],
+    [ apr_devrandom="$withval" ], [ apr_devrandom="yes" ])
+
+  if test "$apr_devrandom" = "yes"; then
+    # /dev/random on OpenBSD doesn't provide random data, so
+    # prefer /dev/arandom, which does; see random(4).
+    for f in /dev/arandom /dev/urandom /dev/random; do
+      if test -r $f; then
+        apr_devrandom=$f
+        rand=1
+        break
+      fi
+    done
+  elif test "$apr_devrandom" != "no"; then
+    if test -r "$apr_devrandom"; then
+      rand="1"
+    else
+      AC_ERROR([$apr_devrandom not found or unreadable.])
+    fi
+  fi
+
+  if test "$rand" = "1"; then
+    case $host in
+      *os390)
+        if test $os_version -lt 1700; then
+          rand="0"
+          why_no_rand=" ($apr_devrandom unusable on z/OS before V1R7)"
+        fi
+        ;;
+    esac
+  fi
+
+  if test "$rand" = "1"; then
+    AC_DEFINE_UNQUOTED(DEV_RANDOM, ["$apr_devrandom"], [Define to path of random device])
+    AC_MSG_RESULT([$apr_devrandom])
+  fi
+fi
+
+if test "$rand" != "1"; then
+    case $host in
+        # we have built in support for OS/2
+        *-os2*)
+            AC_MSG_RESULT([Using OS/2 builtin random])
+            rand="1"
+            ;;
+        *)
+            if test "$rand" != "1"; then
+              if test "$ac_cv_lib_truerand_main" = "yes"; then
+                AC_DEFINE(HAVE_TRUERAND, 1, [Define if truerand is supported])
+                AC_MSG_RESULT(truerand)
+                rand="1"
+              else
+                AC_MSG_RESULT(not found$why_no_rand)
+                rand="0"
+              fi
+            fi
+            ;;
+    esac
+fi
+
+AC_SUBST(rand)
+
+dnl ----------------------------- Checking for File Info Support 
+echo "${nl}Checking for File Info Support..."
+AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_atimensec,
+struct stat.st_ctimensec, struct stat.st_mtimensec, struct stat.st_atim.tv_nsec,
+struct stat.st_ctim.tv_nsec, struct stat.st_mtim.tv_nsec,
+struct stat.st_atime_n, struct stat.st_ctime_n, struct stat.st_mtime_n],,,[
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif])
+
+APR_CHECK_DIRENT_INODE
+APR_CHECK_DIRENT_TYPE
+
+dnl ----------------------------- Checking for UUID Support 
+echo "${nl}Checking for OS UUID Support..."
+
+AC_CHECK_HEADERS(uuid.h uuid/uuid.h sys/uuid.h, break)
+
+apr_revert_save_LIBS=$LIBS
+
+# Prefer the flavor(s) that live in libc;
+AC_SEARCH_LIBS(uuid_create, uuid)
+AC_SEARCH_LIBS(uuid_generate, uuid)
+if test "$ac_cv_search_uuid_create" = "none required" -o \
+        "$ac_cv_search_uuid_generate" = "none required"; then
+ LIBS=$apr_revert_save_LIBS
+fi
+
+AC_CHECK_FUNCS(uuid_create uuid_generate)
+
+AC_CACHE_CHECK([for os uuid usability], [apr_cv_osuuid], [
+# Ensure this test closely mirrors misc/unix/rand.c!
+uuid_includes="
+#if defined(HAVE_SYS_TYPES_H)
+#include <sys/types.h>
+#endif
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+#if defined(HAVE_UUID_H)
+#include <uuid.h>
+#elif defined(HAVE_UUID_UUID_H)
+#include <uuid/uuid.h>
+#elif defined(HAVE_SYS_UUID_H)
+#include <sys/uuid.h>
+#endif
+"
+ apr_cv_osuuid=no
+ if test $ac_cv_func_uuid_create = yes; then
+  AC_TRY_LINK([$uuid_includes], [
+    uuid_t g;
+    uint32_t s;
+    uuid_create(&g, &s);
+    if (s == uuid_s_ok) s = 0;
+  ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_create=no])
+ fi
+ if test $ac_cv_func_uuid_generate = yes; then
+  AC_TRY_LINK([$uuid_includes], [
+    uuid_t g;
+    uuid_generate(g);
+  ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_generate=no])
+ fi 
+])
+
+if test $apr_cv_osuuid = yes; then
+  osuuid="1"
+else
+  osuuid="0"
+  LIBS=$apr_revert_save_LIBS
+fi
+AC_SUBST(osuuid)
+
+
+dnl ----------------------------- Checking for Time Support 
+echo "${nl}Checking for Time Support..."
+
+AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[
+#include <sys/types.h>
+#include <time.h>])
+
+dnl ----------------------------- Checking for Networking Support 
+echo "${nl}Checking for Networking support..."
+APR_TYPE_IN_ADDR
+if test "$ac_cv_type_in_addr" = "yes"; then
+  have_in_addr="1"
+else
+  have_in_addr="0"
+fi
+
+AC_MSG_CHECKING([if fd == socket on this platform])
+if test "x$file_as_socket" != "x0" ; then
+    file_as_socket="1";
+    echo "yes"
+else
+    echo "no"
+fi
+
+AC_SUBST(have_in_addr)
+AC_SUBST(file_as_socket)
+
+if test "$ac_cv_func_poll $file_as_socket" = "yes 1"; then
+    AC_DEFINE(WAITIO_USES_POLL, 1,
+              [Define if apr_wait_for_io_or_timeout() uses poll(2)])
+fi
+
+# Check the types only if we have gethostbyname_r
+if test "$ac_cv_func_gethostbyname_r" = "yes"; then
+    APR_CHECK_GETHOSTBYNAME_R_STYLE
+fi
+
+# Check the types only if we have getservbyname_r
+if test "$ac_cv_func_getservbyname_r" = "yes"; then
+    APR_CHECK_GETSERVBYNAME_R_STYLE
+fi
+
+APR_CHECK_TCP_NODELAY_INHERITED
+APR_CHECK_O_NONBLOCK_INHERITED
+APR_CHECK_TCP_NODELAY_WITH_CORK
+
+# Look for a way of corking TCP...
+APR_CHECK_DEFINE(TCP_CORK, netinet/tcp.h)
+APR_CHECK_DEFINE(TCP_NOPUSH, netinet/tcp.h)
+apr_tcp_nopush_flag="0"
+have_corkable_tcp="0"
+if test "x$ac_cv_define_TCP_CORK" = "xyes"; then
+    apr_tcp_nopush_flag="TCP_CORK"
+    have_corkable_tcp="1"
+else
+    case $host in
+        *linux*)
+            AC_EGREP_CPP(yes,[
+#include <linux/socket.h>
+#ifdef TCP_CORK
+yes
+#endif
+            ],[
+                apr_tcp_nopush_flag="3"
+                have_corkable_tcp="1"
+            ])
+            ;;
+        *)
+            ;;
+    esac
+fi
+if test "x$ac_cv_define_TCP_NOPUSH" = "xyes"; then
+    apr_tcp_nopush_flag="TCP_NOPUSH"
+    have_corkable_tcp="1"
+fi
+
+APR_CHECK_DEFINE(SO_ACCEPTFILTER, sys/socket.h)
+if test "x$ac_cv_define_SO_ACCEPTFILTER" = "xyes"; then
+    acceptfilter="1"
+else
+    acceptfilter="0"
+fi
+
+APR_CHECK_SCTP
+APR_CHECK_MCAST
+
+AC_SUBST(apr_tcp_nopush_flag)
+AC_SUBST(have_corkable_tcp)
+AC_SUBST(acceptfilter)
+AC_SUBST(have_sctp)
+
+AC_CHECK_FUNCS(set_h_errno)
+
+echo "${nl}Checking for IPv6 Networking support..."
+dnl Start of checking for IPv6 support...
+
+AC_ARG_ENABLE(ipv6,
+  [  --disable-ipv6          Disable IPv6 support in APR.],
+  [ if test "$enableval" = "no"; then
+        user_disabled_ipv6=1
+    fi ],
+  [ user_disabled_ipv6=0 ] )
+
+case $host in
+  *)
+    broken_ipv6=0
+esac
+
+AC_SEARCH_LIBS(getaddrinfo, socket inet6)
+AC_SEARCH_LIBS(gai_strerror, socket inet6)
+AC_SEARCH_LIBS(getnameinfo, socket inet6)
+AC_CHECK_FUNCS(gai_strerror)
+APR_CHECK_WORKING_GETADDRINFO
+APR_CHECK_NEGATIVE_EAI
+APR_CHECK_WORKING_GETNAMEINFO
+APR_CHECK_SOCKADDR_IN6
+APR_CHECK_SOCKADDR_STORAGE
+
+have_ipv6="0"
+if test "$user_disabled_ipv6" = 1; then
+    ipv6_result="no -- disabled by user"
+else
+    if test "x$broken_ipv6" = "x0"; then
+        if test "x$have_sockaddr_in6" = "x1"; then
+            if test "x$ac_cv_working_getaddrinfo" = "xyes"; then
+                if test "x$ac_cv_working_getnameinfo" = "xyes"; then
+                    APR_CHECK_GETADDRINFO_ADDRCONFIG
+                    have_ipv6="1"
+                    ipv6_result="yes"
+                else
+                    ipv6_result="no -- no getnameinfo"
+                fi
+            else
+                ipv6_result="no -- no working getaddrinfo"
+            fi
+        else
+            ipv6_result="no -- no sockaddr_in6"
+        fi
+    else
+        ipv6_result="no -- the platform has known problems supporting IPv6"
+    fi
+fi
+
+AC_MSG_CHECKING(if APR supports IPv6)
+AC_MSG_RESULT($ipv6_result)
+
+AC_SUBST(have_ipv6)
+
+# hstrerror is only needed if IPv6 is not enabled,
+# so getaddrinfo/gai_strerror are not used.
+if test $have_ipv6 = 0; then
+  AC_SEARCH_LIBS(hstrerror, resolv,
+    [AC_DEFINE(HAVE_HSTRERROR, 1, [Define if hstrerror is present])])
+fi
+
+dnl Check for langinfo support
+
+AC_CHECK_HEADERS(langinfo.h)
+AC_CHECK_FUNCS(nl_langinfo)
+
+dnl ------------------------------ Defaults for some platform nuances
+
+dnl Do we have a Win32-centric Unicode FS?
+APR_SETIFNULL(have_unicode_fs, [0])
+AC_SUBST(have_unicode_fs)
+
+APR_SETIFNULL(apr_has_xthread_files, [0])
+AC_SUBST(apr_has_xthread_files)
+
+APR_SETIFNULL(apr_procattr_user_set_requires_password, [0])
+AC_SUBST(apr_procattr_user_set_requires_password)
+
+APR_SETIFNULL(apr_thread_func, [])
+AC_SUBST(apr_thread_func)
+
+APR_SETIFNULL(apr_has_user, [1])
+AC_SUBST(apr_has_user)
+
+dnl ----------------------------- Finalize the variables
+
+echo "${nl}Restore user-defined environment settings..."
+
+APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
+APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
+APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
+APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
+APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
+AC_SUBST(NOTEST_CPPFLAGS)
+AC_SUBST(NOTEST_CFLAGS)
+AC_SUBST(NOTEST_LDFLAGS)
+AC_SUBST(NOTEST_LIBS)
+AC_SUBST(NOTEST_INCLUDES)
+
+dnl ----------------------------- Construct the files
+
+AC_SUBST(INTERNAL_CPPFLAGS)
+AC_SUBST(LDLIBS)
+AC_SUBST(INCLUDES)
+AC_SUBST(AR)
+AC_SUBST(RM)
+AC_SUBST(OSDIR)
+AC_SUBST(DEFAULT_OSDIR)
+AC_SUBST(EXEEXT)
+AC_SUBST(LIBTOOL_LIBS)
+
+# Use -no-install or -no-fast-install to link the test 
+# programs on all platforms but Darwin, where it would cause
+# the programs to be linked against installed versions of
+# libapr instead of those just built.
+case $host in
+    *-apple-darwin*)
+        LT_NO_INSTALL=""
+        ;;
+    *-mingw*)
+        LT_NO_INSTALL="-no-fast-install"
+        ;;
+    *)
+        LT_NO_INSTALL="-no-install"
+        ;;
+esac
+AC_SUBST(LT_NO_INSTALL)
+
+#
+# BSD/OS (BSDi) needs to use a different include syntax in the Makefiles
+#
+case $host in
+*bsdi*)
+    # Check whether they've installed GNU make
+    if make --version > /dev/null 2>&1; then 
+	INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
+	INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
+    else
+	# BSDi make
+	INCLUDE_RULES=".include \"$apr_buildout/apr_rules.mk\""
+	INCLUDE_OUTPUTS=".include \"$apr_srcdir/build-outputs.mk\""
+    fi
+    ;;
+*)
+    INCLUDE_RULES="include $apr_buildout/apr_rules.mk"
+    INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk"
+    ;;
+esac
+AC_SUBST(INCLUDE_RULES)
+AC_SUBST(INCLUDE_OUTPUTS)
+
+AC_CONFIG_FILES([Makefile
+                 include/apr.h
+                 build/apr_rules.mk
+                 build/pkg/pkginfo
+                 apr-$APR_MAJOR_VERSION-config:apr-config.in
+                 apr.pc])
+
+if test -d $srcdir/test; then
+   AC_CONFIG_FILES([test/Makefile test/internal/Makefile])
+fi
+
+dir=include/arch/unix
+test -d $dir || $MKDIR $dir
+
+AC_CONFIG_COMMANDS([default], [
+# Commands run at the end of config.status:
+for i in $APR_SAVE_HEADERS; do
+  if cmp -s $i $i.save 2>/dev/null; then
+    mv $i.save $i
+    AC_MSG_NOTICE([$i is unchanged])
+  fi
+  rm -f $i.save
+done
+chmod +x apr-$APR_MAJOR_VERSION-config
+],[
+dnl This section is expanded by configure UNQUOTED so variable 
+dnl references must be backslash-escaped as necessary.
+
+# Commands run at the beginning of config.status:
+APR_SAVE_HEADERS="include/apr.h include/arch/unix/apr_private.h"
+APR_MAJOR_VERSION=$APR_MAJOR_VERSION
+APR_PLATFORM=$host
+
+for apri in \${APR_SAVE_HEADERS}; do
+  test -r \${apri} && mv \${apri} \${apri}.save
+done
+])
+
+AC_OUTPUT

Deleted: vendor/apache/apr/1.5.2/docs/canonical_filenames.html
===================================================================
--- vendor/apache/apr/dist/docs/canonical_filenames.html	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/docs/canonical_filenames.html	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,156 +0,0 @@
-<HTML>
-<HEAD><TITLE>APR Canonical Filenames</TITLE></HEAD>
-<BODY>
-<h1>APR Canonical Filename</h1>
-
-<h2>Requirements</h2>
-
-<p>APR porters need to address the underlying discrepancies between
-file systems.  To achieve a reasonable degree of security, the
-program depending upon APR needs to know that two paths may be
-compared, and that a mismatch is guarenteed to reflect that the
-two paths do not return the same resource</p>.
-
-<p>The first discrepancy is in volume roots.  Unix and pure deriviates
-have only one root path, "/".  Win32 and OS2 share root paths of
-the form "D:/", D: is the volume designation.  However, this can
-be specified as "//./D:/" as well, indicating D: volume of the 
-'this' machine.  Win32 and OS2 also may employ a UNC root path,
-of the form "//server/share/" where share is a share-point of the
-specified network server.  Finally, NetWare root paths are of the
-form "server/volume:/", or the simpler "volume:/" syntax for 'this'
-machine.  All these non-Unix file systems accept volume:path,
-without a slash following the colon, as a path relative to the
-current working directory, which APR will treat as ambigious, that
-is, neither an absolute nor a relative path per se.</p>
-
-<p>The second discrepancy is in the meaning of the 'this' directory.
-In general, 'this' must be eliminated from the path where it occurs.
-The syntax "path/./" and "path/" are both aliases to path.  However,
-this isn't file system independent, since the double slash "//" has
-a special meaning on OS2 and Win32 at the start of the path name,
-and is invalid on those platforms before the "//server/share/" UNC
-root path is completed.  Finally, as noted above, "//./volume/" is
-legal root syntax on WinNT, and perhaps others.</p>
-
-<p>The third discrepancy is in the context of the 'parent' directory.
-When "parent/path/.." occurs, the path must be unwound to "parent".
-It's also critical to simply truncate leading "/../" paths to "/",
-since the parent of the root is root.  This gets tricky on the
-Win32 and OS2 platforms, since the ".." element is invalid before
-the "//server/share/" is complete, and the "//server/share/../"
-seqence is the complete UNC root "//server/share/".  In relative
-paths, leading ".." elements are significant, until they are merged
-with an absolute path.  The relative form must only retain the ".."
-segments as leading segments, to be resolved once merged to another
-relative or an absolute path.</p>
-
-<p>The fourth discrepancy occurs with acceptance of alternate character
-codes for the same element.  Path seperators are not retained within
-the APR canonical forms.  The OS filesystem and APR (slashed) forms
-can both be returned as strings, to be used in the proper context.
-Unix, Win32 and Netware all accept slashes and backslashes as the
-same path seperator symbol, although unix strictly accepts slashes.
-While the APR form of the name strictly uses slashes, always consider
-that there could be a platform that actually accepts slashes as a
-character within a segment name.</p>
-
-<p>The fifth and worst discrepancy plauges Win32, OS2, Netware, and some
-filesystems mounted in Unix.  Case insensitivity can permit the same
-file to slip through in both it's proper case and alternate cases.
-Simply changing the case is insufficient for any character set beyond
-ASCII, since various dilectic forms of characters suffer from one to
-many or many to one translations.  An example would be u-umlaut, which
-might be accepted as a single character u-umlaut, a two character
-sequence u and the zero-width umlaut, the upper case form of the same,
-or perhaps even a captial U alone.  This can be handled in different
-ways depending on the purposes of the APR based program, but the one
-requirement is that the path must be absolute in order to resolve these
-ambiguities.  Methods employed include comparison of device and inode
-file uniqifiers, which is a fairly fast operation, or quering the OS
-for the true form of the name, which can be much slower.  Only the
-acknowledgement of the file names by the OS can validate the equality
-of two different cases of the same filename.</p>
-
-<p>The sixth discrepancy, illegal or insignificant characters, is especially 
-significant in non-unix file systems.  Trailing periods are accepted
-but never stored, therefore trailing periods must be ignored for any
-form of comparison.  And all OS's have certain expectations of what
-characters are illegal (or undesireable due to confusion.)</p>
-
-<p>A final warning, canonical functions don't transform or resolve case
-or character ambiguity issues until they are resolved into an absolute
-path.  The relative canonical path, while useful, while useful for URL
-or similar identifiers, cannot be used for testing or comparison of file 
-system objects.</p>
-
-<hr>
-
-<h2>Canonical API</h2>
-
-Functions to manipulate the apr_canon_file_t (an opaque type) include:
-
-<ul>
-<li>Create canon_file_t (from char* path and canon_file_t parent path)
-<li>Merged canon_file_t (from path and parent, both canon_file_t)
-<li>Get char* path of all or some segments
-<li>Get path flags of IsRelative, IsVirtualRoot, and IsAbsolute
-<li>Compare two canon_file_t structures for file equality
-</ul>
-
-<p>The path is corrected to the file system case only if is in absolute 
-form.  The apr_canon_file_t should be preserved as long as possible and 
-used as the parent to create child entries to reduce the number of expensive 
-stat and case canonicalization calls to the OS.</p>
-
-<p>The comparison operation provides that the APR can postpone correction
-of case by simply relying upon the device and inode for equivilance.  The
-stat implementation provides that two files are the same, while their
-strings are not equivilant, and eliminates the need for the operating
-system to return the proper form of the name.</p>
-
-<p>In any case, returning the char* path, with a flag to request the proper
-case, forces the OS calls to resolve the true names of each segment.  Where
-there is a penality for this operation and the stat device and inode test
-is faster, case correction is postponed until the char* result is requested.
-On platforms that identify the inode, device, or proper name interchangably
-with no penalities, this may occur when the name is initially processed.</p>
-
-<hr>
-
-<h2>Unix Example</h2>
-
-<p>First the simplest case:</p>
-
-<pre>
-Parse Canonical Name 
-accepts parent path as canonical_t
-        this path as string
-
-Split this path Segments on '/'
-
-For each of this path Segments
-  If first Segment
-    If this Segment is Empty ([nothing]/)
-      Append this Root Segment (don't merge)
-      Continue to next Segment
-    Else is relative
-      Append parent Segments (to merge)
-      Continue with this Segment
-  If Segment is '.' or empty (2 slashes)
-    Discard this Segment
-    Continue with next Segment
-  If Segment is '..'
-    If no previous Segment or previous Segment is '..'
-      Append this Segment
-      Continue with next Segment
-    If previous Segment and previous is not Root Segment
-      Discard previous Segment
-    Discard this Segment
-    Continue with next Segment
-  Append this Relative Segment
-  Continue with next Segment        
-</pre>
-
-</BODY>
-</HTML>
\ No newline at end of file

Copied: vendor/apache/apr/1.5.2/docs/canonical_filenames.html (from rev 9273, vendor/apache/apr/dist/docs/canonical_filenames.html)
===================================================================
--- vendor/apache/apr/1.5.2/docs/canonical_filenames.html	                        (rev 0)
+++ vendor/apache/apr/1.5.2/docs/canonical_filenames.html	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,156 @@
+<HTML>
+<HEAD><TITLE>APR Canonical Filenames</TITLE></HEAD>
+<BODY>
+<h1>APR Canonical Filename</h1>
+
+<h2>Requirements</h2>
+
+<p>APR porters need to address the underlying discrepancies between
+file systems.  To achieve a reasonable degree of security, the
+program depending upon APR needs to know that two paths may be
+compared, and that a mismatch is guarenteed to reflect that the
+two paths do not return the same resource</p>.
+
+<p>The first discrepancy is in volume roots.  Unix and pure deriviates
+have only one root path, "/".  Win32 and OS2 share root paths of
+the form "D:/", D: is the volume designation.  However, this can
+be specified as "//./D:/" as well, indicating D: volume of the 
+'this' machine.  Win32 and OS2 also may employ a UNC root path,
+of the form "//server/share/" where share is a share-point of the
+specified network server.  Finally, NetWare root paths are of the
+form "server/volume:/", or the simpler "volume:/" syntax for 'this'
+machine.  All these non-Unix file systems accept volume:path,
+without a slash following the colon, as a path relative to the
+current working directory, which APR will treat as ambigious, that
+is, neither an absolute nor a relative path per se.</p>
+
+<p>The second discrepancy is in the meaning of the 'this' directory.
+In general, 'this' must be eliminated from the path where it occurs.
+The syntax "path/./" and "path/" are both aliases to path.  However,
+this isn't file system independent, since the double slash "//" has
+a special meaning on OS2 and Win32 at the start of the path name,
+and is invalid on those platforms before the "//server/share/" UNC
+root path is completed.  Finally, as noted above, "//./volume/" is
+legal root syntax on WinNT, and perhaps others.</p>
+
+<p>The third discrepancy is in the context of the 'parent' directory.
+When "parent/path/.." occurs, the path must be unwound to "parent".
+It's also critical to simply truncate leading "/../" paths to "/",
+since the parent of the root is root.  This gets tricky on the
+Win32 and OS2 platforms, since the ".." element is invalid before
+the "//server/share/" is complete, and the "//server/share/../"
+seqence is the complete UNC root "//server/share/".  In relative
+paths, leading ".." elements are significant, until they are merged
+with an absolute path.  The relative form must only retain the ".."
+segments as leading segments, to be resolved once merged to another
+relative or an absolute path.</p>
+
+<p>The fourth discrepancy occurs with acceptance of alternate character
+codes for the same element.  Path seperators are not retained within
+the APR canonical forms.  The OS filesystem and APR (slashed) forms
+can both be returned as strings, to be used in the proper context.
+Unix, Win32 and Netware all accept slashes and backslashes as the
+same path seperator symbol, although unix strictly accepts slashes.
+While the APR form of the name strictly uses slashes, always consider
+that there could be a platform that actually accepts slashes as a
+character within a segment name.</p>
+
+<p>The fifth and worst discrepancy plauges Win32, OS2, Netware, and some
+filesystems mounted in Unix.  Case insensitivity can permit the same
+file to slip through in both it's proper case and alternate cases.
+Simply changing the case is insufficient for any character set beyond
+ASCII, since various dilectic forms of characters suffer from one to
+many or many to one translations.  An example would be u-umlaut, which
+might be accepted as a single character u-umlaut, a two character
+sequence u and the zero-width umlaut, the upper case form of the same,
+or perhaps even a captial U alone.  This can be handled in different
+ways depending on the purposes of the APR based program, but the one
+requirement is that the path must be absolute in order to resolve these
+ambiguities.  Methods employed include comparison of device and inode
+file uniqifiers, which is a fairly fast operation, or quering the OS
+for the true form of the name, which can be much slower.  Only the
+acknowledgement of the file names by the OS can validate the equality
+of two different cases of the same filename.</p>
+
+<p>The sixth discrepancy, illegal or insignificant characters, is especially 
+significant in non-unix file systems.  Trailing periods are accepted
+but never stored, therefore trailing periods must be ignored for any
+form of comparison.  And all OS's have certain expectations of what
+characters are illegal (or undesireable due to confusion.)</p>
+
+<p>A final warning, canonical functions don't transform or resolve case
+or character ambiguity issues until they are resolved into an absolute
+path.  The relative canonical path, while useful, while useful for URL
+or similar identifiers, cannot be used for testing or comparison of file 
+system objects.</p>
+
+<hr>
+
+<h2>Canonical API</h2>
+
+Functions to manipulate the apr_canon_file_t (an opaque type) include:
+
+<ul>
+<li>Create canon_file_t (from char* path and canon_file_t parent path)
+<li>Merged canon_file_t (from path and parent, both canon_file_t)
+<li>Get char* path of all or some segments
+<li>Get path flags of IsRelative, IsVirtualRoot, and IsAbsolute
+<li>Compare two canon_file_t structures for file equality
+</ul>
+
+<p>The path is corrected to the file system case only if is in absolute 
+form.  The apr_canon_file_t should be preserved as long as possible and 
+used as the parent to create child entries to reduce the number of expensive 
+stat and case canonicalization calls to the OS.</p>
+
+<p>The comparison operation provides that the APR can postpone correction
+of case by simply relying upon the device and inode for equivalence.  The
+stat implementation provides that two files are the same, while their
+strings are not equivalent, and eliminates the need for the operating
+system to return the proper form of the name.</p>
+
+<p>In any case, returning the char* path, with a flag to request the proper
+case, forces the OS calls to resolve the true names of each segment.  Where
+there is a penality for this operation and the stat device and inode test
+is faster, case correction is postponed until the char* result is requested.
+On platforms that identify the inode, device, or proper name interchangably
+with no penalities, this may occur when the name is initially processed.</p>
+
+<hr>
+
+<h2>Unix Example</h2>
+
+<p>First the simplest case:</p>
+
+<pre>
+Parse Canonical Name 
+accepts parent path as canonical_t
+        this path as string
+
+Split this path Segments on '/'
+
+For each of this path Segments
+  If first Segment
+    If this Segment is Empty ([nothing]/)
+      Append this Root Segment (don't merge)
+      Continue to next Segment
+    Else is relative
+      Append parent Segments (to merge)
+      Continue with this Segment
+  If Segment is '.' or empty (2 slashes)
+    Discard this Segment
+    Continue with next Segment
+  If Segment is '..'
+    If no previous Segment or previous Segment is '..'
+      Append this Segment
+      Continue with next Segment
+    If previous Segment and previous is not Root Segment
+      Discard previous Segment
+    Discard this Segment
+    Continue with next Segment
+  Append this Relative Segment
+  Continue with next Segment        
+</pre>
+
+</BODY>
+</HTML>

Deleted: vendor/apache/apr/1.5.2/docs/pool-design.html
===================================================================
--- vendor/apache/apr/dist/docs/pool-design.html	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/docs/pool-design.html	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,100 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head>
-    <title>Using APR Pools</title>
-  </head>
-  <body>
-    <div align="right">
-      Last modified at [$Date: 2013-08-24 19:47:39 $]
-    </div>
-
-    <h1>Using APR Pools</h1>
-
-    <p>
-      From <a href="http://subversion.tigris.org/">Subversion</a>, we
-      have learned a <em>lot</em> about how to use pools in a heavily
-      structured/object-based environment.
-      <a href="http://httpd.apache.org/">Apache httpd</a> is a
-      completely different beast: "allocate a request pool. use
-      it. destroy it."
-    </p>
-
-    <p>
-      In a complex app, that request-style of behavior is not
-      present. Luckily, the "proper" use of pools can be described in
-      just a few rules:
-    </p>
-
-    <ul>
-      <li>
-        Objects should not have their own pools. An object is
-        allocated into a pool defined by the constructor's caller. The
-        <strong>caller</strong> knows the lifetime of the object and
-        will manage it via the pool. Generally, this also means that
-        objects will not have a "close" or a "free" since those
-        operations will happen implicitly as part of the destruction
-        of the pool the objects live within.
-      </li>
-
-      <li>
-        <p>
-          Functions should not create/destroy pools for their
-          operation; they should use a pool provided by the
-          caller. Again, the <strong>caller</strong> knows more about
-          how the function will be used, how often, how many times,
-          etc. Thus, it should be in charge of the function's memory
-          usage.
-        </p>
-        <p>
-          As an example, the caller might know that the app will exit
-          upon the function's return. Thus, the function would be
-          creating extra work if it built and destroyed a
-          pool. Instead, it should use the passed-in pool, which the
-          caller is going to be tossing as part of app-exit anyways.
-        </p>
-      </li>
-
-      <li>
-        <p>
-          Whenever an unbounded iteration occurs, a subpool should be
-          used. The general pattern is:
-        </p>
-        <blockquote>
-          <pre>
-subpool = apr_create_subpool(pool);
-for (i = 0; i < n; ++i) {
-  apr_pool_clear(subpool);
-
-  do_operation(..., subpool);
-}
-apr_pool_destroy(subpool);</pre>
-        </blockquote>
-        <p>
-          This pattern prevents the 'pool' from growing unbounded and
-          consuming all of memory. Note that it is slightly more
-          optimal to clear the pool on loop-entry. This pattern also
-          allows for a '<tt>continue</tt>' to occur within the loop,
-          yet still ensure the pool will be cleared.
-        </p>
-      </li>
-
-      <li>
-        Given all of the above, it is pretty well mandatory to pass a
-        pool to <em>every</em> function. Since objects are not
-        recording pools for themselves, and the caller is always
-        supposed to be managing memory, then each function needs a
-        pool, rather than relying on some hidden magic pool. In
-        limited cases, objects may record the pool used for their
-        construction so that they can construct sub-parts, but these
-        cases should be examined carefully. Internal pools can lead to
-        unbounded pool usage if the object is not careful.
-      </li>
-    </ul>
-
-    <hr>
-    <address>Greg Stein</address>
-    <!-- Created: Wed Jun 25 14:39:57 PDT 2003 -->
-    <!-- hhmts start -->
-Last modified: Wed Jun 25 14:50:19 PDT 2003
-<!-- hhmts end -->
-
-</body></html>

Copied: vendor/apache/apr/1.5.2/docs/pool-design.html (from rev 9273, vendor/apache/apr/dist/docs/pool-design.html)
===================================================================
--- vendor/apache/apr/1.5.2/docs/pool-design.html	                        (rev 0)
+++ vendor/apache/apr/1.5.2/docs/pool-design.html	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+    <title>Using APR Pools</title>
+  </head>
+  <body>
+    <div align="right">
+      Last modified at [$Date: 2004-11-24 17:51:51 -0500 (Wed, 24 Nov 2004) $]
+    </div>
+
+    <h1>Using APR Pools</h1>
+
+    <p>
+      From <a href="http://subversion.tigris.org/">Subversion</a>, we
+      have learned a <em>lot</em> about how to use pools in a heavily
+      structured/object-based environment.
+      <a href="http://httpd.apache.org/">Apache httpd</a> is a
+      completely different beast: "allocate a request pool. use
+      it. destroy it."
+    </p>
+
+    <p>
+      In a complex app, that request-style of behavior is not
+      present. Luckily, the "proper" use of pools can be described in
+      just a few rules:
+    </p>
+
+    <ul>
+      <li>
+        Objects should not have their own pools. An object is
+        allocated into a pool defined by the constructor's caller. The
+        <strong>caller</strong> knows the lifetime of the object and
+        will manage it via the pool. Generally, this also means that
+        objects will not have a "close" or a "free" since those
+        operations will happen implicitly as part of the destruction
+        of the pool the objects live within.
+      </li>
+
+      <li>
+        <p>
+          Functions should not create/destroy pools for their
+          operation; they should use a pool provided by the
+          caller. Again, the <strong>caller</strong> knows more about
+          how the function will be used, how often, how many times,
+          etc. Thus, it should be in charge of the function's memory
+          usage.
+        </p>
+        <p>
+          As an example, the caller might know that the app will exit
+          upon the function's return. Thus, the function would be
+          creating extra work if it built and destroyed a
+          pool. Instead, it should use the passed-in pool, which the
+          caller is going to be tossing as part of app-exit anyways.
+        </p>
+      </li>
+
+      <li>
+        <p>
+          Whenever an unbounded iteration occurs, a subpool should be
+          used. The general pattern is:
+        </p>
+        <blockquote>
+          <pre>
+subpool = apr_create_subpool(pool);
+for (i = 0; i < n; ++i) {
+  apr_pool_clear(subpool);
+
+  do_operation(..., subpool);
+}
+apr_pool_destroy(subpool);</pre>
+        </blockquote>
+        <p>
+          This pattern prevents the 'pool' from growing unbounded and
+          consuming all of memory. Note that it is slightly more
+          optimal to clear the pool on loop-entry. This pattern also
+          allows for a '<tt>continue</tt>' to occur within the loop,
+          yet still ensure the pool will be cleared.
+        </p>
+      </li>
+
+      <li>
+        Given all of the above, it is pretty well mandatory to pass a
+        pool to <em>every</em> function. Since objects are not
+        recording pools for themselves, and the caller is always
+        supposed to be managing memory, then each function needs a
+        pool, rather than relying on some hidden magic pool. In
+        limited cases, objects may record the pool used for their
+        construction so that they can construct sub-parts, but these
+        cases should be examined carefully. Internal pools can lead to
+        unbounded pool usage if the object is not careful.
+      </li>
+    </ul>
+
+    <hr>
+    <address>Greg Stein</address>
+    <!-- Created: Wed Jun 25 14:39:57 PDT 2003 -->
+    <!-- hhmts start -->
+Last modified: Wed Jun 25 14:50:19 PDT 2003
+<!-- hhmts end -->
+
+</body></html>

Deleted: vendor/apache/apr/1.5.2/file_io/os2/filedup.c
===================================================================
--- vendor/apache/apr/dist/file_io/os2/filedup.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/os2/filedup.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,126 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include <string.h>
-#include "apr_arch_inherit.h"
-
-static apr_status_t file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)
-{
-    int rv;
-    apr_file_t *dup_file;
-
-    if (*new_file == NULL) {
-        dup_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
-
-        if (dup_file == NULL) {
-            return APR_ENOMEM;
-        }
-
-        dup_file->filedes = -1;
-    } else {
-      dup_file = *new_file;
-    }
-
-    dup_file->pool = p;
-    rv = DosDupHandle(old_file->filedes, &dup_file->filedes);
-
-    if (rv) {
-        return APR_FROM_OS_ERROR(rv);
-    }
-
-    dup_file->fname = apr_pstrdup(dup_file->pool, old_file->fname);
-    dup_file->buffered = old_file->buffered;
-    dup_file->isopen = old_file->isopen;
-    dup_file->flags = old_file->flags & ~APR_INHERIT;
-    /* TODO - dup pipes correctly */
-    dup_file->pipe = old_file->pipe;
-
-    if (*new_file == NULL) {
-        apr_pool_cleanup_register(dup_file->pool, dup_file, apr_file_cleanup,
-                            apr_pool_cleanup_null);
-        *new_file = dup_file;
-    }
-
-    return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)
-{
-  if (*new_file) {
-      apr_file_close(*new_file);
-      (*new_file)->filedes = -1;
-  }
-
-  return file_dup(new_file, old_file, p);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p)
-{
-  return file_dup(&new_file, old_file, p);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
-                                            apr_file_t *old_file,
-                                            apr_pool_t *p)
-{
-    *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
-    memcpy(*new_file, old_file, sizeof(apr_file_t));
-    (*new_file)->pool = p;
-
-    if (old_file->buffered) {
-        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
-        (*new_file)->bufsize = old_file->bufsize;
-
-        if (old_file->direction == 1) {
-            memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
-        }
-        else {
-            memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
-        }
-
-        if (old_file->mutex) {
-            apr_thread_mutex_create(&((*new_file)->mutex),
-                                    APR_THREAD_MUTEX_DEFAULT, p);
-            apr_thread_mutex_destroy(old_file->mutex);
-        }
-    }
-
-    if (old_file->fname) {
-        (*new_file)->fname = apr_pstrdup(p, old_file->fname);
-    }
-
-    if (!(old_file->flags & APR_FOPEN_NOCLEANUP)) {
-        apr_pool_cleanup_register(p, (void *)(*new_file), 
-                                  apr_file_cleanup,
-                                  apr_file_cleanup);
-    }
-
-    old_file->filedes = -1;
-    apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
-                          apr_file_cleanup);
-
-    return APR_SUCCESS;
-}

Copied: vendor/apache/apr/1.5.2/file_io/os2/filedup.c (from rev 9273, vendor/apache/apr/dist/file_io/os2/filedup.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/os2/filedup.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/os2/filedup.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,125 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include <string.h>
+#include "apr_arch_inherit.h"
+
+static apr_status_t file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)
+{
+    int rv;
+    apr_file_t *dup_file;
+
+    if (*new_file == NULL) {
+        dup_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
+
+        if (dup_file == NULL) {
+            return APR_ENOMEM;
+        }
+
+        dup_file->filedes = -1;
+    } else {
+      dup_file = *new_file;
+    }
+
+    dup_file->pool = p;
+    rv = DosDupHandle(old_file->filedes, &dup_file->filedes);
+
+    if (rv) {
+        return APR_FROM_OS_ERROR(rv);
+    }
+
+    dup_file->fname = apr_pstrdup(dup_file->pool, old_file->fname);
+    dup_file->buffered = old_file->buffered;
+    dup_file->isopen = old_file->isopen;
+    dup_file->flags = old_file->flags & ~APR_INHERIT;
+    /* TODO - dup pipes correctly */
+    dup_file->pipe = old_file->pipe;
+
+    if (*new_file == NULL) {
+        apr_pool_cleanup_register(dup_file->pool, dup_file, apr_file_cleanup,
+                            apr_pool_cleanup_null);
+        *new_file = dup_file;
+    }
+
+    return APR_SUCCESS;
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)
+{
+  if (*new_file) {
+      apr_file_close(*new_file);
+      (*new_file)->filedes = -1;
+  }
+
+  return file_dup(new_file, old_file, p);
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p)
+{
+  return file_dup(&new_file, old_file, p);
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
+                                            apr_file_t *old_file,
+                                            apr_pool_t *p)
+{
+    *new_file = (apr_file_t *)apr_pmemdup(p, old_file, sizeof(apr_file_t));
+    (*new_file)->pool = p;
+
+    if (old_file->buffered) {
+        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
+        (*new_file)->bufsize = old_file->bufsize;
+
+        if (old_file->direction == 1) {
+            memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
+        }
+        else {
+            memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
+        }
+
+        if (old_file->mutex) {
+            apr_thread_mutex_create(&((*new_file)->mutex),
+                                    APR_THREAD_MUTEX_DEFAULT, p);
+            apr_thread_mutex_destroy(old_file->mutex);
+        }
+    }
+
+    if (old_file->fname) {
+        (*new_file)->fname = apr_pstrdup(p, old_file->fname);
+    }
+
+    if (!(old_file->flags & APR_FOPEN_NOCLEANUP)) {
+        apr_pool_cleanup_register(p, (void *)(*new_file), 
+                                  apr_file_cleanup,
+                                  apr_file_cleanup);
+    }
+
+    old_file->filedes = -1;
+    apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
+                          apr_file_cleanup);
+
+    return APR_SUCCESS;
+}

Deleted: vendor/apache/apr/1.5.2/file_io/os2/open.c
===================================================================
--- vendor/apache/apr/dist/file_io/os2/open.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/os2/open.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,300 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include "apr_portable.h"
-#include "apr_strings.h"
-#include "apr_arch_inherit.h"
-#include <string.h>
-
-apr_status_t apr_file_cleanup(void *thefile)
-{
-    apr_file_t *file = thefile;
-    return apr_file_close(file);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr_int32_t flag,  apr_fileperms_t perm, apr_pool_t *pool)
-{
-    int oflags = 0;
-    int mflags = OPEN_FLAGS_FAIL_ON_ERROR|OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT;
-    int rv;
-    ULONG action;
-    apr_file_t *dafile = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t));
-
-    dafile->pool = pool;
-    dafile->isopen = FALSE;
-    dafile->eof_hit = FALSE;
-    dafile->buffer = NULL;
-    dafile->flags = flag;
-    dafile->blocking = BLK_ON;
-    
-    if ((flag & APR_FOPEN_READ) && (flag & APR_FOPEN_WRITE)) {
-        mflags |= OPEN_ACCESS_READWRITE;
-    } else if (flag & APR_FOPEN_READ) {
-        mflags |= OPEN_ACCESS_READONLY;
-    } else if (flag & APR_FOPEN_WRITE) {
-        mflags |= OPEN_ACCESS_WRITEONLY;
-    } else {
-        dafile->filedes = -1;
-        return APR_EACCES;
-    }
-
-    dafile->buffered = (flag & APR_FOPEN_BUFFERED) > 0;
-
-    if (dafile->buffered) {
-        dafile->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
-        dafile->bufsize = APR_FILE_DEFAULT_BUFSIZE;
-        rv = apr_thread_mutex_create(&dafile->mutex, 0, pool);
-
-        if (rv)
-            return rv;
-    }
-
-    if (flag & APR_FOPEN_CREATE) {
-        oflags |= OPEN_ACTION_CREATE_IF_NEW;
-
-        if (!(flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_TRUNCATE)) {
-            oflags |= OPEN_ACTION_OPEN_IF_EXISTS;
-        }
-    }
-    
-    if ((flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_CREATE))
-        return APR_EACCES;
-
-    if (flag & APR_FOPEN_TRUNCATE) {
-        oflags |= OPEN_ACTION_REPLACE_IF_EXISTS;
-    } else if ((oflags & 0xFF) == 0) {
-        oflags |= OPEN_ACTION_OPEN_IF_EXISTS;
-    }
-    
-    rv = DosOpen(fname, &(dafile->filedes), &action, 0, 0, oflags, mflags, NULL);
-    
-    if (rv == 0 && (flag & APR_FOPEN_APPEND)) {
-        ULONG newptr;
-        rv = DosSetFilePtr(dafile->filedes, 0, FILE_END, &newptr );
-        
-        if (rv)
-            DosClose(dafile->filedes);
-    }
-    
-    if (rv != 0)
-        return APR_FROM_OS_ERROR(rv);
-    
-    dafile->isopen = TRUE;
-    dafile->fname = apr_pstrdup(pool, fname);
-    dafile->filePtr = 0;
-    dafile->bufpos = 0;
-    dafile->dataRead = 0;
-    dafile->direction = 0;
-    dafile->pipe = FALSE;
-
-    if (!(flag & APR_FOPEN_NOCLEANUP)) {
-        apr_pool_cleanup_register(dafile->pool, dafile, apr_file_cleanup, apr_file_cleanup);
-    }
-
-    *new = dafile;
-    return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
-{
-    ULONG rc;
-    apr_status_t status;
-    
-    if (file && file->isopen) {
-        /* XXX: flush here is not mutex protected */
-        status = apr_file_flush(file);
-        rc = DosClose(file->filedes);
-    
-        if (rc == 0) {
-            file->isopen = FALSE;
-
-            if (file->flags & APR_FOPEN_DELONCLOSE) {
-                status = APR_FROM_OS_ERROR(DosDelete(file->fname));
-            }
-            /* else we return the status of the flush attempt 
-             * when all else succeeds
-             */
-        } else {
-            return APR_FROM_OS_ERROR(rc);
-        }
-    }
-
-    if (file->buffered)
-        apr_thread_mutex_destroy(file->mutex);
-
-    return status;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
-{
-    ULONG rc = DosDelete(path);
-    return APR_FROM_OS_ERROR(rc);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, const char *to_path,
-                                   apr_pool_t *p)
-{
-    ULONG rc = DosMove(from_path, to_path);
-
-    if (rc == ERROR_ACCESS_DENIED || rc == ERROR_ALREADY_EXISTS) {
-        rc = DosDelete(to_path);
-
-        if (rc == 0 || rc == ERROR_FILE_NOT_FOUND) {
-            rc = DosMove(from_path, to_path);
-        }
-    }
-
-    return APR_FROM_OS_ERROR(rc);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file)
-{
-    *thefile = file->filedes;
-    return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_int32_t flags, apr_pool_t *pool)
-{
-    apr_os_file_t *dafile = thefile;
-
-    (*file) = apr_palloc(pool, sizeof(apr_file_t));
-    (*file)->pool = pool;
-    (*file)->filedes = *dafile;
-    (*file)->isopen = TRUE;
-    (*file)->eof_hit = FALSE;
-    (*file)->flags = flags;
-    (*file)->pipe = FALSE;
-    (*file)->buffered = (flags & APR_FOPEN_BUFFERED) > 0;
-
-    if ((*file)->buffered) {
-        apr_status_t rv;
-
-        (*file)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
-        (*file)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
-        rv = apr_thread_mutex_create(&(*file)->mutex, 0, pool);
-
-        if (rv)
-            return rv;
-    }
-
-    return APR_SUCCESS;
-}    
-
-
-APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
-{
-    if (!fptr->isopen || fptr->eof_hit == 1) {
-        return APR_EOF;
-    }
-    return APR_SUCCESS;
-}   
-
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile, 
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool)
-{
-    apr_os_file_t fd = 2;
-
-    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile, 
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool)
-{
-    apr_os_file_t fd = 1;
-
-    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile, 
-                                                    apr_int32_t flags,
-                                                    apr_pool_t *pool)
-{
-    apr_os_file_t fd = 0;
-
-    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_READ, pool);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool)
-{
-    return apr_file_open_flags_stderr(thefile, 0, pool);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool)
-{
-    return apr_file_open_flags_stdout(thefile, 0, pool);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool)
-{
-    return apr_file_open_flags_stdin(thefile, 0, pool);
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(file);
-
-
-
-APR_DECLARE(apr_status_t) apr_file_inherit_set(apr_file_t *thefile)
-{
-    int rv;
-    ULONG state;
-
-    rv = DosQueryFHState(thefile->filedes, &state);
-
-    if (rv == 0 && (state & OPEN_FLAGS_NOINHERIT) != 0) {
-        rv = DosSetFHState(thefile->filedes, state & ~OPEN_FLAGS_NOINHERIT);
-    }
-
-    return APR_FROM_OS_ERROR(rv);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_inherit_unset(apr_file_t *thefile)
-{
-    int rv;
-    ULONG state;
-
-    rv = DosQueryFHState(thefile->filedes, &state);
-
-    if (rv == 0 && (state & OPEN_FLAGS_NOINHERIT) == 0) {
-        rv = DosSetFHState(thefile->filedes, state | OPEN_FLAGS_NOINHERIT);
-    }
-
-    return APR_FROM_OS_ERROR(rv);
-}

Copied: vendor/apache/apr/1.5.2/file_io/os2/open.c (from rev 9273, vendor/apache/apr/dist/file_io/os2/open.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/os2/open.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/os2/open.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,304 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_lib.h"
+#include "apr_portable.h"
+#include "apr_strings.h"
+#include "apr_arch_inherit.h"
+#include <string.h>
+
+apr_status_t apr_file_cleanup(void *thefile)
+{
+    apr_file_t *file = thefile;
+    return apr_file_close(file);
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr_int32_t flag,  apr_fileperms_t perm, apr_pool_t *pool)
+{
+    int oflags = 0;
+    int mflags = OPEN_FLAGS_FAIL_ON_ERROR|OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT;
+    int rv;
+    ULONG action;
+    apr_file_t *dafile = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t));
+
+    if (flag & APR_FOPEN_NONBLOCK) {
+        return APR_ENOTIMPL;
+    }
+
+    dafile->pool = pool;
+    dafile->isopen = FALSE;
+    dafile->eof_hit = FALSE;
+    dafile->buffer = NULL;
+    dafile->flags = flag;
+    dafile->blocking = BLK_ON;
+    
+    if ((flag & APR_FOPEN_READ) && (flag & APR_FOPEN_WRITE)) {
+        mflags |= OPEN_ACCESS_READWRITE;
+    } else if (flag & APR_FOPEN_READ) {
+        mflags |= OPEN_ACCESS_READONLY;
+    } else if (flag & APR_FOPEN_WRITE) {
+        mflags |= OPEN_ACCESS_WRITEONLY;
+    } else {
+        dafile->filedes = -1;
+        return APR_EACCES;
+    }
+
+    dafile->buffered = (flag & APR_FOPEN_BUFFERED) > 0;
+
+    if (dafile->buffered) {
+        dafile->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
+        dafile->bufsize = APR_FILE_DEFAULT_BUFSIZE;
+        rv = apr_thread_mutex_create(&dafile->mutex, 0, pool);
+
+        if (rv)
+            return rv;
+    }
+
+    if (flag & APR_FOPEN_CREATE) {
+        oflags |= OPEN_ACTION_CREATE_IF_NEW;
+
+        if (!(flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_TRUNCATE)) {
+            oflags |= OPEN_ACTION_OPEN_IF_EXISTS;
+        }
+    }
+    
+    if ((flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_CREATE))
+        return APR_EACCES;
+
+    if (flag & APR_FOPEN_TRUNCATE) {
+        oflags |= OPEN_ACTION_REPLACE_IF_EXISTS;
+    } else if ((oflags & 0xFF) == 0) {
+        oflags |= OPEN_ACTION_OPEN_IF_EXISTS;
+    }
+    
+    rv = DosOpen(fname, &(dafile->filedes), &action, 0, 0, oflags, mflags, NULL);
+    
+    if (rv == 0 && (flag & APR_FOPEN_APPEND)) {
+        ULONG newptr;
+        rv = DosSetFilePtr(dafile->filedes, 0, FILE_END, &newptr );
+        
+        if (rv)
+            DosClose(dafile->filedes);
+    }
+    
+    if (rv != 0)
+        return APR_FROM_OS_ERROR(rv);
+    
+    dafile->isopen = TRUE;
+    dafile->fname = apr_pstrdup(pool, fname);
+    dafile->filePtr = 0;
+    dafile->bufpos = 0;
+    dafile->dataRead = 0;
+    dafile->direction = 0;
+    dafile->pipe = FALSE;
+
+    if (!(flag & APR_FOPEN_NOCLEANUP)) {
+        apr_pool_cleanup_register(dafile->pool, dafile, apr_file_cleanup, apr_file_cleanup);
+    }
+
+    *new = dafile;
+    return APR_SUCCESS;
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
+{
+    ULONG rc;
+    apr_status_t status;
+    
+    if (file && file->isopen) {
+        /* XXX: flush here is not mutex protected */
+        status = apr_file_flush(file);
+        rc = DosClose(file->filedes);
+    
+        if (rc == 0) {
+            file->isopen = FALSE;
+
+            if (file->flags & APR_FOPEN_DELONCLOSE) {
+                status = APR_FROM_OS_ERROR(DosDelete(file->fname));
+            }
+            /* else we return the status of the flush attempt 
+             * when all else succeeds
+             */
+        } else {
+            return APR_FROM_OS_ERROR(rc);
+        }
+    }
+
+    if (file->buffered)
+        apr_thread_mutex_destroy(file->mutex);
+
+    return status;
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
+{
+    ULONG rc = DosDelete(path);
+    return APR_FROM_OS_ERROR(rc);
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, const char *to_path,
+                                   apr_pool_t *p)
+{
+    ULONG rc = DosMove(from_path, to_path);
+
+    if (rc == ERROR_ACCESS_DENIED || rc == ERROR_ALREADY_EXISTS) {
+        rc = DosDelete(to_path);
+
+        if (rc == 0 || rc == ERROR_FILE_NOT_FOUND) {
+            rc = DosMove(from_path, to_path);
+        }
+    }
+
+    return APR_FROM_OS_ERROR(rc);
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file)
+{
+    *thefile = file->filedes;
+    return APR_SUCCESS;
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_int32_t flags, apr_pool_t *pool)
+{
+    apr_os_file_t *dafile = thefile;
+
+    (*file) = apr_palloc(pool, sizeof(apr_file_t));
+    (*file)->pool = pool;
+    (*file)->filedes = *dafile;
+    (*file)->isopen = TRUE;
+    (*file)->eof_hit = FALSE;
+    (*file)->flags = flags;
+    (*file)->pipe = FALSE;
+    (*file)->buffered = (flags & APR_FOPEN_BUFFERED) > 0;
+
+    if ((*file)->buffered) {
+        apr_status_t rv;
+
+        (*file)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
+        (*file)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
+        rv = apr_thread_mutex_create(&(*file)->mutex, 0, pool);
+
+        if (rv)
+            return rv;
+    }
+
+    return APR_SUCCESS;
+}    
+
+
+APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
+{
+    if (!fptr->isopen || fptr->eof_hit == 1) {
+        return APR_EOF;
+    }
+    return APR_SUCCESS;
+}   
+
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile, 
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool)
+{
+    apr_os_file_t fd = 2;
+
+    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
+}
+
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile, 
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool)
+{
+    apr_os_file_t fd = 1;
+
+    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
+}
+
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile, 
+                                                    apr_int32_t flags,
+                                                    apr_pool_t *pool)
+{
+    apr_os_file_t fd = 0;
+
+    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_READ, pool);
+}
+
+
+APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool)
+{
+    return apr_file_open_flags_stderr(thefile, 0, pool);
+}
+
+
+APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool)
+{
+    return apr_file_open_flags_stdout(thefile, 0, pool);
+}
+
+
+APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool)
+{
+    return apr_file_open_flags_stdin(thefile, 0, pool);
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(file);
+
+
+
+APR_DECLARE(apr_status_t) apr_file_inherit_set(apr_file_t *thefile)
+{
+    int rv;
+    ULONG state;
+
+    rv = DosQueryFHState(thefile->filedes, &state);
+
+    if (rv == 0 && (state & OPEN_FLAGS_NOINHERIT) != 0) {
+        rv = DosSetFHState(thefile->filedes, state & ~OPEN_FLAGS_NOINHERIT);
+    }
+
+    return APR_FROM_OS_ERROR(rv);
+}
+
+
+
+APR_DECLARE(apr_status_t) apr_file_inherit_unset(apr_file_t *thefile)
+{
+    int rv;
+    ULONG state;
+
+    rv = DosQueryFHState(thefile->filedes, &state);
+
+    if (rv == 0 && (state & OPEN_FLAGS_NOINHERIT) == 0) {
+        rv = DosSetFHState(thefile->filedes, state | OPEN_FLAGS_NOINHERIT);
+    }
+
+    return APR_FROM_OS_ERROR(rv);
+}

Deleted: vendor/apache/apr/1.5.2/file_io/unix/filedup.c
===================================================================
--- vendor/apache/apr/dist/file_io/unix/filedup.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/unix/filedup.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,182 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_thread_mutex.h"
-#include "apr_arch_inherit.h"
-
-static apr_status_t file_dup(apr_file_t **new_file, 
-                             apr_file_t *old_file, apr_pool_t *p,
-                             int which_dup)
-{
-    int rv;
-#ifdef HAVE_DUP3
-    int flags = 0;
-#endif
-
-    if (which_dup == 2) {
-        if ((*new_file) == NULL) {
-            /* We can't dup2 unless we have a valid new_file */
-            return APR_EINVAL;
-        }
-#ifdef HAVE_DUP3
-        if (!((*new_file)->flags & (APR_FOPEN_NOCLEANUP|APR_INHERIT)))
-            flags |= O_CLOEXEC;
-        rv = dup3(old_file->filedes, (*new_file)->filedes, flags);
-#else
-        rv = dup2(old_file->filedes, (*new_file)->filedes);
-        if (!((*new_file)->flags & (APR_FOPEN_NOCLEANUP|APR_INHERIT))) {
-            int flags;
-
-            if (rv == -1)
-                return errno;
-
-            if ((flags = fcntl((*new_file)->filedes, F_GETFD)) == -1)
-                return errno;
-
-            flags |= FD_CLOEXEC;
-            if (fcntl((*new_file)->filedes, F_SETFD, flags) == -1)
-                return errno;
-
-        }
-#endif
-    } else {
-        rv = dup(old_file->filedes);
-    }
-
-    if (rv == -1)
-        return errno;
-    
-    if (which_dup == 1) {
-        (*new_file) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
-        (*new_file)->pool = p;
-        (*new_file)->filedes = rv;
-    }
-
-    (*new_file)->fname = apr_pstrdup(p, old_file->fname);
-    (*new_file)->buffered = old_file->buffered;
-
-    /* If the existing socket in a dup2 is already buffered, we
-     * have an existing and valid (hopefully) mutex, so we don't
-     * want to create it again as we could leak!
-     */
-#if APR_HAS_THREADS
-    if ((*new_file)->buffered && !(*new_file)->thlock && old_file->thlock) {
-        apr_thread_mutex_create(&((*new_file)->thlock),
-                                APR_THREAD_MUTEX_DEFAULT, p);
-    }
-#endif
-    /* As above, only create the buffer if we haven't already
-     * got one.
-     */
-    if ((*new_file)->buffered && !(*new_file)->buffer) {
-        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
-        (*new_file)->bufsize = old_file->bufsize;
-    }
-
-    /* this is the way dup() works */
-    (*new_file)->blocking = old_file->blocking; 
-
-    /* make sure unget behavior is consistent */
-    (*new_file)->ungetchar = old_file->ungetchar;
-
-    /* apr_file_dup2() retains the original cleanup, reflecting 
-     * the existing inherit and nocleanup flags.  This means, 
-     * that apr_file_dup2() cannot be called against an apr_file_t
-     * already closed with apr_file_close, because the expected
-     * cleanup was already killed.
-     */
-    if (which_dup == 2) {
-        return APR_SUCCESS;
-    }
-
-    /* apr_file_dup() retains all old_file flags with the exceptions
-     * of APR_INHERIT and APR_FOPEN_NOCLEANUP.
-     * The user must call apr_file_inherit_set() on the dupped 
-     * apr_file_t when desired.
-     */
-    (*new_file)->flags = old_file->flags
-                       & ~(APR_INHERIT | APR_FOPEN_NOCLEANUP);
-
-    apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file),
-                              apr_unix_file_cleanup, 
-                              apr_unix_child_file_cleanup);
-#ifndef WAITIO_USES_POLL
-    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
-     * initialize the pollset if needed.
-     */
-    (*new_file)->pollset = NULL;
-#endif
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
-                                       apr_file_t *old_file, apr_pool_t *p)
-{
-    return file_dup(new_file, old_file, p, 1);
-}
-
-APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
-                                        apr_file_t *old_file, apr_pool_t *p)
-{
-    return file_dup(&new_file, old_file, p, 2);
-}
-
-APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
-                                            apr_file_t *old_file,
-                                            apr_pool_t *p)
-{
-    *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
-    memcpy(*new_file, old_file, sizeof(apr_file_t));
-    (*new_file)->pool = p;
-    if (old_file->buffered) {
-        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
-        (*new_file)->bufsize = old_file->bufsize;
-        if (old_file->direction == 1) {
-            memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
-        }
-        else {
-            memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
-        }
-#if APR_HAS_THREADS
-        if (old_file->thlock) {
-            apr_thread_mutex_create(&((*new_file)->thlock),
-                                    APR_THREAD_MUTEX_DEFAULT, p);
-            apr_thread_mutex_destroy(old_file->thlock);
-        }
-#endif /* APR_HAS_THREADS */
-    }
-    if (old_file->fname) {
-        (*new_file)->fname = apr_pstrdup(p, old_file->fname);
-    }
-    if (!(old_file->flags & APR_FOPEN_NOCLEANUP)) {
-        apr_pool_cleanup_register(p, (void *)(*new_file), 
-                                  apr_unix_file_cleanup,
-                                  ((*new_file)->flags & APR_INHERIT)
-                                     ? apr_pool_cleanup_null
-                                     : apr_unix_child_file_cleanup);
-    }
-
-    old_file->filedes = -1;
-    apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
-                          apr_unix_file_cleanup);
-#ifndef WAITIO_USES_POLL
-    (*new_file)->pollset = NULL;
-#endif
-    return APR_SUCCESS;
-}

Copied: vendor/apache/apr/1.5.2/file_io/unix/filedup.c (from rev 9273, vendor/apache/apr/dist/file_io/unix/filedup.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/unix/filedup.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/unix/filedup.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,181 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+#include "apr_thread_mutex.h"
+#include "apr_arch_inherit.h"
+
+static apr_status_t file_dup(apr_file_t **new_file, 
+                             apr_file_t *old_file, apr_pool_t *p,
+                             int which_dup)
+{
+    int rv;
+#ifdef HAVE_DUP3
+    int flags = 0;
+#endif
+
+    if (which_dup == 2) {
+        if ((*new_file) == NULL) {
+            /* We can't dup2 unless we have a valid new_file */
+            return APR_EINVAL;
+        }
+#ifdef HAVE_DUP3
+        if (!((*new_file)->flags & (APR_FOPEN_NOCLEANUP|APR_INHERIT)))
+            flags |= O_CLOEXEC;
+        rv = dup3(old_file->filedes, (*new_file)->filedes, flags);
+#else
+        rv = dup2(old_file->filedes, (*new_file)->filedes);
+        if (!((*new_file)->flags & (APR_FOPEN_NOCLEANUP|APR_INHERIT))) {
+            int flags;
+
+            if (rv == -1)
+                return errno;
+
+            if ((flags = fcntl((*new_file)->filedes, F_GETFD)) == -1)
+                return errno;
+
+            flags |= FD_CLOEXEC;
+            if (fcntl((*new_file)->filedes, F_SETFD, flags) == -1)
+                return errno;
+
+        }
+#endif
+    } else {
+        rv = dup(old_file->filedes);
+    }
+
+    if (rv == -1)
+        return errno;
+    
+    if (which_dup == 1) {
+        (*new_file) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
+        (*new_file)->pool = p;
+        (*new_file)->filedes = rv;
+    }
+
+    (*new_file)->fname = apr_pstrdup(p, old_file->fname);
+    (*new_file)->buffered = old_file->buffered;
+
+    /* If the existing socket in a dup2 is already buffered, we
+     * have an existing and valid (hopefully) mutex, so we don't
+     * want to create it again as we could leak!
+     */
+#if APR_HAS_THREADS
+    if ((*new_file)->buffered && !(*new_file)->thlock && old_file->thlock) {
+        apr_thread_mutex_create(&((*new_file)->thlock),
+                                APR_THREAD_MUTEX_DEFAULT, p);
+    }
+#endif
+    /* As above, only create the buffer if we haven't already
+     * got one.
+     */
+    if ((*new_file)->buffered && !(*new_file)->buffer) {
+        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
+        (*new_file)->bufsize = old_file->bufsize;
+    }
+
+    /* this is the way dup() works */
+    (*new_file)->blocking = old_file->blocking; 
+
+    /* make sure unget behavior is consistent */
+    (*new_file)->ungetchar = old_file->ungetchar;
+
+    /* apr_file_dup2() retains the original cleanup, reflecting 
+     * the existing inherit and nocleanup flags.  This means, 
+     * that apr_file_dup2() cannot be called against an apr_file_t
+     * already closed with apr_file_close, because the expected
+     * cleanup was already killed.
+     */
+    if (which_dup == 2) {
+        return APR_SUCCESS;
+    }
+
+    /* apr_file_dup() retains all old_file flags with the exceptions
+     * of APR_INHERIT and APR_FOPEN_NOCLEANUP.
+     * The user must call apr_file_inherit_set() on the dupped 
+     * apr_file_t when desired.
+     */
+    (*new_file)->flags = old_file->flags
+                       & ~(APR_INHERIT | APR_FOPEN_NOCLEANUP);
+
+    apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file),
+                              apr_unix_file_cleanup, 
+                              apr_unix_child_file_cleanup);
+#ifndef WAITIO_USES_POLL
+    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
+     * initialize the pollset if needed.
+     */
+    (*new_file)->pollset = NULL;
+#endif
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
+                                       apr_file_t *old_file, apr_pool_t *p)
+{
+    return file_dup(new_file, old_file, p, 1);
+}
+
+APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
+                                        apr_file_t *old_file, apr_pool_t *p)
+{
+    return file_dup(&new_file, old_file, p, 2);
+}
+
+APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
+                                            apr_file_t *old_file,
+                                            apr_pool_t *p)
+{
+    *new_file = (apr_file_t *)apr_pmemdup(p, old_file, sizeof(apr_file_t));
+    (*new_file)->pool = p;
+    if (old_file->buffered) {
+        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
+        (*new_file)->bufsize = old_file->bufsize;
+        if (old_file->direction == 1) {
+            memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
+        }
+        else {
+            memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
+        }
+#if APR_HAS_THREADS
+        if (old_file->thlock) {
+            apr_thread_mutex_create(&((*new_file)->thlock),
+                                    APR_THREAD_MUTEX_DEFAULT, p);
+            apr_thread_mutex_destroy(old_file->thlock);
+        }
+#endif /* APR_HAS_THREADS */
+    }
+    if (old_file->fname) {
+        (*new_file)->fname = apr_pstrdup(p, old_file->fname);
+    }
+    if (!(old_file->flags & APR_FOPEN_NOCLEANUP)) {
+        apr_pool_cleanup_register(p, (void *)(*new_file), 
+                                  apr_unix_file_cleanup,
+                                  ((*new_file)->flags & APR_INHERIT)
+                                     ? apr_pool_cleanup_null
+                                     : apr_unix_child_file_cleanup);
+    }
+
+    old_file->filedes = -1;
+    apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
+                          apr_unix_file_cleanup);
+#ifndef WAITIO_USES_POLL
+    (*new_file)->pollset = NULL;
+#endif
+    return APR_SUCCESS;
+}

Deleted: vendor/apache/apr/1.5.2/file_io/unix/filestat.c
===================================================================
--- vendor/apache/apr/dist/file_io/unix/filestat.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/unix/filestat.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,339 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_errno.h"
-
-#ifdef HAVE_UTIME
-#include <utime.h>
-#endif
-
-static apr_filetype_e filetype_from_mode(mode_t mode)
-{
-    apr_filetype_e type;
-
-    switch (mode & S_IFMT) {
-    case S_IFREG:
-        type = APR_REG;  break;
-    case S_IFDIR:
-        type = APR_DIR;  break;
-    case S_IFLNK:
-        type = APR_LNK;  break;
-    case S_IFCHR:
-        type = APR_CHR;  break;
-    case S_IFBLK:
-        type = APR_BLK;  break;
-#if defined(S_IFFIFO)
-    case S_IFFIFO:
-        type = APR_PIPE; break;
-#endif
-#if !defined(BEOS) && defined(S_IFSOCK)
-    case S_IFSOCK:
-        type = APR_SOCK; break;
-#endif
-
-    default:
-	/* Work around missing S_IFxxx values above
-         * for Linux et al.
-         */
-#if !defined(S_IFFIFO) && defined(S_ISFIFO)
-    	if (S_ISFIFO(mode)) {
-            type = APR_PIPE;
-	} else
-#endif
-#if !defined(BEOS) && !defined(S_IFSOCK) && defined(S_ISSOCK)
-    	if (S_ISSOCK(mode)) {
-            type = APR_SOCK;
-	} else
-#endif
-        type = APR_UNKFILE;
-    }
-    return type;
-}
-
-static void fill_out_finfo(apr_finfo_t *finfo, struct_stat *info,
-                           apr_int32_t wanted)
-{ 
-    finfo->valid = APR_FINFO_MIN | APR_FINFO_IDENT | APR_FINFO_NLINK
-                 | APR_FINFO_OWNER | APR_FINFO_PROT;
-    finfo->protection = apr_unix_mode2perms(info->st_mode);
-    finfo->filetype = filetype_from_mode(info->st_mode);
-    finfo->user = info->st_uid;
-    finfo->group = info->st_gid;
-    finfo->size = info->st_size;
-    finfo->device = info->st_dev;
-    finfo->nlink = info->st_nlink;
-
-    /* Check for overflow if storing a 64-bit st_ino in a 32-bit
-     * apr_ino_t for LFS builds: */
-    if (sizeof(apr_ino_t) >= sizeof(info->st_ino)
-        || (apr_ino_t)info->st_ino == info->st_ino) {
-        finfo->inode = info->st_ino;
-    } else {
-        finfo->valid &= ~APR_FINFO_INODE;
-    }
-
-    apr_time_ansi_put(&finfo->atime, info->st_atime);
-#ifdef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
-    finfo->atime += info->st_atim.tv_nsec / APR_TIME_C(1000);
-#elif defined(HAVE_STRUCT_STAT_ST_ATIMENSEC)
-    finfo->atime += info->st_atimensec / APR_TIME_C(1000);
-#elif defined(HAVE_STRUCT_STAT_ST_ATIME_N)
-    finfo->ctime += info->st_atime_n / APR_TIME_C(1000);
-#endif
-
-    apr_time_ansi_put(&finfo->mtime, info->st_mtime);
-#ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
-    finfo->mtime += info->st_mtim.tv_nsec / APR_TIME_C(1000);
-#elif defined(HAVE_STRUCT_STAT_ST_MTIMENSEC)
-    finfo->mtime += info->st_mtimensec / APR_TIME_C(1000);
-#elif defined(HAVE_STRUCT_STAT_ST_MTIME_N)
-    finfo->ctime += info->st_mtime_n / APR_TIME_C(1000);
-#endif
-
-    apr_time_ansi_put(&finfo->ctime, info->st_ctime);
-#ifdef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC
-    finfo->ctime += info->st_ctim.tv_nsec / APR_TIME_C(1000);
-#elif defined(HAVE_STRUCT_STAT_ST_CTIMENSEC)
-    finfo->ctime += info->st_ctimensec / APR_TIME_C(1000);
-#elif defined(HAVE_STRUCT_STAT_ST_CTIME_N)
-    finfo->ctime += info->st_ctime_n / APR_TIME_C(1000);
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-#ifdef DEV_BSIZE
-    finfo->csize = (apr_off_t)info->st_blocks * (apr_off_t)DEV_BSIZE;
-#else
-    finfo->csize = (apr_off_t)info->st_blocks * (apr_off_t)512;
-#endif
-    finfo->valid |= APR_FINFO_CSIZE;
-#endif
-}
-
-apr_status_t apr_file_info_get_locked(apr_finfo_t *finfo, apr_int32_t wanted,
-                                      apr_file_t *thefile)
-{
-    struct_stat info;
-
-    if (thefile->buffered) {
-        apr_status_t rv = apr_file_flush_locked(thefile);
-        if (rv != APR_SUCCESS)
-            return rv;
-    }
-
-    if (fstat(thefile->filedes, &info) == 0) {
-        finfo->pool = thefile->pool;
-        finfo->fname = thefile->fname;
-        fill_out_finfo(finfo, &info, wanted);
-        return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
-    }
-    else {
-        return errno;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, 
-                                            apr_int32_t wanted,
-                                            apr_file_t *thefile)
-{
-    struct_stat info;
-
-    if (thefile->buffered) {
-        apr_status_t rv = apr_file_flush(thefile);
-        if (rv != APR_SUCCESS)
-            return rv;
-    }
-
-    if (fstat(thefile->filedes, &info) == 0) {
-        finfo->pool = thefile->pool;
-        finfo->fname = thefile->fname;
-        fill_out_finfo(finfo, &info, wanted);
-        return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
-    }
-    else {
-        return errno;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, 
-                                             apr_fileperms_t perms)
-{
-    mode_t mode = apr_unix_perms2mode(perms);
-
-    if (chmod(fname, mode) == -1)
-        return errno;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
-                                             apr_fileattrs_t attributes,
-                                             apr_fileattrs_t attr_mask,
-                                             apr_pool_t *pool)
-{
-    apr_status_t status;
-    apr_finfo_t finfo;
-
-    /* Don't do anything if we can't handle the requested attributes */
-    if (!(attr_mask & (APR_FILE_ATTR_READONLY
-                       | APR_FILE_ATTR_EXECUTABLE)))
-        return APR_SUCCESS;
-
-    status = apr_stat(&finfo, fname, APR_FINFO_PROT, pool);
-    if (status)
-        return status;
-
-    /* ### TODO: should added bits be umask'd? */
-    if (attr_mask & APR_FILE_ATTR_READONLY)
-    {
-        if (attributes & APR_FILE_ATTR_READONLY)
-        {
-            finfo.protection &= ~APR_UWRITE;
-            finfo.protection &= ~APR_GWRITE;
-            finfo.protection &= ~APR_WWRITE;
-        }
-        else
-        {
-            /* ### umask this! */
-            finfo.protection |= APR_UWRITE;
-            finfo.protection |= APR_GWRITE;
-            finfo.protection |= APR_WWRITE;
-        }
-    }
-
-    if (attr_mask & APR_FILE_ATTR_EXECUTABLE)
-    {
-        if (attributes & APR_FILE_ATTR_EXECUTABLE)
-        {
-            /* ### umask this! */
-            finfo.protection |= APR_UEXECUTE;
-            finfo.protection |= APR_GEXECUTE;
-            finfo.protection |= APR_WEXECUTE;
-        }
-        else
-        {
-            finfo.protection &= ~APR_UEXECUTE;
-            finfo.protection &= ~APR_GEXECUTE;
-            finfo.protection &= ~APR_WEXECUTE;
-        }
-    }
-
-    return apr_file_perms_set(fname, finfo.protection);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
-                                              apr_time_t mtime,
-                                              apr_pool_t *pool)
-{
-    apr_status_t status;
-    apr_finfo_t finfo;
-
-    status = apr_stat(&finfo, fname, APR_FINFO_ATIME, pool);
-    if (status) {
-        return status;
-    }
-
-#ifdef HAVE_UTIMES
-    {
-      struct timeval tvp[2];
-    
-      tvp[0].tv_sec = apr_time_sec(finfo.atime);
-      tvp[0].tv_usec = apr_time_usec(finfo.atime);
-      tvp[1].tv_sec = apr_time_sec(mtime);
-      tvp[1].tv_usec = apr_time_usec(mtime);
-      
-      if (utimes(fname, tvp) == -1) {
-        return errno;
-      }
-    }
-#elif defined(HAVE_UTIME)
-    {
-      struct utimbuf buf;
-      
-      buf.actime = (time_t) (finfo.atime / APR_USEC_PER_SEC);
-      buf.modtime = (time_t) (mtime / APR_USEC_PER_SEC);
-      
-      if (utime(fname, &buf) == -1) {
-        return errno;
-      }
-    }
-#else
-    return APR_ENOTIMPL;
-#endif
-
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, 
-                                   const char *fname, 
-                                   apr_int32_t wanted, apr_pool_t *pool)
-{
-    struct_stat info;
-    int srv;
-
-    if (wanted & APR_FINFO_LINK)
-        srv = lstat(fname, &info);
-    else
-        srv = stat(fname, &info);
-
-    if (srv == 0) {
-        finfo->pool = pool;
-        finfo->fname = fname;
-        fill_out_finfo(finfo, &info, wanted);
-        if (wanted & APR_FINFO_LINK)
-            wanted &= ~APR_FINFO_LINK;
-        return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
-    }
-    else {
-#if !defined(ENOENT) || !defined(ENOTDIR)
-#error ENOENT || ENOTDIR not defined; please see the
-#error comments at this line in the source for a workaround.
-        /*
-         * If ENOENT || ENOTDIR is not defined in one of the your OS's
-         * include files, APR cannot report a good reason why the stat()
-         * of the file failed; there are cases where it can fail even though
-         * the file exists.  This opens holes in Apache, for example, because
-         * it becomes possible for someone to get a directory listing of a 
-         * directory even though there is an index (eg. index.html) file in 
-         * it.  If you do not have a problem with this, delete the above 
-         * #error lines and start the compile again.  If you need to do this,
-         * please submit a bug report to http://www.apache.org/bug_report.html
-         * letting us know that you needed to do this.  Please be sure to 
-         * include the operating system you are using.
-         */
-        /* WARNING: All errors will be handled as not found
-         */
-#if !defined(ENOENT) 
-        return APR_ENOENT;
-#else
-        /* WARNING: All errors but not found will be handled as not directory
-         */
-        if (errno != ENOENT)
-            return APR_ENOENT;
-        else
-            return errno;
-#endif
-#else /* All was defined well, report the usual: */
-        return errno;
-#endif
-    }
-}
-
-

Copied: vendor/apache/apr/1.5.2/file_io/unix/filestat.c (from rev 9273, vendor/apache/apr/dist/file_io/unix/filestat.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/unix/filestat.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/unix/filestat.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,339 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_general.h"
+#include "apr_strings.h"
+#include "apr_errno.h"
+
+#ifdef HAVE_UTIME
+#include <utime.h>
+#endif
+
+static apr_filetype_e filetype_from_mode(mode_t mode)
+{
+    apr_filetype_e type;
+
+    switch (mode & S_IFMT) {
+    case S_IFREG:
+        type = APR_REG;  break;
+    case S_IFDIR:
+        type = APR_DIR;  break;
+    case S_IFLNK:
+        type = APR_LNK;  break;
+    case S_IFCHR:
+        type = APR_CHR;  break;
+    case S_IFBLK:
+        type = APR_BLK;  break;
+#if defined(S_IFFIFO)
+    case S_IFFIFO:
+        type = APR_PIPE; break;
+#endif
+#if !defined(BEOS) && defined(S_IFSOCK)
+    case S_IFSOCK:
+        type = APR_SOCK; break;
+#endif
+
+    default:
+	/* Work around missing S_IFxxx values above
+         * for Linux et al.
+         */
+#if !defined(S_IFFIFO) && defined(S_ISFIFO)
+    	if (S_ISFIFO(mode)) {
+            type = APR_PIPE;
+	} else
+#endif
+#if !defined(BEOS) && !defined(S_IFSOCK) && defined(S_ISSOCK)
+    	if (S_ISSOCK(mode)) {
+            type = APR_SOCK;
+	} else
+#endif
+        type = APR_UNKFILE;
+    }
+    return type;
+}
+
+static void fill_out_finfo(apr_finfo_t *finfo, struct_stat *info,
+                           apr_int32_t wanted)
+{ 
+    finfo->valid = APR_FINFO_MIN | APR_FINFO_IDENT | APR_FINFO_NLINK
+                 | APR_FINFO_OWNER | APR_FINFO_PROT;
+    finfo->protection = apr_unix_mode2perms(info->st_mode);
+    finfo->filetype = filetype_from_mode(info->st_mode);
+    finfo->user = info->st_uid;
+    finfo->group = info->st_gid;
+    finfo->size = info->st_size;
+    finfo->device = info->st_dev;
+    finfo->nlink = info->st_nlink;
+
+    /* Check for overflow if storing a 64-bit st_ino in a 32-bit
+     * apr_ino_t for LFS builds: */
+    if (sizeof(apr_ino_t) >= sizeof(info->st_ino)
+        || (apr_ino_t)info->st_ino == info->st_ino) {
+        finfo->inode = info->st_ino;
+    } else {
+        finfo->valid &= ~APR_FINFO_INODE;
+    }
+
+    apr_time_ansi_put(&finfo->atime, info->st_atime);
+#ifdef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+    finfo->atime += info->st_atim.tv_nsec / APR_TIME_C(1000);
+#elif defined(HAVE_STRUCT_STAT_ST_ATIMENSEC)
+    finfo->atime += info->st_atimensec / APR_TIME_C(1000);
+#elif defined(HAVE_STRUCT_STAT_ST_ATIME_N)
+    finfo->atime += info->st_atime_n / APR_TIME_C(1000);
+#endif
+
+    apr_time_ansi_put(&finfo->mtime, info->st_mtime);
+#ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
+    finfo->mtime += info->st_mtim.tv_nsec / APR_TIME_C(1000);
+#elif defined(HAVE_STRUCT_STAT_ST_MTIMENSEC)
+    finfo->mtime += info->st_mtimensec / APR_TIME_C(1000);
+#elif defined(HAVE_STRUCT_STAT_ST_MTIME_N)
+    finfo->mtime += info->st_mtime_n / APR_TIME_C(1000);
+#endif
+
+    apr_time_ansi_put(&finfo->ctime, info->st_ctime);
+#ifdef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC
+    finfo->ctime += info->st_ctim.tv_nsec / APR_TIME_C(1000);
+#elif defined(HAVE_STRUCT_STAT_ST_CTIMENSEC)
+    finfo->ctime += info->st_ctimensec / APR_TIME_C(1000);
+#elif defined(HAVE_STRUCT_STAT_ST_CTIME_N)
+    finfo->ctime += info->st_ctime_n / APR_TIME_C(1000);
+#endif
+
+#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
+#ifdef DEV_BSIZE
+    finfo->csize = (apr_off_t)info->st_blocks * (apr_off_t)DEV_BSIZE;
+#else
+    finfo->csize = (apr_off_t)info->st_blocks * (apr_off_t)512;
+#endif
+    finfo->valid |= APR_FINFO_CSIZE;
+#endif
+}
+
+apr_status_t apr_file_info_get_locked(apr_finfo_t *finfo, apr_int32_t wanted,
+                                      apr_file_t *thefile)
+{
+    struct_stat info;
+
+    if (thefile->buffered) {
+        apr_status_t rv = apr_file_flush_locked(thefile);
+        if (rv != APR_SUCCESS)
+            return rv;
+    }
+
+    if (fstat(thefile->filedes, &info) == 0) {
+        finfo->pool = thefile->pool;
+        finfo->fname = thefile->fname;
+        fill_out_finfo(finfo, &info, wanted);
+        return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
+    }
+    else {
+        return errno;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, 
+                                            apr_int32_t wanted,
+                                            apr_file_t *thefile)
+{
+    struct_stat info;
+
+    if (thefile->buffered) {
+        apr_status_t rv = apr_file_flush(thefile);
+        if (rv != APR_SUCCESS)
+            return rv;
+    }
+
+    if (fstat(thefile->filedes, &info) == 0) {
+        finfo->pool = thefile->pool;
+        finfo->fname = thefile->fname;
+        fill_out_finfo(finfo, &info, wanted);
+        return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
+    }
+    else {
+        return errno;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, 
+                                             apr_fileperms_t perms)
+{
+    mode_t mode = apr_unix_perms2mode(perms);
+
+    if (chmod(fname, mode) == -1)
+        return errno;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
+                                             apr_fileattrs_t attributes,
+                                             apr_fileattrs_t attr_mask,
+                                             apr_pool_t *pool)
+{
+    apr_status_t status;
+    apr_finfo_t finfo;
+
+    /* Don't do anything if we can't handle the requested attributes */
+    if (!(attr_mask & (APR_FILE_ATTR_READONLY
+                       | APR_FILE_ATTR_EXECUTABLE)))
+        return APR_SUCCESS;
+
+    status = apr_stat(&finfo, fname, APR_FINFO_PROT, pool);
+    if (status)
+        return status;
+
+    /* ### TODO: should added bits be umask'd? */
+    if (attr_mask & APR_FILE_ATTR_READONLY)
+    {
+        if (attributes & APR_FILE_ATTR_READONLY)
+        {
+            finfo.protection &= ~APR_UWRITE;
+            finfo.protection &= ~APR_GWRITE;
+            finfo.protection &= ~APR_WWRITE;
+        }
+        else
+        {
+            /* ### umask this! */
+            finfo.protection |= APR_UWRITE;
+            finfo.protection |= APR_GWRITE;
+            finfo.protection |= APR_WWRITE;
+        }
+    }
+
+    if (attr_mask & APR_FILE_ATTR_EXECUTABLE)
+    {
+        if (attributes & APR_FILE_ATTR_EXECUTABLE)
+        {
+            /* ### umask this! */
+            finfo.protection |= APR_UEXECUTE;
+            finfo.protection |= APR_GEXECUTE;
+            finfo.protection |= APR_WEXECUTE;
+        }
+        else
+        {
+            finfo.protection &= ~APR_UEXECUTE;
+            finfo.protection &= ~APR_GEXECUTE;
+            finfo.protection &= ~APR_WEXECUTE;
+        }
+    }
+
+    return apr_file_perms_set(fname, finfo.protection);
+}
+
+
+APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
+                                              apr_time_t mtime,
+                                              apr_pool_t *pool)
+{
+    apr_status_t status;
+    apr_finfo_t finfo;
+
+    status = apr_stat(&finfo, fname, APR_FINFO_ATIME, pool);
+    if (status) {
+        return status;
+    }
+
+#ifdef HAVE_UTIMES
+    {
+      struct timeval tvp[2];
+    
+      tvp[0].tv_sec = apr_time_sec(finfo.atime);
+      tvp[0].tv_usec = apr_time_usec(finfo.atime);
+      tvp[1].tv_sec = apr_time_sec(mtime);
+      tvp[1].tv_usec = apr_time_usec(mtime);
+      
+      if (utimes(fname, tvp) == -1) {
+        return errno;
+      }
+    }
+#elif defined(HAVE_UTIME)
+    {
+      struct utimbuf buf;
+      
+      buf.actime = (time_t) (finfo.atime / APR_USEC_PER_SEC);
+      buf.modtime = (time_t) (mtime / APR_USEC_PER_SEC);
+      
+      if (utime(fname, &buf) == -1) {
+        return errno;
+      }
+    }
+#else
+    return APR_ENOTIMPL;
+#endif
+
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, 
+                                   const char *fname, 
+                                   apr_int32_t wanted, apr_pool_t *pool)
+{
+    struct_stat info;
+    int srv;
+
+    if (wanted & APR_FINFO_LINK)
+        srv = lstat(fname, &info);
+    else
+        srv = stat(fname, &info);
+
+    if (srv == 0) {
+        finfo->pool = pool;
+        finfo->fname = fname;
+        fill_out_finfo(finfo, &info, wanted);
+        if (wanted & APR_FINFO_LINK)
+            wanted &= ~APR_FINFO_LINK;
+        return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
+    }
+    else {
+#if !defined(ENOENT) || !defined(ENOTDIR)
+#error ENOENT || ENOTDIR not defined; please see the
+#error comments at this line in the source for a workaround.
+        /*
+         * If ENOENT || ENOTDIR is not defined in one of the your OS's
+         * include files, APR cannot report a good reason why the stat()
+         * of the file failed; there are cases where it can fail even though
+         * the file exists.  This opens holes in Apache, for example, because
+         * it becomes possible for someone to get a directory listing of a 
+         * directory even though there is an index (eg. index.html) file in 
+         * it.  If you do not have a problem with this, delete the above 
+         * #error lines and start the compile again.  If you need to do this,
+         * please submit a bug report to http://www.apache.org/bug_report.html
+         * letting us know that you needed to do this.  Please be sure to 
+         * include the operating system you are using.
+         */
+        /* WARNING: All errors will be handled as not found
+         */
+#if !defined(ENOENT) 
+        return APR_ENOENT;
+#else
+        /* WARNING: All errors but not found will be handled as not directory
+         */
+        if (errno != ENOENT)
+            return APR_ENOENT;
+        else
+            return errno;
+#endif
+#else /* All was defined well, report the usual: */
+        return errno;
+#endif
+    }
+}
+
+

Deleted: vendor/apache/apr/1.5.2/file_io/unix/mktemp.c
===================================================================
--- vendor/apache/apr/dist/file_io/unix/mktemp.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/unix/mktemp.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,223 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * Copyright (c) 1987, 1993
- * The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by the University of
- *    California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "apr_private.h"
-#include "apr_file_io.h" /* prototype of apr_mkstemp() */
-#include "apr_strings.h" /* prototype of apr_mkstemp() */
-#include "apr_arch_file_io.h" /* prototype of apr_mkstemp() */
-#include "apr_portable.h" /* for apr_os_file_put() */
-#include "apr_arch_inherit.h"
-
-#ifndef HAVE_MKSTEMP
-
-#if defined(SVR4) || defined(WIN32) || defined(NETWARE)
-#ifdef SVR4
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#endif
-#define arc4random() rand()
-#define seedrandom(a) srand(a)
-#else
-#if APR_HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#define arc4random() random()
-#define seedrandom(a) srandom(a)
-#endif
-
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if APR_HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-
-static const unsigned char padchar[] =
-"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-static apr_uint32_t randseed=0;
-
-static int gettemp(char *path, apr_file_t **doopen, apr_int32_t flags, apr_pool_t *p)
-{
-    register char *start, *trv, *suffp;
-    char *pad;
-    apr_finfo_t sbuf;
-    apr_status_t rv;
-    apr_uint32_t randnum;
-
-    if (randseed==0) {
-        randseed = (int)apr_time_now();
-        seedrandom(randseed);
-    }
-
-    for (trv = path; *trv; ++trv)
-        ;
-    suffp = trv;
-    --trv;
-    if (trv < path) {
-        return APR_EINVAL;
-    }
-
-    /* Fill space with random characters */
-    while (*trv == 'X') {
-        randnum = arc4random() % (sizeof(padchar) - 1);
-        *trv-- = padchar[randnum];
-    }
-    start = trv + 1;
-
-    /*
-     * check the target directory.
-     */
-    for (;; --trv) {
-        if (trv <= path)
-            break;
-        if (*trv == '/') {
-            *trv = '\0';
-            rv = apr_stat(&sbuf, path, APR_FINFO_TYPE, p);
-            *trv = '/';
-            if (rv != APR_SUCCESS)
-                return rv;
-            if (sbuf.filetype != APR_DIR) {
-                return APR_ENOTDIR;
-            }
-            break;
-        }
-    }
-
-    for (;;) {
-        if ((rv = apr_file_open(doopen, path, flags,
-                                APR_UREAD | APR_UWRITE, p)) == APR_SUCCESS)
-            return APR_SUCCESS;
-        if (!APR_STATUS_IS_EEXIST(rv))
-            return rv;
-
-        /* If we have a collision, cycle through the space of filenames */
-        for (trv = start;;) {
-            if (*trv == '\0' || trv == suffp)
-                return APR_EINVAL; /* XXX: is this the correct return code? */
-            pad = strchr((char *)padchar, *trv);
-            if (pad == NULL || !*++pad) {
-                *trv++ = padchar[0];
-            }
-            else {
-                *trv++ = *pad;
-                break;
-            }
-        }
-    }
-    /*NOTREACHED*/
-}
-
-#else
-
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h> /* for mkstemp() - Single Unix */
-#endif
-#if APR_HAVE_UNISTD_H
-#include <unistd.h> /* for mkstemp() - FreeBSD */
-#endif
-#endif /* !defined(HAVE_MKSTEMP) */
-
-APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_int32_t flags, apr_pool_t *p)
-{
-#ifdef HAVE_MKSTEMP
-    int fd;
-#endif
-    flags = (!flags) ? APR_FOPEN_CREATE | APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_EXCL |
-                       APR_FOPEN_DELONCLOSE : flags;
-#ifndef HAVE_MKSTEMP
-    return gettemp(template, fp, flags, p);
-#else
-
-#ifdef HAVE_MKSTEMP64
-    fd = mkstemp64(template);
-#else
-    fd = mkstemp(template);
-#endif
-    
-    if (fd == -1) {
-        return errno;
-    }
-    /* XXX: We must reset several flags values as passed-in, since
-     * mkstemp didn't subscribe to our preference flags.
-     *
-     * We either have to unset the flags, or fix up the fd and other
-     * xthread and inherit bits appropriately.  Since gettemp() above
-     * calls apr_file_open, our flags are respected in that code path.
-     */
-    apr_os_file_put(fp, &fd, flags, p);
-    (*fp)->fname = apr_pstrdup(p, template);
-
-    if (!(flags & APR_FOPEN_NOCLEANUP)) {
-        int flags;
-
-        if ((flags = fcntl(fd, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(fd, F_SETFD, flags) == -1)
-            return errno;
-
-        apr_pool_cleanup_register((*fp)->pool, (void *)(*fp),
-                                  apr_unix_file_cleanup,
-                                  apr_unix_child_file_cleanup);
-    }
-#endif
-    return APR_SUCCESS;
-}
-

Copied: vendor/apache/apr/1.5.2/file_io/unix/mktemp.c (from rev 9273, vendor/apache/apr/dist/file_io/unix/mktemp.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/unix/mktemp.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/unix/mktemp.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,223 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * Copyright (c) 1987, 1993
+ * The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by the University of
+ *    California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "apr_private.h"
+#include "apr_file_io.h" /* prototype of apr_mkstemp() */
+#include "apr_strings.h" /* prototype of apr_mkstemp() */
+#include "apr_arch_file_io.h" /* prototype of apr_mkstemp() */
+#include "apr_portable.h" /* for apr_os_file_put() */
+#include "apr_arch_inherit.h"
+
+#ifndef HAVE_MKSTEMP
+
+#if defined(SVR4) || defined(WIN32) || defined(NETWARE)
+#ifdef SVR4
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#endif
+#define arc4random() rand()
+#define seedrandom(a) srand(a)
+#else
+#if APR_HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#define arc4random() random()
+#define seedrandom(a) srandom(a)
+#endif
+
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if APR_HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+
+static const unsigned char padchar[] =
+"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+static apr_uint32_t randseed=0;
+
+static int gettemp(char *path, apr_file_t **doopen, apr_int32_t flags, apr_pool_t *p)
+{
+    register char *start, *trv, *suffp;
+    char *pad;
+    apr_finfo_t sbuf;
+    apr_status_t rv;
+    apr_uint32_t randnum;
+
+    if (randseed==0) {
+        randseed = (int)apr_time_now();
+        seedrandom(randseed);
+    }
+
+    for (trv = path; *trv; ++trv)
+        ;
+    suffp = trv;
+    --trv;
+    if (trv < path) {
+        return APR_EINVAL;
+    }
+
+    /* Fill space with random characters */
+    while (*trv == 'X') {
+        randnum = arc4random() % (sizeof(padchar) - 1);
+        *trv-- = padchar[randnum];
+    }
+    start = trv + 1;
+
+    /*
+     * check the target directory.
+     */
+    for (;; --trv) {
+        if (trv <= path)
+            break;
+        if (*trv == '/') {
+            *trv = '\0';
+            rv = apr_stat(&sbuf, path, APR_FINFO_TYPE, p);
+            *trv = '/';
+            if (rv != APR_SUCCESS)
+                return rv;
+            if (sbuf.filetype != APR_DIR) {
+                return APR_ENOTDIR;
+            }
+            break;
+        }
+    }
+
+    for (;;) {
+        if ((rv = apr_file_open(doopen, path, flags,
+                                APR_UREAD | APR_UWRITE, p)) == APR_SUCCESS)
+            return APR_SUCCESS;
+        if (!APR_STATUS_IS_EEXIST(rv))
+            return rv;
+
+        /* If we have a collision, cycle through the space of filenames */
+        for (trv = start;;) {
+            if (*trv == '\0' || trv == suffp)
+                return APR_EINVAL; /* XXX: is this the correct return code? */
+            pad = strchr((char *)padchar, *trv);
+            if (pad == NULL || !*++pad) {
+                *trv++ = padchar[0];
+            }
+            else {
+                *trv++ = *pad;
+                break;
+            }
+        }
+    }
+    /*NOTREACHED*/
+}
+
+#else
+
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h> /* for mkstemp() - Single Unix */
+#endif
+#if APR_HAVE_UNISTD_H
+#include <unistd.h> /* for mkstemp() - FreeBSD */
+#endif
+#endif /* !defined(HAVE_MKSTEMP) */
+
+APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_int32_t flags, apr_pool_t *p)
+{
+#ifdef HAVE_MKSTEMP
+    int fd;
+#endif
+    flags = (!flags) ? APR_FOPEN_CREATE | APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_EXCL |
+                       APR_FOPEN_DELONCLOSE : flags;
+#ifndef HAVE_MKSTEMP
+    return gettemp(template, fp, flags, p);
+#else
+
+#ifdef HAVE_MKSTEMP64
+    fd = mkstemp64(template);
+#else
+    fd = mkstemp(template);
+#endif
+    
+    if (fd == -1) {
+        return errno;
+    }
+    /* XXX: We must reset several flags values as passed-in, since
+     * mkstemp didn't subscribe to our preference flags.
+     *
+     * We either have to unset the flags, or fix up the fd and other
+     * xthread and inherit bits appropriately.  Since gettemp() above
+     * calls apr_file_open, our flags are respected in that code path.
+     */
+    apr_os_file_put(fp, &fd, flags, p);
+    (*fp)->fname = apr_pstrdup(p, template);
+
+    if (!(flags & APR_FOPEN_NOCLEANUP)) {
+        int flags;
+
+        if ((flags = fcntl(fd, F_GETFD)) == -1)
+            return errno;
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(fd, F_SETFD, flags) == -1)
+            return errno;
+
+        apr_pool_cleanup_register((*fp)->pool, (void *)(*fp),
+                                  apr_unix_file_cleanup,
+                                  apr_unix_child_file_cleanup);
+    }
+#endif
+    return APR_SUCCESS;
+}
+

Deleted: vendor/apache/apr/1.5.2/file_io/unix/open.c
===================================================================
--- vendor/apache/apr/dist/file_io/unix/open.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/unix/open.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,409 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_thread_mutex.h"
-#include "apr_arch_inherit.h"
-
-#ifdef NETWARE
-#include "nks/dirio.h"
-#include "apr_hash.h"
-#include "fsio.h"
-#endif
-
-static apr_status_t file_cleanup(apr_file_t *file, int is_child)
-{
-    apr_status_t rv = APR_SUCCESS;
-    int fd = file->filedes;
-
-    /* Set file descriptor to -1 before close(), so that there is no
-     * chance of returning an already closed FD from apr_os_file_get().
-     */
-    file->filedes = -1;
-
-    if (close(fd) == 0) {
-        /* Only the parent process should delete the file! */
-        if (!is_child && (file->flags & APR_FOPEN_DELONCLOSE)) {
-            unlink(file->fname);
-        }
-#if APR_HAS_THREADS
-        if (file->thlock) {
-            rv = apr_thread_mutex_destroy(file->thlock);
-        }
-#endif
-    }
-    else {
-        /* Restore, close() was not successful. */
-        file->filedes = fd;
-
-        /* Are there any error conditions other than EINTR or EBADF? */
-        rv = errno;
-    }
-#ifndef WAITIO_USES_POLL
-    if (file->pollset != NULL) {
-        apr_status_t pollset_rv = apr_pollset_destroy(file->pollset);
-        /* If the file close failed, return its error value,
-         * not apr_pollset_destroy()'s.
-         */
-        if (rv == APR_SUCCESS) {
-            rv = pollset_rv;
-        }
-    }
-#endif /* !WAITIO_USES_POLL */
-    return rv;
-}
-
-apr_status_t apr_unix_file_cleanup(void *thefile)
-{
-    apr_file_t *file = thefile;
-    apr_status_t flush_rv = APR_SUCCESS, rv = APR_SUCCESS;
-
-    if (file->buffered) {
-        flush_rv = apr_file_flush(file);
-    }
-
-    rv = file_cleanup(file, 0);
-
-    return rv != APR_SUCCESS ? rv : flush_rv;
-}
-
-apr_status_t apr_unix_child_file_cleanup(void *thefile)
-{
-    return file_cleanup(thefile, 1);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, 
-                                        const char *fname, 
-                                        apr_int32_t flag, 
-                                        apr_fileperms_t perm, 
-                                        apr_pool_t *pool)
-{
-    apr_os_file_t fd;
-    int oflags = 0;
-#if APR_HAS_THREADS
-    apr_thread_mutex_t *thlock;
-    apr_status_t rv;
-#endif
-
-    if ((flag & APR_FOPEN_READ) && (flag & APR_FOPEN_WRITE)) {
-        oflags = O_RDWR;
-    }
-    else if (flag & APR_FOPEN_READ) {
-        oflags = O_RDONLY;
-    }
-    else if (flag & APR_FOPEN_WRITE) {
-        oflags = O_WRONLY;
-    }
-    else {
-        return APR_EACCES; 
-    }
-
-    if (flag & APR_FOPEN_CREATE) {
-        oflags |= O_CREAT;
-        if (flag & APR_FOPEN_EXCL) {
-            oflags |= O_EXCL;
-        }
-    }
-    if ((flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_CREATE)) {
-        return APR_EACCES;
-    }   
-
-    if (flag & APR_FOPEN_APPEND) {
-        oflags |= O_APPEND;
-    }
-    if (flag & APR_FOPEN_TRUNCATE) {
-        oflags |= O_TRUNC;
-    }
-#ifdef O_BINARY
-    if (flag & APR_FOPEN_BINARY) {
-        oflags |= O_BINARY;
-    }
-#endif
-
-#ifdef O_CLOEXEC
-    /* Introduced in Linux 2.6.23. Silently ignored on earlier Linux kernels.
-     */
-    if (!(flag & APR_FOPEN_NOCLEANUP)) {
-        oflags |= O_CLOEXEC;
-}
-#endif
- 
-#if APR_HAS_LARGE_FILES && defined(_LARGEFILE64_SOURCE)
-    oflags |= O_LARGEFILE;
-#elif defined(O_LARGEFILE)
-    if (flag & APR_FOPEN_LARGEFILE) {
-        oflags |= O_LARGEFILE;
-    }
-#endif
-
-#if APR_HAS_THREADS
-    if ((flag & APR_FOPEN_BUFFERED) && (flag & APR_FOPEN_XTHREAD)) {
-        rv = apr_thread_mutex_create(&thlock,
-                                     APR_THREAD_MUTEX_DEFAULT, pool);
-        if (rv) {
-            return rv;
-        }
-    }
-#endif
-
-    if (perm == APR_OS_DEFAULT) {
-        fd = open(fname, oflags, 0666);
-    }
-    else {
-        fd = open(fname, oflags, apr_unix_perms2mode(perm));
-    } 
-    if (fd < 0) {
-       return errno;
-    }
-    if (!(flag & APR_FOPEN_NOCLEANUP)) {
-#ifdef O_CLOEXEC
-        static int has_o_cloexec = 0;
-        if (!has_o_cloexec)
-#endif
-        {
-            int flags;
-
-            if ((flags = fcntl(fd, F_GETFD)) == -1) {
-                close(fd);
-                return errno;
-            }
-            if ((flags & FD_CLOEXEC) == 0) {
-                flags |= FD_CLOEXEC;
-                if (fcntl(fd, F_SETFD, flags) == -1) {
-                    close(fd);
-                    return errno;
-                }
-            }
-#ifdef O_CLOEXEC
-            else {
-                has_o_cloexec = 1;
-            }
-#endif
-        }
-    }
-
-    (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
-    (*new)->pool = pool;
-    (*new)->flags = flag;
-    (*new)->filedes = fd;
-
-    (*new)->fname = apr_pstrdup(pool, fname);
-
-    (*new)->blocking = BLK_ON;
-    (*new)->buffered = (flag & APR_FOPEN_BUFFERED) > 0;
-
-    if ((*new)->buffered) {
-        (*new)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
-        (*new)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
-#if APR_HAS_THREADS
-        if ((*new)->flags & APR_FOPEN_XTHREAD) {
-            (*new)->thlock = thlock;
-        }
-#endif
-    }
-    else {
-        (*new)->buffer = NULL;
-    }
-
-    (*new)->is_pipe = 0;
-    (*new)->timeout = -1;
-    (*new)->ungetchar = -1;
-    (*new)->eof_hit = 0;
-    (*new)->filePtr = 0;
-    (*new)->bufpos = 0;
-    (*new)->dataRead = 0;
-    (*new)->direction = 0;
-#ifndef WAITIO_USES_POLL
-    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
-     * initialize the pollset if needed.
-     */
-    (*new)->pollset = NULL;
-#endif
-    if (!(flag & APR_FOPEN_NOCLEANUP)) {
-        apr_pool_cleanup_register((*new)->pool, (void *)(*new), 
-                                  apr_unix_file_cleanup, 
-                                  apr_unix_child_file_cleanup);
-    }
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
-{
-    return apr_pool_cleanup_run(file->pool, file, apr_unix_file_cleanup);
-}
-
-APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
-{
-    if (unlink(path) == 0) {
-        return APR_SUCCESS;
-    }
-    else {
-        return errno;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, 
-                                          const char *to_path,
-                                          apr_pool_t *p)
-{
-    if (rename(from_path, to_path) != 0) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, 
-                                          apr_file_t *file)
-{
-    *thefile = file->filedes;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, 
-                                          apr_os_file_t *thefile,
-                                          apr_int32_t flags, apr_pool_t *pool)
-{
-    int *dafile = thefile;
-    
-    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
-    (*file)->pool = pool;
-    (*file)->eof_hit = 0;
-    (*file)->blocking = BLK_UNKNOWN; /* in case it is a pipe */
-    (*file)->timeout = -1;
-    (*file)->ungetchar = -1; /* no char avail */
-    (*file)->filedes = *dafile;
-    (*file)->flags = flags | APR_FOPEN_NOCLEANUP;
-    (*file)->buffered = (flags & APR_FOPEN_BUFFERED) > 0;
-
-#ifndef WAITIO_USES_POLL
-    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
-     * initialize the pollset if needed.
-     */
-    (*file)->pollset = NULL;
-#endif
-
-    if ((*file)->buffered) {
-        (*file)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
-        (*file)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
-#if APR_HAS_THREADS
-        if ((*file)->flags & APR_FOPEN_XTHREAD) {
-            apr_status_t rv;
-            rv = apr_thread_mutex_create(&((*file)->thlock),
-                                         APR_THREAD_MUTEX_DEFAULT, pool);
-            if (rv) {
-                return rv;
-            }
-        }
-#endif
-    }
-    return APR_SUCCESS;
-}    
-
-APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
-{
-    if (fptr->eof_hit == 1) {
-        return APR_EOF;
-    }
-    return APR_SUCCESS;
-}   
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile, 
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool)
-{
-    int fd = STDERR_FILENO;
-
-    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile, 
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool)
-{
-    int fd = STDOUT_FILENO;
-
-    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile, 
-                                                    apr_int32_t flags,
-                                                    apr_pool_t *pool)
-{
-    int fd = STDIN_FILENO;
-
-    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_READ, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, 
-                                               apr_pool_t *pool)
-{
-    return apr_file_open_flags_stderr(thefile, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, 
-                                               apr_pool_t *pool)
-{
-    return apr_file_open_flags_stdout(thefile, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, 
-                                              apr_pool_t *pool)
-{
-    return apr_file_open_flags_stdin(thefile, 0, pool);
-}
-
-APR_IMPLEMENT_INHERIT_SET(file, flags, pool, apr_unix_file_cleanup)
-
-/* We need to do this by hand instead of using APR_IMPLEMENT_INHERIT_UNSET
- * because the macro sets both cleanups to the same function, which is not
- * suitable on Unix (see PR 41119). */
-APR_DECLARE(apr_status_t) apr_file_inherit_unset(apr_file_t *thefile)
-{
-    if (thefile->flags & APR_FOPEN_NOCLEANUP) {
-        return APR_EINVAL;
-    }
-    if (thefile->flags & APR_INHERIT) {
-        int flags;
-
-        if ((flags = fcntl(thefile->filedes, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(thefile->filedes, F_SETFD, flags) == -1)
-            return errno;
-
-        thefile->flags &= ~APR_INHERIT;
-        apr_pool_child_cleanup_set(thefile->pool,
-                                   (void *)thefile,
-                                   apr_unix_file_cleanup,
-                                   apr_unix_child_file_cleanup);
-    }
-    return APR_SUCCESS;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(file)
-
-APR_DECLARE(apr_status_t) apr_file_link(const char *from_path, 
-                                          const char *to_path)
-{
-    if (link(from_path, to_path) == -1) {
-        return errno;
-    }
-
-    return APR_SUCCESS;
-}

Copied: vendor/apache/apr/1.5.2/file_io/unix/open.c (from rev 9273, vendor/apache/apr/dist/file_io/unix/open.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/unix/open.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/unix/open.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,417 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+#include "apr_thread_mutex.h"
+#include "apr_arch_inherit.h"
+
+#ifdef NETWARE
+#include "nks/dirio.h"
+#include "apr_hash.h"
+#include "fsio.h"
+#endif
+
+static apr_status_t file_cleanup(apr_file_t *file, int is_child)
+{
+    apr_status_t rv = APR_SUCCESS;
+    int fd = file->filedes;
+
+    /* Set file descriptor to -1 before close(), so that there is no
+     * chance of returning an already closed FD from apr_os_file_get().
+     */
+    file->filedes = -1;
+
+    if (close(fd) == 0) {
+        /* Only the parent process should delete the file! */
+        if (!is_child && (file->flags & APR_FOPEN_DELONCLOSE)) {
+            unlink(file->fname);
+        }
+#if APR_HAS_THREADS
+        if (file->thlock) {
+            rv = apr_thread_mutex_destroy(file->thlock);
+        }
+#endif
+    }
+    else {
+        /* Restore, close() was not successful. */
+        file->filedes = fd;
+
+        /* Are there any error conditions other than EINTR or EBADF? */
+        rv = errno;
+    }
+#ifndef WAITIO_USES_POLL
+    if (file->pollset != NULL) {
+        apr_status_t pollset_rv = apr_pollset_destroy(file->pollset);
+        /* If the file close failed, return its error value,
+         * not apr_pollset_destroy()'s.
+         */
+        if (rv == APR_SUCCESS) {
+            rv = pollset_rv;
+        }
+    }
+#endif /* !WAITIO_USES_POLL */
+    return rv;
+}
+
+apr_status_t apr_unix_file_cleanup(void *thefile)
+{
+    apr_file_t *file = thefile;
+    apr_status_t flush_rv = APR_SUCCESS, rv = APR_SUCCESS;
+
+    if (file->buffered) {
+        flush_rv = apr_file_flush(file);
+    }
+
+    rv = file_cleanup(file, 0);
+
+    return rv != APR_SUCCESS ? rv : flush_rv;
+}
+
+apr_status_t apr_unix_child_file_cleanup(void *thefile)
+{
+    return file_cleanup(thefile, 1);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, 
+                                        const char *fname, 
+                                        apr_int32_t flag, 
+                                        apr_fileperms_t perm, 
+                                        apr_pool_t *pool)
+{
+    apr_os_file_t fd;
+    int oflags = 0;
+#if APR_HAS_THREADS
+    apr_thread_mutex_t *thlock;
+    apr_status_t rv;
+#endif
+
+    if ((flag & APR_FOPEN_READ) && (flag & APR_FOPEN_WRITE)) {
+        oflags = O_RDWR;
+    }
+    else if (flag & APR_FOPEN_READ) {
+        oflags = O_RDONLY;
+    }
+    else if (flag & APR_FOPEN_WRITE) {
+        oflags = O_WRONLY;
+    }
+    else {
+        return APR_EACCES; 
+    }
+
+    if (flag & APR_FOPEN_CREATE) {
+        oflags |= O_CREAT;
+        if (flag & APR_FOPEN_EXCL) {
+            oflags |= O_EXCL;
+        }
+    }
+    if ((flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_CREATE)) {
+        return APR_EACCES;
+    }   
+
+    if (flag & APR_FOPEN_APPEND) {
+        oflags |= O_APPEND;
+    }
+    if (flag & APR_FOPEN_TRUNCATE) {
+        oflags |= O_TRUNC;
+    }
+#ifdef O_BINARY
+    if (flag & APR_FOPEN_BINARY) {
+        oflags |= O_BINARY;
+    }
+#endif
+
+    if (flag & APR_FOPEN_NONBLOCK) {
+#ifdef O_NONBLOCK
+        oflags |= O_NONBLOCK;
+#else
+        return APR_ENOTIMPL;
+#endif
+    }
+
+#ifdef O_CLOEXEC
+    /* Introduced in Linux 2.6.23. Silently ignored on earlier Linux kernels.
+     */
+    if (!(flag & APR_FOPEN_NOCLEANUP)) {
+        oflags |= O_CLOEXEC;
+}
+#endif
+ 
+#if APR_HAS_LARGE_FILES && defined(_LARGEFILE64_SOURCE)
+    oflags |= O_LARGEFILE;
+#elif defined(O_LARGEFILE)
+    if (flag & APR_FOPEN_LARGEFILE) {
+        oflags |= O_LARGEFILE;
+    }
+#endif
+
+#if APR_HAS_THREADS
+    if ((flag & APR_FOPEN_BUFFERED) && (flag & APR_FOPEN_XTHREAD)) {
+        rv = apr_thread_mutex_create(&thlock,
+                                     APR_THREAD_MUTEX_DEFAULT, pool);
+        if (rv) {
+            return rv;
+        }
+    }
+#endif
+
+    if (perm == APR_OS_DEFAULT) {
+        fd = open(fname, oflags, 0666);
+    }
+    else {
+        fd = open(fname, oflags, apr_unix_perms2mode(perm));
+    } 
+    if (fd < 0) {
+       return errno;
+    }
+    if (!(flag & APR_FOPEN_NOCLEANUP)) {
+#ifdef O_CLOEXEC
+        static int has_o_cloexec = 0;
+        if (!has_o_cloexec)
+#endif
+        {
+            int flags;
+
+            if ((flags = fcntl(fd, F_GETFD)) == -1) {
+                close(fd);
+                return errno;
+            }
+            if ((flags & FD_CLOEXEC) == 0) {
+                flags |= FD_CLOEXEC;
+                if (fcntl(fd, F_SETFD, flags) == -1) {
+                    close(fd);
+                    return errno;
+                }
+            }
+#ifdef O_CLOEXEC
+            else {
+                has_o_cloexec = 1;
+            }
+#endif
+        }
+    }
+
+    (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
+    (*new)->pool = pool;
+    (*new)->flags = flag;
+    (*new)->filedes = fd;
+
+    (*new)->fname = apr_pstrdup(pool, fname);
+
+    (*new)->blocking = BLK_ON;
+    (*new)->buffered = (flag & APR_FOPEN_BUFFERED) > 0;
+
+    if ((*new)->buffered) {
+        (*new)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
+        (*new)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
+#if APR_HAS_THREADS
+        if ((*new)->flags & APR_FOPEN_XTHREAD) {
+            (*new)->thlock = thlock;
+        }
+#endif
+    }
+    else {
+        (*new)->buffer = NULL;
+    }
+
+    (*new)->is_pipe = 0;
+    (*new)->timeout = -1;
+    (*new)->ungetchar = -1;
+    (*new)->eof_hit = 0;
+    (*new)->filePtr = 0;
+    (*new)->bufpos = 0;
+    (*new)->dataRead = 0;
+    (*new)->direction = 0;
+#ifndef WAITIO_USES_POLL
+    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
+     * initialize the pollset if needed.
+     */
+    (*new)->pollset = NULL;
+#endif
+    if (!(flag & APR_FOPEN_NOCLEANUP)) {
+        apr_pool_cleanup_register((*new)->pool, (void *)(*new), 
+                                  apr_unix_file_cleanup, 
+                                  apr_unix_child_file_cleanup);
+    }
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
+{
+    return apr_pool_cleanup_run(file->pool, file, apr_unix_file_cleanup);
+}
+
+APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
+{
+    if (unlink(path) == 0) {
+        return APR_SUCCESS;
+    }
+    else {
+        return errno;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, 
+                                          const char *to_path,
+                                          apr_pool_t *p)
+{
+    if (rename(from_path, to_path) != 0) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, 
+                                          apr_file_t *file)
+{
+    *thefile = file->filedes;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, 
+                                          apr_os_file_t *thefile,
+                                          apr_int32_t flags, apr_pool_t *pool)
+{
+    int *dafile = thefile;
+    
+    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
+    (*file)->pool = pool;
+    (*file)->eof_hit = 0;
+    (*file)->blocking = BLK_UNKNOWN; /* in case it is a pipe */
+    (*file)->timeout = -1;
+    (*file)->ungetchar = -1; /* no char avail */
+    (*file)->filedes = *dafile;
+    (*file)->flags = flags | APR_FOPEN_NOCLEANUP;
+    (*file)->buffered = (flags & APR_FOPEN_BUFFERED) > 0;
+
+#ifndef WAITIO_USES_POLL
+    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
+     * initialize the pollset if needed.
+     */
+    (*file)->pollset = NULL;
+#endif
+
+    if ((*file)->buffered) {
+        (*file)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
+        (*file)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
+#if APR_HAS_THREADS
+        if ((*file)->flags & APR_FOPEN_XTHREAD) {
+            apr_status_t rv;
+            rv = apr_thread_mutex_create(&((*file)->thlock),
+                                         APR_THREAD_MUTEX_DEFAULT, pool);
+            if (rv) {
+                return rv;
+            }
+        }
+#endif
+    }
+    return APR_SUCCESS;
+}    
+
+APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
+{
+    if (fptr->eof_hit == 1) {
+        return APR_EOF;
+    }
+    return APR_SUCCESS;
+}   
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile, 
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool)
+{
+    int fd = STDERR_FILENO;
+
+    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile, 
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool)
+{
+    int fd = STDOUT_FILENO;
+
+    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_WRITE, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile, 
+                                                    apr_int32_t flags,
+                                                    apr_pool_t *pool)
+{
+    int fd = STDIN_FILENO;
+
+    return apr_os_file_put(thefile, &fd, flags | APR_FOPEN_READ, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, 
+                                               apr_pool_t *pool)
+{
+    return apr_file_open_flags_stderr(thefile, 0, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, 
+                                               apr_pool_t *pool)
+{
+    return apr_file_open_flags_stdout(thefile, 0, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, 
+                                              apr_pool_t *pool)
+{
+    return apr_file_open_flags_stdin(thefile, 0, pool);
+}
+
+APR_IMPLEMENT_INHERIT_SET(file, flags, pool, apr_unix_file_cleanup)
+
+/* We need to do this by hand instead of using APR_IMPLEMENT_INHERIT_UNSET
+ * because the macro sets both cleanups to the same function, which is not
+ * suitable on Unix (see PR 41119). */
+APR_DECLARE(apr_status_t) apr_file_inherit_unset(apr_file_t *thefile)
+{
+    if (thefile->flags & APR_FOPEN_NOCLEANUP) {
+        return APR_EINVAL;
+    }
+    if (thefile->flags & APR_INHERIT) {
+        int flags;
+
+        if ((flags = fcntl(thefile->filedes, F_GETFD)) == -1)
+            return errno;
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(thefile->filedes, F_SETFD, flags) == -1)
+            return errno;
+
+        thefile->flags &= ~APR_INHERIT;
+        apr_pool_child_cleanup_set(thefile->pool,
+                                   (void *)thefile,
+                                   apr_unix_file_cleanup,
+                                   apr_unix_child_file_cleanup);
+    }
+    return APR_SUCCESS;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(file)
+
+APR_DECLARE(apr_status_t) apr_file_link(const char *from_path, 
+                                          const char *to_path)
+{
+    if (link(from_path, to_path) == -1) {
+        return errno;
+    }
+
+    return APR_SUCCESS;
+}

Deleted: vendor/apache/apr/1.5.2/file_io/unix/pipe.c
===================================================================
--- vendor/apache/apr/dist/file_io/unix/pipe.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/unix/pipe.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,264 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-
-#include "apr_arch_inherit.h"
-
-/* Figure out how to get pipe block/nonblock on BeOS...
- * Basically, BONE7 changed things again so that ioctl didn't work,
- * but now fcntl does, hence we need to do this extra checking.
- * The joys of beta programs. :-)
- */
-#if BEOS
-#if !BONE7
-# define BEOS_BLOCKING 1
-#else
-# define BEOS_BLOCKING 0
-#endif
-#endif
-
-static apr_status_t pipeblock(apr_file_t *thepipe)
-{
-#if !BEOS_BLOCKING
-      int fd_flags;
-
-      fd_flags = fcntl(thepipe->filedes, F_GETFL, 0);
-#  if defined(O_NONBLOCK)
-      fd_flags &= ~O_NONBLOCK;
-#  elif defined(O_NDELAY)
-      fd_flags &= ~O_NDELAY;
-#  elif defined(O_FNDELAY)
-      fd_flags &= ~O_FNDELAY;
-#  else 
-      /* XXXX: this breaks things, but an alternative isn't obvious...*/
-      return APR_ENOTIMPL;
-#  endif
-      if (fcntl(thepipe->filedes, F_SETFL, fd_flags) == -1) {
-          return errno;
-      }
-#else /* BEOS_BLOCKING */
-
-#  if BEOS_BONE /* This only works on BONE 0-6 */
-      int on = 0;
-      if (ioctl(thepipe->filedes, FIONBIO, &on, sizeof(on)) < 0) {
-          return errno;
-      }
-#  else /* "classic" BeOS doesn't support this at all */
-      return APR_ENOTIMPL;
-#  endif 
- 
-#endif /* !BEOS_BLOCKING */
-
-    thepipe->blocking = BLK_ON;
-    return APR_SUCCESS;
-}
-
-static apr_status_t pipenonblock(apr_file_t *thepipe)
-{
-#if !BEOS_BLOCKING
-      int fd_flags = fcntl(thepipe->filedes, F_GETFL, 0);
-
-#  if defined(O_NONBLOCK)
-      fd_flags |= O_NONBLOCK;
-#  elif defined(O_NDELAY)
-      fd_flags |= O_NDELAY;
-#  elif defined(O_FNDELAY)
-      fd_flags |= O_FNDELAY;
-#  else
-      /* XXXX: this breaks things, but an alternative isn't obvious...*/
-      return APR_ENOTIMPL;
-#  endif
-      if (fcntl(thepipe->filedes, F_SETFL, fd_flags) == -1) {
-          return errno;
-      }
-    
-#else /* BEOS_BLOCKING */
-
-#  if BEOS_BONE /* This only works on BONE 0-6 */
-      int on = 1;
-      if (ioctl(thepipe->filedes, FIONBIO, &on, sizeof(on)) < 0) {
-          return errno;
-      }
-#  else /* "classic" BeOS doesn't support this at all */
-      return APR_ENOTIMPL;
-#  endif
-
-#endif /* !BEOS_BLOCKING */
-
-    thepipe->blocking = BLK_OFF;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)
-{
-    if (thepipe->is_pipe == 1) {
-        thepipe->timeout = timeout;
-        if (timeout >= 0) {
-            if (thepipe->blocking != BLK_OFF) { /* blocking or unknown state */
-                return pipenonblock(thepipe);
-            }
-        }
-        else {
-            if (thepipe->blocking != BLK_ON) { /* non-blocking or unknown state */
-                return pipeblock(thepipe);
-            }
-        }
-        return APR_SUCCESS;
-    }
-    return APR_EINVAL;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)
-{
-    if (thepipe->is_pipe == 1) {
-        *timeout = thepipe->timeout;
-        return APR_SUCCESS;
-    }
-    return APR_EINVAL;
-}
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
-                                             apr_os_file_t *thefile,
-                                             int register_cleanup,
-                                             apr_pool_t *pool)
-{
-    int *dafile = thefile;
-    
-    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
-    (*file)->pool = pool;
-    (*file)->eof_hit = 0;
-    (*file)->is_pipe = 1;
-    (*file)->blocking = BLK_UNKNOWN; /* app needs to make a timeout call */
-    (*file)->timeout = -1;
-    (*file)->ungetchar = -1; /* no char avail */
-    (*file)->filedes = *dafile;
-    if (!register_cleanup) {
-        (*file)->flags = APR_FOPEN_NOCLEANUP;
-    }
-    (*file)->buffered = 0;
-#if APR_HAS_THREADS
-    (*file)->thlock = NULL;
-#endif
-    if (register_cleanup) {
-        apr_pool_cleanup_register((*file)->pool, (void *)(*file),
-                                  apr_unix_file_cleanup,
-                                  apr_pool_cleanup_null);
-    }
-#ifndef WAITIO_USES_POLL
-    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
-     * initialize the pollset if needed.
-     */
-    (*file)->pollset = NULL;
-#endif
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
-                                          apr_os_file_t *thefile,
-                                          apr_pool_t *pool)
-{
-    return apr_os_pipe_put_ex(file, thefile, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
-{
-    int filedes[2];
-
-    if (pipe(filedes) == -1) {
-        return errno;
-    }
-    
-    (*in) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
-    (*in)->pool = pool;
-    (*in)->filedes = filedes[0];
-    (*in)->is_pipe = 1;
-    (*in)->fname = NULL;
-    (*in)->buffered = 0;
-    (*in)->blocking = BLK_ON;
-    (*in)->timeout = -1;
-    (*in)->ungetchar = -1;
-    (*in)->flags = APR_INHERIT;
-#if APR_HAS_THREADS
-    (*in)->thlock = NULL;
-#endif
-#ifndef WAITIO_USES_POLL
-    (*in)->pollset = NULL;
-#endif
-    (*out) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
-    (*out)->pool = pool;
-    (*out)->filedes = filedes[1];
-    (*out)->is_pipe = 1;
-    (*out)->fname = NULL;
-    (*out)->buffered = 0;
-    (*out)->blocking = BLK_ON;
-    (*out)->flags = APR_INHERIT;
-    (*out)->timeout = -1;
-#if APR_HAS_THREADS
-    (*out)->thlock = NULL;
-#endif
-#ifndef WAITIO_USES_POLL
-    (*out)->pollset = NULL;
-#endif
-    apr_pool_cleanup_register((*in)->pool, (void *)(*in), apr_unix_file_cleanup,
-                         apr_pool_cleanup_null);
-    apr_pool_cleanup_register((*out)->pool, (void *)(*out), apr_unix_file_cleanup,
-                         apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in, 
-                                                  apr_file_t **out, 
-                                                  apr_int32_t blocking,
-                                                  apr_pool_t *pool)
-{
-    apr_status_t status;
-
-    if ((status = apr_file_pipe_create(in, out, pool)) != APR_SUCCESS)
-        return status;
-
-    switch (blocking) {
-        case APR_FULL_BLOCK:
-            break;
-        case APR_READ_BLOCK:
-            apr_file_pipe_timeout_set(*out, 0);
-            break;
-        case APR_WRITE_BLOCK:
-            apr_file_pipe_timeout_set(*in, 0);
-            break;
-        default:
-            apr_file_pipe_timeout_set(*out, 0);
-            apr_file_pipe_timeout_set(*in, 0);
-    }
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, 
-                                                    apr_fileperms_t perm, apr_pool_t *pool)
-{
-    mode_t mode = apr_unix_perms2mode(perm);
-
-    if (mkfifo(filename, mode) == -1) {
-        return errno;
-    }
-    return APR_SUCCESS;
-} 
-
-    
-

Copied: vendor/apache/apr/1.5.2/file_io/unix/pipe.c (from rev 9273, vendor/apache/apr/dist/file_io/unix/pipe.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/unix/pipe.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/unix/pipe.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,264 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+
+#include "apr_arch_inherit.h"
+
+/* Figure out how to get pipe block/nonblock on BeOS...
+ * Basically, BONE7 changed things again so that ioctl didn't work,
+ * but now fcntl does, hence we need to do this extra checking.
+ * The joys of beta programs. :-)
+ */
+#if defined(BEOS)
+#if !defined(BONE7)
+# define BEOS_BLOCKING 1
+#else
+# define BEOS_BLOCKING 0
+#endif
+#endif
+
+static apr_status_t pipeblock(apr_file_t *thepipe)
+{
+#if !defined(BEOS) || !BEOS_BLOCKING
+      int fd_flags;
+
+      fd_flags = fcntl(thepipe->filedes, F_GETFL, 0);
+#  if defined(O_NONBLOCK)
+      fd_flags &= ~O_NONBLOCK;
+#  elif defined(O_NDELAY)
+      fd_flags &= ~O_NDELAY;
+#  elif defined(O_FNDELAY)
+      fd_flags &= ~O_FNDELAY;
+#  else 
+      /* XXXX: this breaks things, but an alternative isn't obvious...*/
+      return APR_ENOTIMPL;
+#  endif
+      if (fcntl(thepipe->filedes, F_SETFL, fd_flags) == -1) {
+          return errno;
+      }
+#else /* BEOS_BLOCKING */
+
+#  if BEOS_BONE /* This only works on BONE 0-6 */
+      int on = 0;
+      if (ioctl(thepipe->filedes, FIONBIO, &on, sizeof(on)) < 0) {
+          return errno;
+      }
+#  else /* "classic" BeOS doesn't support this at all */
+      return APR_ENOTIMPL;
+#  endif 
+ 
+#endif /* !BEOS_BLOCKING */
+
+    thepipe->blocking = BLK_ON;
+    return APR_SUCCESS;
+}
+
+static apr_status_t pipenonblock(apr_file_t *thepipe)
+{
+#if !defined(BEOS) || !BEOS_BLOCKING
+      int fd_flags = fcntl(thepipe->filedes, F_GETFL, 0);
+
+#  if defined(O_NONBLOCK)
+      fd_flags |= O_NONBLOCK;
+#  elif defined(O_NDELAY)
+      fd_flags |= O_NDELAY;
+#  elif defined(O_FNDELAY)
+      fd_flags |= O_FNDELAY;
+#  else
+      /* XXXX: this breaks things, but an alternative isn't obvious...*/
+      return APR_ENOTIMPL;
+#  endif
+      if (fcntl(thepipe->filedes, F_SETFL, fd_flags) == -1) {
+          return errno;
+      }
+    
+#else /* BEOS_BLOCKING */
+
+#  if BEOS_BONE /* This only works on BONE 0-6 */
+      int on = 1;
+      if (ioctl(thepipe->filedes, FIONBIO, &on, sizeof(on)) < 0) {
+          return errno;
+      }
+#  else /* "classic" BeOS doesn't support this at all */
+      return APR_ENOTIMPL;
+#  endif
+
+#endif /* !BEOS_BLOCKING */
+
+    thepipe->blocking = BLK_OFF;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)
+{
+    if (thepipe->is_pipe == 1) {
+        thepipe->timeout = timeout;
+        if (timeout >= 0) {
+            if (thepipe->blocking != BLK_OFF) { /* blocking or unknown state */
+                return pipenonblock(thepipe);
+            }
+        }
+        else {
+            if (thepipe->blocking != BLK_ON) { /* non-blocking or unknown state */
+                return pipeblock(thepipe);
+            }
+        }
+        return APR_SUCCESS;
+    }
+    return APR_EINVAL;
+}
+
+APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)
+{
+    if (thepipe->is_pipe == 1) {
+        *timeout = thepipe->timeout;
+        return APR_SUCCESS;
+    }
+    return APR_EINVAL;
+}
+
+APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
+                                             apr_os_file_t *thefile,
+                                             int register_cleanup,
+                                             apr_pool_t *pool)
+{
+    int *dafile = thefile;
+    
+    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
+    (*file)->pool = pool;
+    (*file)->eof_hit = 0;
+    (*file)->is_pipe = 1;
+    (*file)->blocking = BLK_UNKNOWN; /* app needs to make a timeout call */
+    (*file)->timeout = -1;
+    (*file)->ungetchar = -1; /* no char avail */
+    (*file)->filedes = *dafile;
+    if (!register_cleanup) {
+        (*file)->flags = APR_FOPEN_NOCLEANUP;
+    }
+    (*file)->buffered = 0;
+#if APR_HAS_THREADS
+    (*file)->thlock = NULL;
+#endif
+    if (register_cleanup) {
+        apr_pool_cleanup_register((*file)->pool, (void *)(*file),
+                                  apr_unix_file_cleanup,
+                                  apr_pool_cleanup_null);
+    }
+#ifndef WAITIO_USES_POLL
+    /* Start out with no pollset.  apr_wait_for_io_or_timeout() will
+     * initialize the pollset if needed.
+     */
+    (*file)->pollset = NULL;
+#endif
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
+                                          apr_os_file_t *thefile,
+                                          apr_pool_t *pool)
+{
+    return apr_os_pipe_put_ex(file, thefile, 0, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
+{
+    int filedes[2];
+
+    if (pipe(filedes) == -1) {
+        return errno;
+    }
+    
+    (*in) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
+    (*in)->pool = pool;
+    (*in)->filedes = filedes[0];
+    (*in)->is_pipe = 1;
+    (*in)->fname = NULL;
+    (*in)->buffered = 0;
+    (*in)->blocking = BLK_ON;
+    (*in)->timeout = -1;
+    (*in)->ungetchar = -1;
+    (*in)->flags = APR_INHERIT;
+#if APR_HAS_THREADS
+    (*in)->thlock = NULL;
+#endif
+#ifndef WAITIO_USES_POLL
+    (*in)->pollset = NULL;
+#endif
+    (*out) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
+    (*out)->pool = pool;
+    (*out)->filedes = filedes[1];
+    (*out)->is_pipe = 1;
+    (*out)->fname = NULL;
+    (*out)->buffered = 0;
+    (*out)->blocking = BLK_ON;
+    (*out)->flags = APR_INHERIT;
+    (*out)->timeout = -1;
+#if APR_HAS_THREADS
+    (*out)->thlock = NULL;
+#endif
+#ifndef WAITIO_USES_POLL
+    (*out)->pollset = NULL;
+#endif
+    apr_pool_cleanup_register((*in)->pool, (void *)(*in), apr_unix_file_cleanup,
+                         apr_pool_cleanup_null);
+    apr_pool_cleanup_register((*out)->pool, (void *)(*out), apr_unix_file_cleanup,
+                         apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in, 
+                                                  apr_file_t **out, 
+                                                  apr_int32_t blocking,
+                                                  apr_pool_t *pool)
+{
+    apr_status_t status;
+
+    if ((status = apr_file_pipe_create(in, out, pool)) != APR_SUCCESS)
+        return status;
+
+    switch (blocking) {
+        case APR_FULL_BLOCK:
+            break;
+        case APR_READ_BLOCK:
+            apr_file_pipe_timeout_set(*out, 0);
+            break;
+        case APR_WRITE_BLOCK:
+            apr_file_pipe_timeout_set(*in, 0);
+            break;
+        default:
+            apr_file_pipe_timeout_set(*out, 0);
+            apr_file_pipe_timeout_set(*in, 0);
+    }
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, 
+                                                    apr_fileperms_t perm, apr_pool_t *pool)
+{
+    mode_t mode = apr_unix_perms2mode(perm);
+
+    if (mkfifo(filename, mode) == -1) {
+        return errno;
+    }
+    return APR_SUCCESS;
+} 
+
+    
+

Deleted: vendor/apache/apr/1.5.2/file_io/unix/readwrite.c
===================================================================
--- vendor/apache/apr/dist/file_io/unix/readwrite.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/unix/readwrite.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,526 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_thread_mutex.h"
-#include "apr_support.h"
-
-/* The only case where we don't use wait_for_io_or_timeout is on
- * pre-BONE BeOS, so this check should be sufficient and simpler */
-#if !BEOS_R5
-#define USE_WAIT_FOR_IO
-#endif
-
-static apr_status_t file_read_buffered(apr_file_t *thefile, void *buf,
-                                       apr_size_t *nbytes)
-{
-    apr_ssize_t rv;
-    char *pos = (char *)buf;
-    apr_uint64_t blocksize;
-    apr_uint64_t size = *nbytes;
-
-    if (thefile->direction == 1) {
-        rv = apr_file_flush_locked(thefile);
-        if (rv) {
-            return rv;
-        }
-        thefile->bufpos = 0;
-        thefile->direction = 0;
-        thefile->dataRead = 0;
-    }
-
-    rv = 0;
-    if (thefile->ungetchar != -1) {
-        *pos = (char)thefile->ungetchar;
-        ++pos;
-        --size;
-        thefile->ungetchar = -1;
-    }
-    while (rv == 0 && size > 0) {
-        if (thefile->bufpos >= thefile->dataRead) {
-            int bytesread = read(thefile->filedes, thefile->buffer, 
-                                 thefile->bufsize);
-            if (bytesread == 0) {
-                thefile->eof_hit = TRUE;
-                rv = APR_EOF;
-                break;
-            }
-            else if (bytesread == -1) {
-                rv = errno;
-                break;
-            }
-            thefile->dataRead = bytesread;
-            thefile->filePtr += thefile->dataRead;
-            thefile->bufpos = 0;
-        }
-
-        blocksize = size > thefile->dataRead - thefile->bufpos ? thefile->dataRead - thefile->bufpos : size;
-        memcpy(pos, thefile->buffer + thefile->bufpos, blocksize);
-        thefile->bufpos += blocksize;
-        pos += blocksize;
-        size -= blocksize;
-    }
-
-    *nbytes = pos - (char *)buf;
-    if (*nbytes) {
-        rv = 0;
-    }
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)
-{
-    apr_ssize_t rv;
-    apr_size_t bytes_read;
-
-    if (*nbytes <= 0) {
-        *nbytes = 0;
-        return APR_SUCCESS;
-    }
-
-    if (thefile->buffered) {
-        file_lock(thefile);
-        rv = file_read_buffered(thefile, buf, nbytes);
-        file_unlock(thefile);
-        return rv;
-    }
-    else {
-        bytes_read = 0;
-        if (thefile->ungetchar != -1) {
-            bytes_read = 1;
-            *(char *)buf = (char)thefile->ungetchar;
-            buf = (char *)buf + 1;
-            (*nbytes)--;
-            thefile->ungetchar = -1;
-            if (*nbytes == 0) {
-                *nbytes = bytes_read;
-                return APR_SUCCESS;
-            }
-        }
-
-        do {
-            rv = read(thefile->filedes, buf, *nbytes);
-        } while (rv == -1 && errno == EINTR);
-#ifdef USE_WAIT_FOR_IO
-        if (rv == -1 && 
-            (errno == EAGAIN || errno == EWOULDBLOCK) && 
-            thefile->timeout != 0) {
-            apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 1);
-            if (arv != APR_SUCCESS) {
-                *nbytes = bytes_read;
-                return arv;
-            }
-            else {
-                do {
-                    rv = read(thefile->filedes, buf, *nbytes);
-                } while (rv == -1 && errno == EINTR);
-            }
-        }  
-#endif
-        *nbytes = bytes_read;
-        if (rv == 0) {
-            thefile->eof_hit = TRUE;
-            return APR_EOF;
-        }
-        if (rv > 0) {
-            *nbytes += rv;
-            return APR_SUCCESS;
-        }
-        return errno;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)
-{
-    apr_size_t rv;
-
-    if (thefile->buffered) {
-        char *pos = (char *)buf;
-        int blocksize;
-        int size = *nbytes;
-
-        file_lock(thefile);
-
-        if ( thefile->direction == 0 ) {
-            /* Position file pointer for writing at the offset we are 
-             * logically reading from
-             */
-            apr_int64_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
-            if (offset != thefile->filePtr)
-                lseek(thefile->filedes, offset, SEEK_SET);
-            thefile->bufpos = thefile->dataRead = 0;
-            thefile->direction = 1;
-        }
-
-        rv = 0;
-        while (rv == 0 && size > 0) {
-            if (thefile->bufpos == thefile->bufsize)   /* write buffer is full*/
-                rv = apr_file_flush_locked(thefile);
-
-            blocksize = size > thefile->bufsize - thefile->bufpos ? 
-                        thefile->bufsize - thefile->bufpos : size;
-            memcpy(thefile->buffer + thefile->bufpos, pos, blocksize);                      
-            thefile->bufpos += blocksize;
-            pos += blocksize;
-            size -= blocksize;
-        }
-
-        file_unlock(thefile);
-
-        return rv;
-    }
-    else {
-        do {
-            rv = write(thefile->filedes, buf, *nbytes);
-        } while (rv == (apr_size_t)-1 && errno == EINTR);
-#ifdef USE_WAIT_FOR_IO
-        if (rv == (apr_size_t)-1 &&
-            (errno == EAGAIN || errno == EWOULDBLOCK) && 
-            thefile->timeout != 0) {
-            apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 0);
-            if (arv != APR_SUCCESS) {
-                *nbytes = 0;
-                return arv;
-            }
-            else {
-                do {
-                    do {
-                        rv = write(thefile->filedes, buf, *nbytes);
-                    } while (rv == (apr_size_t)-1 && errno == EINTR);
-                    if (rv == (apr_size_t)-1 &&
-                        (errno == EAGAIN || errno == EWOULDBLOCK)) {
-                        *nbytes /= 2; /* yes, we'll loop if kernel lied
-                                       * and we can't even write 1 byte
-                                       */
-                    }
-                    else {
-                        break;
-                    }
-                } while (1);
-            }
-        }  
-#endif
-        if (rv == (apr_size_t)-1) {
-            (*nbytes) = 0;
-            return errno;
-        }
-        *nbytes = rv;
-        return APR_SUCCESS;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iovec *vec,
-                                          apr_size_t nvec, apr_size_t *nbytes)
-{
-#ifdef HAVE_WRITEV
-    apr_status_t rv;
-    apr_ssize_t bytes;
-
-    if (thefile->buffered) {
-        file_lock(thefile);
-
-        rv = apr_file_flush_locked(thefile);
-        if (rv != APR_SUCCESS) {
-            file_unlock(thefile);
-            return rv;
-        }
-        if (thefile->direction == 0) {
-            /* Position file pointer for writing at the offset we are
-             * logically reading from
-             */
-            apr_int64_t offset = thefile->filePtr - thefile->dataRead +
-                                 thefile->bufpos;
-            if (offset != thefile->filePtr)
-                lseek(thefile->filedes, offset, SEEK_SET);
-            thefile->bufpos = thefile->dataRead = 0;
-        }
-
-        file_unlock(thefile);
-    }
-
-    if ((bytes = writev(thefile->filedes, vec, nvec)) < 0) {
-        *nbytes = 0;
-        rv = errno;
-    }
-    else {
-        *nbytes = bytes;
-        rv = APR_SUCCESS;
-    }
-    return rv;
-#else
-    /**
-     * The problem with trying to output the entire iovec is that we cannot
-     * maintain the behaviour that a real writev would have.  If we iterate
-     * over the iovec one at a time, we lose the atomic properties of 
-     * writev().  The other option is to combine the entire iovec into one
-     * buffer that we could then send in one call to write().  This is not 
-     * reasonable since we do not know how much data an iovec could contain.
-     *
-     * The only reasonable option, that maintains the semantics of a real 
-     * writev(), is to only write the first iovec.  Callers of file_writev()
-     * must deal with partial writes as they normally would. If you want to 
-     * ensure an entire iovec is written, use apr_file_writev_full().
-     */
-
-    *nbytes = vec[0].iov_len;
-    return apr_file_write(thefile, vec[0].iov_base, nbytes);
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile)
-{
-    apr_size_t nbytes = 1;
-
-    return apr_file_write(thefile, &ch, &nbytes);
-}
-
-APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile)
-{
-    thefile->ungetchar = (unsigned char)ch;
-    return APR_SUCCESS; 
-}
-
-APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile)
-{
-    apr_size_t nbytes = 1;
-
-    return apr_file_read(thefile, ch, &nbytes);
-}
-
-APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile)
-{
-    return apr_file_write_full(thefile, str, strlen(str), NULL);
-}
-
-apr_status_t apr_file_flush_locked(apr_file_t *thefile)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-    if (thefile->direction == 1 && thefile->bufpos) {
-        apr_ssize_t written = 0, ret;
-
-        do {
-            ret = write(thefile->filedes, thefile->buffer + written,
-                        thefile->bufpos - written);
-            if (ret > 0)
-                written += ret;
-        } while (written < thefile->bufpos &&
-                 (ret > 0 || (ret == -1 && errno == EINTR)));
-        if (ret == -1) {
-            rv = errno;
-        } else {
-            thefile->filePtr += written;
-            thefile->bufpos = 0;
-        }
-    }
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-    if (thefile->buffered) {
-        file_lock(thefile);
-        rv = apr_file_flush_locked(thefile);
-        file_unlock(thefile);
-    }
-    /* There isn't anything to do if we aren't buffering the output
-     * so just return success.
-     */
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_sync(apr_file_t *thefile)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-    file_lock(thefile);
-
-    if (thefile->buffered) {
-        rv = apr_file_flush_locked(thefile);
-
-        if (rv != APR_SUCCESS) {
-            file_unlock(thefile);
-            return rv;
-        }
-    }
-
-    if (fsync(thefile->filedes)) {
-        rv = apr_get_os_error();
-    }
-
-    file_unlock(thefile);
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_datasync(apr_file_t *thefile)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-    file_lock(thefile);
-
-    if (thefile->buffered) {
-        rv = apr_file_flush_locked(thefile);
-
-        if (rv != APR_SUCCESS) {
-            file_unlock(thefile);
-            return rv;
-        }
-    }
-
-#ifdef HAVE_FDATASYNC
-    if (fdatasync(thefile->filedes)) {
-#else
-    if (fsync(thefile->filedes)) {
-#endif
-        rv = apr_get_os_error();
-    }
-
-    file_unlock(thefile);
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile)
-{
-    apr_status_t rv = APR_SUCCESS; /* get rid of gcc warning */
-    apr_size_t nbytes;
-    const char *str_start = str;
-    char *final = str + len - 1;
-
-    if (len <= 1) {  
-        /* sort of like fgets(), which returns NULL and stores no bytes 
-         */
-        return APR_SUCCESS;
-    }
-
-    /* If we have an underlying buffer, we can be *much* more efficient
-     * and skip over the apr_file_read calls.
-     */
-    if (thefile->buffered) {
-        file_lock(thefile);
-
-        if (thefile->direction == 1) {
-            rv = apr_file_flush_locked(thefile);
-            if (rv) {
-                file_unlock(thefile);
-                return rv;
-            }
-
-            thefile->direction = 0;
-            thefile->bufpos = 0;
-            thefile->dataRead = 0;
-        }
-
-        while (str < final) { /* leave room for trailing '\0' */
-            /* Force ungetc leftover to call apr_file_read. */
-            if (thefile->bufpos < thefile->dataRead &&
-                thefile->ungetchar == -1) {
-                *str = thefile->buffer[thefile->bufpos++];
-            }
-            else {
-                nbytes = 1;
-                rv = file_read_buffered(thefile, str, &nbytes);
-                if (rv != APR_SUCCESS) {
-                    break;
-                }
-            }
-            if (*str == '\n') {
-                ++str;
-                break;
-            }
-            ++str;
-        }
-        file_unlock(thefile);
-    }
-    else {
-        while (str < final) { /* leave room for trailing '\0' */
-            nbytes = 1;
-            rv = apr_file_read(thefile, str, &nbytes);
-            if (rv != APR_SUCCESS) {
-                break;
-            }
-            if (*str == '\n') {
-                ++str;
-                break;
-            }
-            ++str;
-        }
-    }
-
-    /* We must store a terminating '\0' if we've stored any chars. We can
-     * get away with storing it if we hit an error first. 
-     */
-    *str = '\0';
-    if (str > str_start) {
-        /* we stored chars; don't report EOF or any other errors;
-         * the app will find out about that on the next call
-         */
-        return APR_SUCCESS;
-    }
-    return rv;
-}
-
-struct apr_file_printf_data {
-    apr_vformatter_buff_t vbuff;
-    apr_file_t *fptr;
-    char *buf;
-};
-
-static int file_printf_flush(apr_vformatter_buff_t *buff)
-{
-    struct apr_file_printf_data *data = (struct apr_file_printf_data *)buff;
-
-    if (apr_file_write_full(data->fptr, data->buf, 
-                            data->vbuff.curpos - data->buf, NULL)) {
-        return -1;
-    }
-
-    data->vbuff.curpos = data->buf;
-    return 0;
-}
-
-APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, 
-                                        const char *format, ...)
-{
-    struct apr_file_printf_data data;
-    va_list ap;
-    int count;
-
-    /* don't really need a HUGE_STRING_LEN anymore */
-    data.buf = malloc(HUGE_STRING_LEN);
-    if (data.buf == NULL) {
-        return -1;
-    }
-    data.vbuff.curpos = data.buf;
-    data.vbuff.endpos = data.buf + HUGE_STRING_LEN;
-    data.fptr = fptr;
-    va_start(ap, format);
-    count = apr_vformatter(file_printf_flush,
-                           (apr_vformatter_buff_t *)&data, format, ap);
-    /* apr_vformatter does not call flush for the last bits */
-    if (count >= 0) file_printf_flush((apr_vformatter_buff_t *)&data);
-
-    va_end(ap);
-
-    free(data.buf);
-
-    return count;
-}

Copied: vendor/apache/apr/1.5.2/file_io/unix/readwrite.c (from rev 9273, vendor/apache/apr/dist/file_io/unix/readwrite.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/unix/readwrite.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/unix/readwrite.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,526 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_strings.h"
+#include "apr_thread_mutex.h"
+#include "apr_support.h"
+
+/* The only case where we don't use wait_for_io_or_timeout is on
+ * pre-BONE BeOS, so this check should be sufficient and simpler */
+#if !defined(BEOS_R5)
+#define USE_WAIT_FOR_IO
+#endif
+
+static apr_status_t file_read_buffered(apr_file_t *thefile, void *buf,
+                                       apr_size_t *nbytes)
+{
+    apr_ssize_t rv;
+    char *pos = (char *)buf;
+    apr_uint64_t blocksize;
+    apr_uint64_t size = *nbytes;
+
+    if (thefile->direction == 1) {
+        rv = apr_file_flush_locked(thefile);
+        if (rv) {
+            return rv;
+        }
+        thefile->bufpos = 0;
+        thefile->direction = 0;
+        thefile->dataRead = 0;
+    }
+
+    rv = 0;
+    if (thefile->ungetchar != -1) {
+        *pos = (char)thefile->ungetchar;
+        ++pos;
+        --size;
+        thefile->ungetchar = -1;
+    }
+    while (rv == 0 && size > 0) {
+        if (thefile->bufpos >= thefile->dataRead) {
+            int bytesread = read(thefile->filedes, thefile->buffer, 
+                                 thefile->bufsize);
+            if (bytesread == 0) {
+                thefile->eof_hit = TRUE;
+                rv = APR_EOF;
+                break;
+            }
+            else if (bytesread == -1) {
+                rv = errno;
+                break;
+            }
+            thefile->dataRead = bytesread;
+            thefile->filePtr += thefile->dataRead;
+            thefile->bufpos = 0;
+        }
+
+        blocksize = size > thefile->dataRead - thefile->bufpos ? thefile->dataRead - thefile->bufpos : size;
+        memcpy(pos, thefile->buffer + thefile->bufpos, blocksize);
+        thefile->bufpos += blocksize;
+        pos += blocksize;
+        size -= blocksize;
+    }
+
+    *nbytes = pos - (char *)buf;
+    if (*nbytes) {
+        rv = 0;
+    }
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)
+{
+    apr_ssize_t rv;
+    apr_size_t bytes_read;
+
+    if (*nbytes <= 0) {
+        *nbytes = 0;
+        return APR_SUCCESS;
+    }
+
+    if (thefile->buffered) {
+        file_lock(thefile);
+        rv = file_read_buffered(thefile, buf, nbytes);
+        file_unlock(thefile);
+        return rv;
+    }
+    else {
+        bytes_read = 0;
+        if (thefile->ungetchar != -1) {
+            bytes_read = 1;
+            *(char *)buf = (char)thefile->ungetchar;
+            buf = (char *)buf + 1;
+            (*nbytes)--;
+            thefile->ungetchar = -1;
+            if (*nbytes == 0) {
+                *nbytes = bytes_read;
+                return APR_SUCCESS;
+            }
+        }
+
+        do {
+            rv = read(thefile->filedes, buf, *nbytes);
+        } while (rv == -1 && errno == EINTR);
+#ifdef USE_WAIT_FOR_IO
+        if (rv == -1 && 
+            (errno == EAGAIN || errno == EWOULDBLOCK) && 
+            thefile->timeout != 0) {
+            apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 1);
+            if (arv != APR_SUCCESS) {
+                *nbytes = bytes_read;
+                return arv;
+            }
+            else {
+                do {
+                    rv = read(thefile->filedes, buf, *nbytes);
+                } while (rv == -1 && errno == EINTR);
+            }
+        }  
+#endif
+        *nbytes = bytes_read;
+        if (rv == 0) {
+            thefile->eof_hit = TRUE;
+            return APR_EOF;
+        }
+        if (rv > 0) {
+            *nbytes += rv;
+            return APR_SUCCESS;
+        }
+        return errno;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)
+{
+    apr_size_t rv;
+
+    if (thefile->buffered) {
+        char *pos = (char *)buf;
+        int blocksize;
+        int size = *nbytes;
+
+        file_lock(thefile);
+
+        if ( thefile->direction == 0 ) {
+            /* Position file pointer for writing at the offset we are 
+             * logically reading from
+             */
+            apr_int64_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
+            if (offset != thefile->filePtr)
+                lseek(thefile->filedes, offset, SEEK_SET);
+            thefile->bufpos = thefile->dataRead = 0;
+            thefile->direction = 1;
+        }
+
+        rv = 0;
+        while (rv == 0 && size > 0) {
+            if (thefile->bufpos == thefile->bufsize)   /* write buffer is full*/
+                rv = apr_file_flush_locked(thefile);
+
+            blocksize = size > thefile->bufsize - thefile->bufpos ? 
+                        thefile->bufsize - thefile->bufpos : size;
+            memcpy(thefile->buffer + thefile->bufpos, pos, blocksize);                      
+            thefile->bufpos += blocksize;
+            pos += blocksize;
+            size -= blocksize;
+        }
+
+        file_unlock(thefile);
+
+        return rv;
+    }
+    else {
+        do {
+            rv = write(thefile->filedes, buf, *nbytes);
+        } while (rv == (apr_size_t)-1 && errno == EINTR);
+#ifdef USE_WAIT_FOR_IO
+        if (rv == (apr_size_t)-1 &&
+            (errno == EAGAIN || errno == EWOULDBLOCK) && 
+            thefile->timeout != 0) {
+            apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 0);
+            if (arv != APR_SUCCESS) {
+                *nbytes = 0;
+                return arv;
+            }
+            else {
+                do {
+                    do {
+                        rv = write(thefile->filedes, buf, *nbytes);
+                    } while (rv == (apr_size_t)-1 && errno == EINTR);
+                    if (rv == (apr_size_t)-1 &&
+                        (errno == EAGAIN || errno == EWOULDBLOCK)) {
+                        *nbytes /= 2; /* yes, we'll loop if kernel lied
+                                       * and we can't even write 1 byte
+                                       */
+                    }
+                    else {
+                        break;
+                    }
+                } while (1);
+            }
+        }  
+#endif
+        if (rv == (apr_size_t)-1) {
+            (*nbytes) = 0;
+            return errno;
+        }
+        *nbytes = rv;
+        return APR_SUCCESS;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iovec *vec,
+                                          apr_size_t nvec, apr_size_t *nbytes)
+{
+#ifdef HAVE_WRITEV
+    apr_status_t rv;
+    apr_ssize_t bytes;
+
+    if (thefile->buffered) {
+        file_lock(thefile);
+
+        rv = apr_file_flush_locked(thefile);
+        if (rv != APR_SUCCESS) {
+            file_unlock(thefile);
+            return rv;
+        }
+        if (thefile->direction == 0) {
+            /* Position file pointer for writing at the offset we are
+             * logically reading from
+             */
+            apr_int64_t offset = thefile->filePtr - thefile->dataRead +
+                                 thefile->bufpos;
+            if (offset != thefile->filePtr)
+                lseek(thefile->filedes, offset, SEEK_SET);
+            thefile->bufpos = thefile->dataRead = 0;
+        }
+
+        file_unlock(thefile);
+    }
+
+    if ((bytes = writev(thefile->filedes, vec, nvec)) < 0) {
+        *nbytes = 0;
+        rv = errno;
+    }
+    else {
+        *nbytes = bytes;
+        rv = APR_SUCCESS;
+    }
+    return rv;
+#else
+    /**
+     * The problem with trying to output the entire iovec is that we cannot
+     * maintain the behaviour that a real writev would have.  If we iterate
+     * over the iovec one at a time, we lose the atomic properties of 
+     * writev().  The other option is to combine the entire iovec into one
+     * buffer that we could then send in one call to write().  This is not 
+     * reasonable since we do not know how much data an iovec could contain.
+     *
+     * The only reasonable option, that maintains the semantics of a real 
+     * writev(), is to only write the first iovec.  Callers of file_writev()
+     * must deal with partial writes as they normally would. If you want to 
+     * ensure an entire iovec is written, use apr_file_writev_full().
+     */
+
+    *nbytes = vec[0].iov_len;
+    return apr_file_write(thefile, vec[0].iov_base, nbytes);
+#endif
+}
+
+APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile)
+{
+    apr_size_t nbytes = 1;
+
+    return apr_file_write(thefile, &ch, &nbytes);
+}
+
+APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile)
+{
+    thefile->ungetchar = (unsigned char)ch;
+    return APR_SUCCESS; 
+}
+
+APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile)
+{
+    apr_size_t nbytes = 1;
+
+    return apr_file_read(thefile, ch, &nbytes);
+}
+
+APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile)
+{
+    return apr_file_write_full(thefile, str, strlen(str), NULL);
+}
+
+apr_status_t apr_file_flush_locked(apr_file_t *thefile)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+    if (thefile->direction == 1 && thefile->bufpos) {
+        apr_ssize_t written = 0, ret;
+
+        do {
+            ret = write(thefile->filedes, thefile->buffer + written,
+                        thefile->bufpos - written);
+            if (ret > 0)
+                written += ret;
+        } while (written < thefile->bufpos &&
+                 (ret > 0 || (ret == -1 && errno == EINTR)));
+        if (ret == -1) {
+            rv = errno;
+        } else {
+            thefile->filePtr += written;
+            thefile->bufpos = 0;
+        }
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+    if (thefile->buffered) {
+        file_lock(thefile);
+        rv = apr_file_flush_locked(thefile);
+        file_unlock(thefile);
+    }
+    /* There isn't anything to do if we aren't buffering the output
+     * so just return success.
+     */
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_sync(apr_file_t *thefile)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+    file_lock(thefile);
+
+    if (thefile->buffered) {
+        rv = apr_file_flush_locked(thefile);
+
+        if (rv != APR_SUCCESS) {
+            file_unlock(thefile);
+            return rv;
+        }
+    }
+
+    if (fsync(thefile->filedes)) {
+        rv = apr_get_os_error();
+    }
+
+    file_unlock(thefile);
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_datasync(apr_file_t *thefile)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+    file_lock(thefile);
+
+    if (thefile->buffered) {
+        rv = apr_file_flush_locked(thefile);
+
+        if (rv != APR_SUCCESS) {
+            file_unlock(thefile);
+            return rv;
+        }
+    }
+
+#ifdef HAVE_FDATASYNC
+    if (fdatasync(thefile->filedes)) {
+#else
+    if (fsync(thefile->filedes)) {
+#endif
+        rv = apr_get_os_error();
+    }
+
+    file_unlock(thefile);
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile)
+{
+    apr_status_t rv = APR_SUCCESS; /* get rid of gcc warning */
+    apr_size_t nbytes;
+    const char *str_start = str;
+    char *final = str + len - 1;
+
+    if (len <= 1) {  
+        /* sort of like fgets(), which returns NULL and stores no bytes 
+         */
+        return APR_SUCCESS;
+    }
+
+    /* If we have an underlying buffer, we can be *much* more efficient
+     * and skip over the apr_file_read calls.
+     */
+    if (thefile->buffered) {
+        file_lock(thefile);
+
+        if (thefile->direction == 1) {
+            rv = apr_file_flush_locked(thefile);
+            if (rv) {
+                file_unlock(thefile);
+                return rv;
+            }
+
+            thefile->direction = 0;
+            thefile->bufpos = 0;
+            thefile->dataRead = 0;
+        }
+
+        while (str < final) { /* leave room for trailing '\0' */
+            /* Force ungetc leftover to call apr_file_read. */
+            if (thefile->bufpos < thefile->dataRead &&
+                thefile->ungetchar == -1) {
+                *str = thefile->buffer[thefile->bufpos++];
+            }
+            else {
+                nbytes = 1;
+                rv = file_read_buffered(thefile, str, &nbytes);
+                if (rv != APR_SUCCESS) {
+                    break;
+                }
+            }
+            if (*str == '\n') {
+                ++str;
+                break;
+            }
+            ++str;
+        }
+        file_unlock(thefile);
+    }
+    else {
+        while (str < final) { /* leave room for trailing '\0' */
+            nbytes = 1;
+            rv = apr_file_read(thefile, str, &nbytes);
+            if (rv != APR_SUCCESS) {
+                break;
+            }
+            if (*str == '\n') {
+                ++str;
+                break;
+            }
+            ++str;
+        }
+    }
+
+    /* We must store a terminating '\0' if we've stored any chars. We can
+     * get away with storing it if we hit an error first. 
+     */
+    *str = '\0';
+    if (str > str_start) {
+        /* we stored chars; don't report EOF or any other errors;
+         * the app will find out about that on the next call
+         */
+        return APR_SUCCESS;
+    }
+    return rv;
+}
+
+struct apr_file_printf_data {
+    apr_vformatter_buff_t vbuff;
+    apr_file_t *fptr;
+    char *buf;
+};
+
+static int file_printf_flush(apr_vformatter_buff_t *buff)
+{
+    struct apr_file_printf_data *data = (struct apr_file_printf_data *)buff;
+
+    if (apr_file_write_full(data->fptr, data->buf, 
+                            data->vbuff.curpos - data->buf, NULL)) {
+        return -1;
+    }
+
+    data->vbuff.curpos = data->buf;
+    return 0;
+}
+
+APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, 
+                                        const char *format, ...)
+{
+    struct apr_file_printf_data data;
+    va_list ap;
+    int count;
+
+    /* don't really need a HUGE_STRING_LEN anymore */
+    data.buf = malloc(HUGE_STRING_LEN);
+    if (data.buf == NULL) {
+        return -1;
+    }
+    data.vbuff.curpos = data.buf;
+    data.vbuff.endpos = data.buf + HUGE_STRING_LEN;
+    data.fptr = fptr;
+    va_start(ap, format);
+    count = apr_vformatter(file_printf_flush,
+                           (apr_vformatter_buff_t *)&data, format, ap);
+    /* apr_vformatter does not call flush for the last bits */
+    if (count >= 0) file_printf_flush((apr_vformatter_buff_t *)&data);
+
+    va_end(ap);
+
+    free(data.buf);
+
+    return count;
+}

Deleted: vendor/apache/apr/1.5.2/file_io/win32/dir.c
===================================================================
--- vendor/apache/apr/dist/file_io/win32/dir.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/win32/dir.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,401 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_arch_atime.h"
-
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#if APR_HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
-
-static apr_status_t dir_cleanup(void *thedir)
-{
-    apr_dir_t *dir = thedir;
-    if (dir->dirhand != INVALID_HANDLE_VALUE && !FindClose(dir->dirhand)) {
-        return apr_get_os_error();
-    }
-    dir->dirhand = INVALID_HANDLE_VALUE;
-    return APR_SUCCESS;
-} 
-
-APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname,
-                                       apr_pool_t *pool)
-{
-    apr_status_t rv;
-
-    apr_size_t len = strlen(dirname);
-    (*new) = apr_pcalloc(pool, sizeof(apr_dir_t));
-    /* Leave room here to add and pop the '*' wildcard for FindFirstFile 
-     * and double-null terminate so we have one character to change.
-     */
-    (*new)->dirname = apr_palloc(pool, len + 3);
-    memcpy((*new)->dirname, dirname, len);
-    if (len && (*new)->dirname[len - 1] != '/') {
-    	(*new)->dirname[len++] = '/';
-    }
-    (*new)->dirname[len++] = '\0';
-    (*new)->dirname[len] = '\0';
-
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        /* Create a buffer for the longest file name we will ever see 
-         */
-        (*new)->w.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW));
-        (*new)->name = apr_pcalloc(pool, APR_FILE_MAX * 3 + 1);        
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-    {
-        /* Note that we won't open a directory that is greater than MAX_PATH,
-         * counting the additional '/' '*' wildcard suffix.  If a * won't fit
-         * then neither will any other file name within the directory.
-         * The length not including the trailing '*' is stored as rootlen, to
-         * skip over all paths which are too long.
-         */
-        if (len >= APR_PATH_MAX) {
-            (*new) = NULL;
-            return APR_ENAMETOOLONG;
-        }
-        (*new)->n.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW));
-    }
-#endif
-    (*new)->rootlen = len - 1;
-    (*new)->pool = pool;
-    (*new)->dirhand = INVALID_HANDLE_VALUE;
-    apr_pool_cleanup_register((*new)->pool, (void *)(*new), dir_cleanup,
-                        apr_pool_cleanup_null);
-
-    rv = apr_dir_read(NULL, 0, *new);
-    if (rv != APR_SUCCESS) {
-        dir_cleanup(*new);
-        *new = NULL;
-    }
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *dir)
-{
-    apr_pool_cleanup_kill(dir->pool, dir, dir_cleanup);
-    return dir_cleanup(dir);
-}
-
-APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
-                                       apr_dir_t *thedir)
-{
-    apr_status_t rv;
-    char *fname;
-    /* The while loops below allow us to skip all invalid file names, so that
-     * we aren't reporting any files where their absolute paths are too long.
-     */
-#if APR_HAS_UNICODE_FS
-    apr_wchar_t wdirname[APR_PATH_MAX];
-    apr_wchar_t *eos = NULL;
-    IF_WIN_OS_IS_UNICODE
-    {
-        /* This code path is always be invoked by apr_dir_open or
-         * apr_dir_rewind, so return without filling out the finfo.
-         */
-        if (thedir->dirhand == INVALID_HANDLE_VALUE) 
-        {
-            apr_status_t rv;
-            if ((rv = utf8_to_unicode_path(wdirname, sizeof(wdirname) 
-                                                   / sizeof(apr_wchar_t), 
-                                           thedir->dirname))) {
-                return rv;
-            }
-            eos = wcschr(wdirname, '\0');
-            eos[0] = '*';
-            eos[1] = '\0';
-            thedir->dirhand = FindFirstFileW(wdirname, thedir->w.entry);
-            eos[0] = '\0';
-            if (thedir->dirhand == INVALID_HANDLE_VALUE) {
-                return apr_get_os_error();
-            }
-            thedir->bof = 1;
-            return APR_SUCCESS;
-        }
-        else if (thedir->bof) {
-            /* Noop - we already called FindFirstFileW from
-             * either apr_dir_open or apr_dir_rewind ... use
-             * that first record.
-             */
-            thedir->bof = 0; 
-        }
-        else if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) {
-            return apr_get_os_error();
-        }
-
-        while (thedir->rootlen &&
-               thedir->rootlen + wcslen(thedir->w.entry->cFileName) >= APR_PATH_MAX)
-        {
-            if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) {
-                return apr_get_os_error();
-            }
-        }
-        if ((rv = unicode_to_utf8_path(thedir->name, APR_FILE_MAX * 3 + 1, 
-                                       thedir->w.entry->cFileName)))
-            return rv;
-        fname = thedir->name;
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-    {
-        /* This code path is always be invoked by apr_dir_open or 
-         * apr_dir_rewind, so return without filling out the finfo.
-         */
-        if (thedir->dirhand == INVALID_HANDLE_VALUE) {
-            /* '/' terminated, so add the '*' and pop it when we finish */
-            char *eop = strchr(thedir->dirname, '\0');
-            eop[0] = '*';
-            eop[1] = '\0';
-            thedir->dirhand = FindFirstFileA(thedir->dirname, 
-                                             thedir->n.entry);
-            eop[0] = '\0';
-            if (thedir->dirhand == INVALID_HANDLE_VALUE) {
-                return apr_get_os_error();
-            }
-            thedir->bof = 1;
-            return APR_SUCCESS;
-        }
-        else if (thedir->bof) {
-            /* Noop - we already called FindFirstFileW from
-             * either apr_dir_open or apr_dir_rewind ... use
-             * that first record.
-             */
-            thedir->bof = 0; 
-        }
-        else if (!FindNextFileA(thedir->dirhand, thedir->n.entry)) {
-            return apr_get_os_error();
-        }
-        while (thedir->rootlen &&
-               thedir->rootlen + strlen(thedir->n.entry->cFileName) >= MAX_PATH)
-        {
-            if (!FindNextFileA(thedir->dirhand, thedir->n.entry)) {
-                return apr_get_os_error();
-            }
-        }
-        fname = thedir->n.entry->cFileName;
-    }
-#endif
-
-    fillin_fileinfo(finfo, (WIN32_FILE_ATTRIBUTE_DATA *) thedir->w.entry, 
-                    0, wanted);
-    finfo->pool = thedir->pool;
-
-    finfo->valid |= APR_FINFO_NAME;
-    finfo->name = fname;
-
-    if (wanted &= ~finfo->valid) {
-        /* Go back and get more_info if we can't answer the whole inquiry
-         */
-#if APR_HAS_UNICODE_FS
-        IF_WIN_OS_IS_UNICODE
-        {
-            /* Almost all our work is done.  Tack on the wide file name
-             * to the end of the wdirname (already / delimited)
-             */
-            if (!eos)
-                eos = wcschr(wdirname, '\0');
-            wcscpy(eos, thedir->w.entry->cFileName);
-            rv = more_finfo(finfo, wdirname, wanted, MORE_OF_WFSPEC);
-            eos[0] = '\0';
-            return rv;
-        }
-#endif
-#if APR_HAS_ANSI_FS
-        ELSE_WIN_OS_IS_ANSI
-        {
-#if APR_HAS_UNICODE_FS
-            /* Don't waste stack space on a second buffer, the one we set
-             * aside for the wide directory name is twice what we need.
-             */
-            char *fspec = (char*)wdirname;
-#else
-            char fspec[APR_PATH_MAX];
-#endif
-            apr_size_t dirlen = strlen(thedir->dirname);
-            if (dirlen >= sizeof(fspec))
-                dirlen = sizeof(fspec) - 1;
-            apr_cpystrn(fspec, thedir->dirname, sizeof(fspec));
-            apr_cpystrn(fspec + dirlen, fname, sizeof(fspec) - dirlen);
-            return more_finfo(finfo, fspec, wanted, MORE_OF_FSPEC);
-        }
-#endif
-    }
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *dir)
-{
-    apr_status_t rv;
-
-    /* this will mark the handle as invalid and we'll open it
-     * again if apr_dir_read() is subsequently called
-     */
-    rv = dir_cleanup(dir);
-
-    if (rv == APR_SUCCESS)
-        rv = apr_dir_read(NULL, 0, dir);
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm,
-                                       apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        apr_wchar_t wpath[APR_PATH_MAX];
-        apr_status_t rv;
-        if ((rv = utf8_to_unicode_path(wpath,
-                                       sizeof(wpath) / sizeof(apr_wchar_t),
-                                       path))) {
-            return rv;
-        }
-        if (!CreateDirectoryW(wpath, NULL)) {
-            return apr_get_os_error();
-        }
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-        if (!CreateDirectory(path, NULL)) {
-            return apr_get_os_error();
-        }
-#endif
-    return APR_SUCCESS;
-}
-
-
-static apr_status_t dir_make_parent(char *path,
-                                    apr_fileperms_t perm,
-                                    apr_pool_t *pool)
-{
-    apr_status_t rv;
-    char *ch = strrchr(path, '\\');
-    if (!ch) {
-        return APR_ENOENT;
-    }
-
-    *ch = '\0';
-    rv = apr_dir_make (path, perm, pool); /* Try to make straight off */
-    
-    if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */
-        rv = dir_make_parent(path, perm, pool);
-
-        if (rv == APR_SUCCESS) {
-            rv = apr_dir_make (path, perm, pool); /* And complete the path */
-        }
-    }
-
-    *ch = '\\'; /* Always replace the slash before returning */
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path,
-                                                 apr_fileperms_t perm,
-                                                 apr_pool_t *pool)
-{
-    apr_status_t rv = 0;
-    
-    rv = apr_dir_make (path, perm, pool); /* Try to make PATH right out */
-    
-    if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */
-        char *dir;
-        
-        rv = apr_filepath_merge(&dir, "", path, APR_FILEPATH_NATIVE, pool);
-
-        if (rv == APR_SUCCESS)
-            rv = dir_make_parent(dir, perm, pool); /* Make intermediate dirs */
-        
-        if (rv == APR_SUCCESS)
-            rv = apr_dir_make (dir, perm, pool);   /* And complete the path */
-    }
-
-    /*
-     * It's OK if PATH exists. Timing issues can lead to the second
-     * apr_dir_make being called on existing dir, therefore this check
-     * has to come last.
-     */
-    if (APR_STATUS_IS_EEXIST(rv))
-        return APR_SUCCESS;
-
-    return rv;
-}
-
-
-APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        apr_wchar_t wpath[APR_PATH_MAX];
-        apr_status_t rv;
-        if ((rv = utf8_to_unicode_path(wpath,
-                                       sizeof(wpath) / sizeof(apr_wchar_t),
-                                       path))) {
-            return rv;
-        }
-        if (!RemoveDirectoryW(wpath)) {
-            return apr_get_os_error();
-        }
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-        if (!RemoveDirectory(path)) {
-            return apr_get_os_error();
-        }
-#endif
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir,
-                                         apr_dir_t *dir)
-{
-    if (dir == NULL) {
-        return APR_ENODIR;
-    }
-    *thedir = dir->dirhand;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir,
-                                         apr_os_dir_t *thedir,
-                                         apr_pool_t *pool)
-{
-    return APR_ENOTIMPL;
-}

Copied: vendor/apache/apr/1.5.2/file_io/win32/dir.c (from rev 9273, vendor/apache/apr/dist/file_io/win32/dir.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/win32/dir.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/win32/dir.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,408 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+#include "apr_arch_atime.h"
+
+#if APR_HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+#if APR_HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+
+static apr_status_t dir_cleanup(void *thedir)
+{
+    apr_dir_t *dir = thedir;
+    if (dir->dirhand != INVALID_HANDLE_VALUE && !FindClose(dir->dirhand)) {
+        return apr_get_os_error();
+    }
+    dir->dirhand = INVALID_HANDLE_VALUE;
+    return APR_SUCCESS;
+} 
+
+APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname,
+                                       apr_pool_t *pool)
+{
+    apr_status_t rv;
+
+    apr_size_t len = strlen(dirname);
+    (*new) = apr_pcalloc(pool, sizeof(apr_dir_t));
+    /* Leave room here to add and pop the '*' wildcard for FindFirstFile 
+     * and double-null terminate so we have one character to change.
+     */
+    (*new)->dirname = apr_palloc(pool, len + 3);
+    memcpy((*new)->dirname, dirname, len);
+    if (len && (*new)->dirname[len - 1] != '/') {
+    	(*new)->dirname[len++] = '/';
+    }
+    (*new)->dirname[len++] = '\0';
+    (*new)->dirname[len] = '\0';
+
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        /* Create a buffer for the longest file name we will ever see 
+         */
+        (*new)->w.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW));
+        (*new)->name = apr_pcalloc(pool, APR_FILE_MAX * 3 + 1);        
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+    {
+        /* Note that we won't open a directory that is greater than MAX_PATH,
+         * counting the additional '/' '*' wildcard suffix.  If a * won't fit
+         * then neither will any other file name within the directory.
+         * The length not including the trailing '*' is stored as rootlen, to
+         * skip over all paths which are too long.
+         */
+        if (len >= APR_PATH_MAX) {
+            (*new) = NULL;
+            return APR_ENAMETOOLONG;
+        }
+        (*new)->n.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW));
+    }
+#endif
+    (*new)->rootlen = len - 1;
+    (*new)->pool = pool;
+    (*new)->dirhand = INVALID_HANDLE_VALUE;
+    apr_pool_cleanup_register((*new)->pool, (void *)(*new), dir_cleanup,
+                        apr_pool_cleanup_null);
+
+    rv = apr_dir_read(NULL, 0, *new);
+    if (rv != APR_SUCCESS) {
+        dir_cleanup(*new);
+        *new = NULL;
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *dir)
+{
+    apr_pool_cleanup_kill(dir->pool, dir, dir_cleanup);
+    return dir_cleanup(dir);
+}
+
+APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
+                                       apr_dir_t *thedir)
+{
+    apr_status_t rv;
+    char *fname;
+    /* The while loops below allow us to skip all invalid file names, so that
+     * we aren't reporting any files where their absolute paths are too long.
+     */
+#if APR_HAS_UNICODE_FS
+    apr_wchar_t wdirname[APR_PATH_MAX];
+    apr_wchar_t *eos = NULL;
+    IF_WIN_OS_IS_UNICODE
+    {
+        /* This code path is always be invoked by apr_dir_open or
+         * apr_dir_rewind, so return without filling out the finfo.
+         */
+        if (thedir->dirhand == INVALID_HANDLE_VALUE) 
+        {
+            apr_status_t rv;
+            if ((rv = utf8_to_unicode_path(wdirname, sizeof(wdirname) 
+                                                   / sizeof(apr_wchar_t), 
+                                           thedir->dirname))) {
+                return rv;
+            }
+            eos = wcschr(wdirname, '\0');
+            eos[0] = '*';
+            eos[1] = '\0';
+            thedir->dirhand = FindFirstFileW(wdirname, thedir->w.entry);
+            eos[0] = '\0';
+            if (thedir->dirhand == INVALID_HANDLE_VALUE) {
+                return apr_get_os_error();
+            }
+            thedir->bof = 1;
+            return APR_SUCCESS;
+        }
+        else if (thedir->bof) {
+            /* Noop - we already called FindFirstFileW from
+             * either apr_dir_open or apr_dir_rewind ... use
+             * that first record.
+             */
+            thedir->bof = 0; 
+        }
+        else if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) {
+            return apr_get_os_error();
+        }
+
+        while (thedir->rootlen &&
+               thedir->rootlen + wcslen(thedir->w.entry->cFileName) >= APR_PATH_MAX)
+        {
+            if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) {
+                return apr_get_os_error();
+            }
+        }
+        if ((rv = unicode_to_utf8_path(thedir->name, APR_FILE_MAX * 3 + 1, 
+                                       thedir->w.entry->cFileName)))
+            return rv;
+        fname = thedir->name;
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+    {
+        /* This code path is always be invoked by apr_dir_open or 
+         * apr_dir_rewind, so return without filling out the finfo.
+         */
+        if (thedir->dirhand == INVALID_HANDLE_VALUE) {
+            /* '/' terminated, so add the '*' and pop it when we finish */
+            char *eop = strchr(thedir->dirname, '\0');
+            eop[0] = '*';
+            eop[1] = '\0';
+            thedir->dirhand = FindFirstFileA(thedir->dirname, 
+                                             thedir->n.entry);
+            eop[0] = '\0';
+            if (thedir->dirhand == INVALID_HANDLE_VALUE) {
+                return apr_get_os_error();
+            }
+            thedir->bof = 1;
+            return APR_SUCCESS;
+        }
+        else if (thedir->bof) {
+            /* Noop - we already called FindFirstFileW from
+             * either apr_dir_open or apr_dir_rewind ... use
+             * that first record.
+             */
+            thedir->bof = 0; 
+        }
+        else if (!FindNextFileA(thedir->dirhand, thedir->n.entry)) {
+            return apr_get_os_error();
+        }
+        while (thedir->rootlen &&
+               thedir->rootlen + strlen(thedir->n.entry->cFileName) >= MAX_PATH)
+        {
+            if (!FindNextFileA(thedir->dirhand, thedir->n.entry)) {
+                return apr_get_os_error();
+            }
+        }
+        fname = thedir->n.entry->cFileName;
+    }
+#endif
+
+    fillin_fileinfo(finfo, (WIN32_FILE_ATTRIBUTE_DATA *) thedir->w.entry, 
+                    0, wanted);
+    finfo->pool = thedir->pool;
+
+    finfo->valid |= APR_FINFO_NAME;
+    finfo->name = fname;
+
+    if (wanted &= ~finfo->valid) {
+        /* Go back and get more_info if we can't answer the whole inquiry
+         */
+#if APR_HAS_UNICODE_FS
+        IF_WIN_OS_IS_UNICODE
+        {
+            /* Almost all our work is done.  Tack on the wide file name
+             * to the end of the wdirname (already / delimited)
+             */
+            if (!eos)
+                eos = wcschr(wdirname, '\0');
+            wcscpy(eos, thedir->w.entry->cFileName);
+            rv = more_finfo(finfo, wdirname, wanted, MORE_OF_WFSPEC);
+            eos[0] = '\0';
+            return rv;
+        }
+#endif
+#if APR_HAS_ANSI_FS
+        ELSE_WIN_OS_IS_ANSI
+        {
+#if APR_HAS_UNICODE_FS
+            /* Don't waste stack space on a second buffer, the one we set
+             * aside for the wide directory name is twice what we need.
+             */
+            char *fspec = (char*)wdirname;
+#else
+            char fspec[APR_PATH_MAX];
+#endif
+            apr_size_t dirlen = strlen(thedir->dirname);
+            if (dirlen >= sizeof(fspec))
+                dirlen = sizeof(fspec) - 1;
+            apr_cpystrn(fspec, thedir->dirname, sizeof(fspec));
+            apr_cpystrn(fspec + dirlen, fname, sizeof(fspec) - dirlen);
+            return more_finfo(finfo, fspec, wanted, MORE_OF_FSPEC);
+        }
+#endif
+    }
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *dir)
+{
+    apr_status_t rv;
+
+    /* this will mark the handle as invalid and we'll open it
+     * again if apr_dir_read() is subsequently called
+     */
+    rv = dir_cleanup(dir);
+
+    if (rv == APR_SUCCESS)
+        rv = apr_dir_read(NULL, 0, dir);
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm,
+                                       apr_pool_t *pool)
+{
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        apr_wchar_t wpath[APR_PATH_MAX];
+        apr_status_t rv;
+        if ((rv = utf8_to_unicode_path(wpath,
+                                       sizeof(wpath) / sizeof(apr_wchar_t),
+                                       path))) {
+            return rv;
+        }
+        if (!CreateDirectoryW(wpath, NULL)) {
+            return apr_get_os_error();
+        }
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+        if (!CreateDirectory(path, NULL)) {
+            return apr_get_os_error();
+        }
+#endif
+    return APR_SUCCESS;
+}
+
+
+static apr_status_t dir_make_parent(char *path,
+                                    apr_fileperms_t perm,
+                                    apr_pool_t *pool)
+{
+    apr_status_t rv;
+    char *ch = strrchr(path, '\\');
+    if (!ch) {
+        return APR_ENOENT;
+    }
+
+    *ch = '\0';
+    rv = apr_dir_make (path, perm, pool); /* Try to make straight off */
+    
+    if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */
+        rv = dir_make_parent(path, perm, pool);
+
+        if (rv == APR_SUCCESS || APR_STATUS_IS_EEXIST(rv)) {
+            rv = apr_dir_make(path, perm, pool); /* And complete the path */
+        }
+    }
+
+    *ch = '\\'; /* Always replace the slash before returning */
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path,
+                                                 apr_fileperms_t perm,
+                                                 apr_pool_t *pool)
+{
+    apr_status_t rv = 0;
+
+    rv = apr_dir_make (path, perm, pool); /* Try to make PATH right out */
+
+    if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */
+        char *dir;
+
+        rv = apr_filepath_merge(&dir, "", path, APR_FILEPATH_NATIVE, pool);
+
+        if (rv != APR_SUCCESS)
+            return rv;
+
+        rv = dir_make_parent(dir, perm, pool); /* Make intermediate dirs */
+
+        if (rv == APR_SUCCESS || APR_STATUS_IS_EEXIST(rv)) {
+            rv = apr_dir_make (dir, perm, pool);   /* And complete the path */
+
+            if (APR_STATUS_IS_EEXIST(rv)) {
+                rv = APR_SUCCESS; /* Timing issue; see comment below */
+            }
+        }
+    }
+    else if (APR_STATUS_IS_EEXIST(rv)) {
+        /*
+         * It's OK if PATH exists. Timing issues can lead to the
+         * second apr_dir_make being called on existing dir, therefore
+         * this check has to come last.
+         */
+        rv = APR_SUCCESS;
+    }
+
+    return rv;
+}
+
+
+APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool)
+{
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        apr_wchar_t wpath[APR_PATH_MAX];
+        apr_status_t rv;
+        if ((rv = utf8_to_unicode_path(wpath,
+                                       sizeof(wpath) / sizeof(apr_wchar_t),
+                                       path))) {
+            return rv;
+        }
+        if (!RemoveDirectoryW(wpath)) {
+            return apr_get_os_error();
+        }
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+        if (!RemoveDirectory(path)) {
+            return apr_get_os_error();
+        }
+#endif
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir,
+                                         apr_dir_t *dir)
+{
+    if (dir == NULL) {
+        return APR_ENODIR;
+    }
+    *thedir = dir->dirhand;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir,
+                                         apr_os_dir_t *thedir,
+                                         apr_pool_t *pool)
+{
+    return APR_ENOTIMPL;
+}

Deleted: vendor/apache/apr/1.5.2/file_io/win32/filedup.c
===================================================================
--- vendor/apache/apr/dist/file_io/win32/filedup.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/win32/filedup.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,225 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include <string.h>
-#include "apr_arch_inherit.h"
-#include <io.h> /* for [_open/_get]_osfhandle */
-
-
-APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
-                                       apr_file_t *old_file, apr_pool_t *p)
-{
-#ifdef _WIN32_WCE
-    return APR_ENOTIMPL;
-#else
-    HANDLE hproc = GetCurrentProcess();
-    HANDLE newhand = NULL;
-
-    if (!DuplicateHandle(hproc, old_file->filehand, 
-                         hproc, &newhand, 0, FALSE, 
-                         DUPLICATE_SAME_ACCESS)) {
-        return apr_get_os_error();
-    }
-
-    (*new_file) = (apr_file_t *) apr_pcalloc(p, sizeof(apr_file_t));
-    (*new_file)->filehand = newhand;
-    (*new_file)->flags = old_file->flags & ~(APR_STD_FLAGS | APR_INHERIT);
-    (*new_file)->pool = p;
-    (*new_file)->fname = apr_pstrdup(p, old_file->fname);
-    (*new_file)->append = old_file->append;
-    (*new_file)->buffered = FALSE;
-    (*new_file)->ungetchar = old_file->ungetchar;
-
-#if APR_HAS_THREADS
-    if (old_file->mutex) {
-        apr_thread_mutex_create(&((*new_file)->mutex),
-                                APR_THREAD_MUTEX_DEFAULT, p);
-    }
-#endif
-
-    apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file), file_cleanup,
-                        apr_pool_cleanup_null);
-
-    /* Create a pollset with room for one descriptor. */
-    /* ### check return codes */
-    (void) apr_pollset_create(&(*new_file)->pollset, 1, p, 0);
-
-    return APR_SUCCESS;
-#endif /* !defined(_WIN32_WCE) */
-}
-
-APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
-                                        apr_file_t *old_file, apr_pool_t *p)
-{
-#ifdef _WIN32_WCE
-    return APR_ENOTIMPL;
-#else
-    HANDLE hproc = GetCurrentProcess();
-    HANDLE newhand = NULL;
-    apr_int32_t newflags;
-    int fd;
-
-    if (new_file->flags & APR_STD_FLAGS)
-    {
-        if ((new_file->flags & APR_STD_FLAGS) == APR_STDERR_FLAG)
-        {
-            /* Flush stderr and unset its buffer, then commit the fd-based buffer.
-             * This is typically a noop for Win2K/XP since services with NULL std
-             * handles [but valid FILE *'s, oddly enough], but is required
-             * for NT 4.0 and to use this code outside of services.
-             */
-            fflush(stderr);
-            setvbuf(stderr, NULL, _IONBF, 0);
-            _commit(2 /* stderr */);
-
-            /* Clone a handle can _close() without harming the source handle,
-             * open an MSVCRT-based pseudo-fd for the file handle, then dup2
-             * and close our temporary pseudo-fd once it's been duplicated.
-             * This will incidently keep the FILE-based stderr in sync.
-             * Note the apparently redundant _O_BINARY coersions are required.
-             * Note the _dup2 will close the previous std Win32 handle.
-             */
-            if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
-                                 0, FALSE, DUPLICATE_SAME_ACCESS)) {
-                return apr_get_os_error();
-            }
-            fd = _open_osfhandle((INT_PTR)newhand, _O_WRONLY | _O_BINARY);
-            _dup2(fd, 2);
-            _close(fd);
-            _setmode(2, _O_BINARY);
-
-            /* hPipeWrite was _close()'ed above, and _dup2()'ed
-             * to fd 2 creating a new, inherited Win32 handle.
-             * Recover that real handle from fd 2.  Note that
-             * SetStdHandle(STD_ERROR_HANDLE, _get_osfhandle(2))
-             * is implicit in the dup2() call above
-             */
-            newhand = (HANDLE)_get_osfhandle(2);
-        }
-        else if ((new_file->flags & APR_STD_FLAGS) == APR_STDOUT_FLAG) {
-            /* For the process flow see the stderr case above */
-            fflush(stdout);
-            setvbuf(stdout, NULL, _IONBF, 0);
-            _commit(1 /* stdout */);
-
-            if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
-                                 0, FALSE, DUPLICATE_SAME_ACCESS)) {
-                return apr_get_os_error();
-            }
-            fd = _open_osfhandle((INT_PTR)newhand, _O_WRONLY | _O_BINARY);
-            _dup2(fd, 1);
-            _close(fd);
-            _setmode(1, _O_BINARY);
-            newhand = (HANDLE)_get_osfhandle(1);
-        }
-        else if ((new_file->flags & APR_STD_FLAGS) == APR_STDIN_FLAG) {
-            /* For the process flow see the stderr case above */
-            fflush(stdin);
-            setvbuf(stdin, NULL, _IONBF, 0);
-            _commit(0 /* stdin */);
-
-            if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
-                                 0, FALSE, DUPLICATE_SAME_ACCESS)) {
-                return apr_get_os_error();
-            }
-            fd = _open_osfhandle((INT_PTR)newhand, _O_RDONLY | _O_BINARY);
-            _dup2(fd, 0);
-            _close(fd);
-            _setmode(0, _O_BINARY);
-            newhand = (HANDLE)_get_osfhandle(0);
-        }
-        newflags = (new_file->flags & APR_STD_FLAGS) 
-                 | (old_file->flags & ~APR_STD_FLAGS) | APR_INHERIT;
-
-        /* No need  to close the old file, _dup2() above did that for us */
-    }
-    else {
-        if (!DuplicateHandle(hproc, old_file->filehand, 
-                             hproc, &newhand, 0,
-                             FALSE, DUPLICATE_SAME_ACCESS)) {
-            return apr_get_os_error();
-        }
-        newflags = old_file->flags & ~(APR_STD_FLAGS | APR_INHERIT);
-
-        if (new_file->filehand
-                && (new_file->filehand != INVALID_HANDLE_VALUE)) {
-            CloseHandle(new_file->filehand);
-        }
-    }
-
-    new_file->flags = newflags;
-    new_file->filehand = newhand;
-    new_file->fname = apr_pstrdup(new_file->pool, old_file->fname);
-    new_file->append = old_file->append;
-    new_file->buffered = FALSE;
-    new_file->ungetchar = old_file->ungetchar;
-
-#if APR_HAS_THREADS
-    if (old_file->mutex) {
-        apr_thread_mutex_create(&(new_file->mutex),
-                                APR_THREAD_MUTEX_DEFAULT, p);
-    }
-#endif
-
-    return APR_SUCCESS;
-#endif /* !defined(_WIN32_WCE) */
-}
-
-APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
-                                            apr_file_t *old_file,
-                                            apr_pool_t *p)
-{
-    *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
-    memcpy(*new_file, old_file, sizeof(apr_file_t));
-    (*new_file)->pool = p;
-    if (old_file->buffered) {
-        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
-        (*new_file)->bufsize = old_file->bufsize;
-        if (old_file->direction == 1) {
-            memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
-        }
-        else {
-            memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
-        }
-    }
-    if (old_file->mutex) {
-        apr_thread_mutex_create(&((*new_file)->mutex),
-                                APR_THREAD_MUTEX_DEFAULT, p);
-        apr_thread_mutex_destroy(old_file->mutex);
-    }
-    if (old_file->fname) {
-        (*new_file)->fname = apr_pstrdup(p, old_file->fname);
-    }
-    if (!(old_file->flags & APR_FOPEN_NOCLEANUP)) {
-        apr_pool_cleanup_register(p, (void *)(*new_file), 
-                                  file_cleanup,
-                                  file_cleanup);
-    }
-
-    old_file->filehand = INVALID_HANDLE_VALUE;
-    apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
-                          file_cleanup);
-
-    /* Create a pollset with room for one descriptor. */
-    /* ### check return codes */
-    (void) apr_pollset_create(&(*new_file)->pollset, 1, p, 0);
-
-    return APR_SUCCESS;
-}

Copied: vendor/apache/apr/1.5.2/file_io/win32/filedup.c (from rev 9273, vendor/apache/apr/dist/file_io/win32/filedup.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/win32/filedup.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/win32/filedup.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,229 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_general.h"
+#include "apr_strings.h"
+#include <string.h>
+#include "apr_arch_inherit.h"
+#include <io.h> /* for [_open/_get]_osfhandle */
+
+
+APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
+                                       apr_file_t *old_file, apr_pool_t *p)
+{
+#ifdef _WIN32_WCE
+    return APR_ENOTIMPL;
+#else
+    HANDLE hproc = GetCurrentProcess();
+    HANDLE newhand = NULL;
+
+    if (!DuplicateHandle(hproc, old_file->filehand, 
+                         hproc, &newhand, 0, FALSE, 
+                         DUPLICATE_SAME_ACCESS)) {
+        return apr_get_os_error();
+    }
+
+    (*new_file) = (apr_file_t *) apr_pcalloc(p, sizeof(apr_file_t));
+    (*new_file)->filehand = newhand;
+    (*new_file)->flags = old_file->flags & ~(APR_STD_FLAGS | APR_INHERIT);
+    (*new_file)->pool = p;
+    (*new_file)->fname = apr_pstrdup(p, old_file->fname);
+    (*new_file)->append = old_file->append;
+    (*new_file)->buffered = FALSE;
+    (*new_file)->ungetchar = old_file->ungetchar;
+
+#if APR_HAS_THREADS
+    if (old_file->mutex) {
+        apr_thread_mutex_create(&((*new_file)->mutex),
+                                APR_THREAD_MUTEX_DEFAULT, p);
+    }
+#endif
+
+    apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file), file_cleanup,
+                        apr_pool_cleanup_null);
+
+#if APR_FILES_AS_SOCKETS
+    /* Create a pollset with room for one descriptor. */
+    /* ### check return codes */
+    (void) apr_pollset_create(&(*new_file)->pollset, 1, p, 0);
+#endif
+    return APR_SUCCESS;
+#endif /* !defined(_WIN32_WCE) */
+}
+
+APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
+                                        apr_file_t *old_file, apr_pool_t *p)
+{
+#ifdef _WIN32_WCE
+    return APR_ENOTIMPL;
+#else
+    HANDLE hproc = GetCurrentProcess();
+    HANDLE newhand = NULL;
+    apr_int32_t newflags;
+    int fd;
+
+    if (new_file->flags & APR_STD_FLAGS)
+    {
+        if ((new_file->flags & APR_STD_FLAGS) == APR_STDERR_FLAG)
+        {
+            /* Flush stderr and unset its buffer, then commit the fd-based buffer.
+             * This is typically a noop for Win2K/XP since services with NULL std
+             * handles [but valid FILE *'s, oddly enough], but is required
+             * for NT 4.0 and to use this code outside of services.
+             */
+            fflush(stderr);
+            setvbuf(stderr, NULL, _IONBF, 0);
+            if (!_isatty(2)) {
+                _commit(2 /* stderr */);
+            }
+
+            /* Clone a handle can _close() without harming the source handle,
+             * open an MSVCRT-based pseudo-fd for the file handle, then dup2
+             * and close our temporary pseudo-fd once it's been duplicated.
+             * This will incidently keep the FILE-based stderr in sync.
+             * Note the apparently redundant _O_BINARY coersions are required.
+             * Note the _dup2 will close the previous std Win32 handle.
+             */
+            if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
+                                 0, FALSE, DUPLICATE_SAME_ACCESS)) {
+                return apr_get_os_error();
+            }
+            fd = _open_osfhandle((INT_PTR)newhand, _O_WRONLY | _O_BINARY);
+            _dup2(fd, 2);
+            _close(fd);
+            _setmode(2, _O_BINARY);
+
+            /* hPipeWrite was _close()'ed above, and _dup2()'ed
+             * to fd 2 creating a new, inherited Win32 handle.
+             * Recover that real handle from fd 2.  Note that
+             * SetStdHandle(STD_ERROR_HANDLE, _get_osfhandle(2))
+             * is implicit in the dup2() call above
+             */
+            newhand = (HANDLE)_get_osfhandle(2);
+        }
+        else if ((new_file->flags & APR_STD_FLAGS) == APR_STDOUT_FLAG) {
+            /* For the process flow see the stderr case above */
+            fflush(stdout);
+            setvbuf(stdout, NULL, _IONBF, 0);
+            if (!_isatty(1)) {
+                _commit(1 /* stdout */);
+            }
+
+            if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
+                                 0, FALSE, DUPLICATE_SAME_ACCESS)) {
+                return apr_get_os_error();
+            }
+            fd = _open_osfhandle((INT_PTR)newhand, _O_WRONLY | _O_BINARY);
+            _dup2(fd, 1);
+            _close(fd);
+            _setmode(1, _O_BINARY);
+            newhand = (HANDLE)_get_osfhandle(1);
+        }
+        else if ((new_file->flags & APR_STD_FLAGS) == APR_STDIN_FLAG) {
+            /* For the process flow see the stderr case above */
+            fflush(stdin);
+            setvbuf(stdin, NULL, _IONBF, 0);
+
+            if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
+                                 0, FALSE, DUPLICATE_SAME_ACCESS)) {
+                return apr_get_os_error();
+            }
+            fd = _open_osfhandle((INT_PTR)newhand, _O_RDONLY | _O_BINARY);
+            _dup2(fd, 0);
+            _close(fd);
+            _setmode(0, _O_BINARY);
+            newhand = (HANDLE)_get_osfhandle(0);
+        }
+        newflags = (new_file->flags & APR_STD_FLAGS) 
+                 | (old_file->flags & ~APR_STD_FLAGS) | APR_INHERIT;
+
+        /* No need  to close the old file, _dup2() above did that for us */
+    }
+    else {
+        if (!DuplicateHandle(hproc, old_file->filehand, 
+                             hproc, &newhand, 0,
+                             FALSE, DUPLICATE_SAME_ACCESS)) {
+            return apr_get_os_error();
+        }
+        newflags = old_file->flags & ~(APR_STD_FLAGS | APR_INHERIT);
+
+        if (new_file->filehand
+                && (new_file->filehand != INVALID_HANDLE_VALUE)) {
+            CloseHandle(new_file->filehand);
+        }
+    }
+
+    new_file->flags = newflags;
+    new_file->filehand = newhand;
+    new_file->fname = apr_pstrdup(new_file->pool, old_file->fname);
+    new_file->append = old_file->append;
+    new_file->buffered = FALSE;
+    new_file->ungetchar = old_file->ungetchar;
+
+#if APR_HAS_THREADS
+    if (old_file->mutex) {
+        apr_thread_mutex_create(&(new_file->mutex),
+                                APR_THREAD_MUTEX_DEFAULT, p);
+    }
+#endif
+
+    return APR_SUCCESS;
+#endif /* !defined(_WIN32_WCE) */
+}
+
+APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
+                                            apr_file_t *old_file,
+                                            apr_pool_t *p)
+{
+    *new_file = (apr_file_t *)apr_pmemdup(p, old_file, sizeof(apr_file_t));
+    (*new_file)->pool = p;
+    if (old_file->buffered) {
+        (*new_file)->buffer = apr_palloc(p, old_file->bufsize);
+        (*new_file)->bufsize = old_file->bufsize;
+        if (old_file->direction == 1) {
+            memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
+        }
+        else {
+            memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
+        }
+    }
+    if (old_file->mutex) {
+        apr_thread_mutex_create(&((*new_file)->mutex),
+                                APR_THREAD_MUTEX_DEFAULT, p);
+        apr_thread_mutex_destroy(old_file->mutex);
+    }
+    if (old_file->fname) {
+        (*new_file)->fname = apr_pstrdup(p, old_file->fname);
+    }
+    if (!(old_file->flags & APR_FOPEN_NOCLEANUP)) {
+        apr_pool_cleanup_register(p, (void *)(*new_file), 
+                                  file_cleanup,
+                                  file_cleanup);
+    }
+
+    old_file->filehand = INVALID_HANDLE_VALUE;
+    apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
+                          file_cleanup);
+
+#if APR_FILES_AS_SOCKETS
+    /* Create a pollset with room for one descriptor. */
+    /* ### check return codes */
+    (void) apr_pollset_create(&(*new_file)->pollset, 1, p, 0);
+#endif
+    return APR_SUCCESS;
+}

Deleted: vendor/apache/apr/1.5.2/file_io/win32/open.c
===================================================================
--- vendor/apache/apr/dist/file_io/win32/open.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/win32/open.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,753 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_private.h"
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_thread_mutex.h"
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include <winbase.h>
-#include <string.h>
-#if APR_HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#include "apr_arch_misc.h"
-#include "apr_arch_inherit.h"
-#include <io.h>
-#include <winioctl.h>
-
-#if APR_HAS_UNICODE_FS
-apr_status_t utf8_to_unicode_path(apr_wchar_t* retstr, apr_size_t retlen, 
-                                  const char* srcstr)
-{
-    /* TODO: The computations could preconvert the string to determine
-     * the true size of the retstr, but that's a memory over speed
-     * tradeoff that isn't appropriate this early in development.
-     *
-     * Allocate the maximum string length based on leading 4 
-     * characters of \\?\ (allowing nearly unlimited path lengths) 
-     * plus the trailing null, then transform /'s into \\'s since
-     * the \\?\ form doesn't allow '/' path seperators.
-     *
-     * Note that the \\?\ form only works for local drive paths, and
-     * \\?\UNC\ is needed UNC paths.
-     */
-    apr_size_t srcremains = strlen(srcstr) + 1;
-    apr_wchar_t *t = retstr;
-    apr_status_t rv;
-
-    /* This is correct, we don't twist the filename if it is will
-     * definately be shorter than 248 characters.  It merits some 
-     * performance testing to see if this has any effect, but there
-     * seem to be applications that get confused by the resulting
-     * Unicode \\?\ style file names, especially if they use argv[0]
-     * or call the Win32 API functions such as GetModuleName, etc.
-     * Not every application is prepared to handle such names.
-     * 
-     * Note also this is shorter than MAX_PATH, as directory paths 
-     * are actually limited to 248 characters. 
-     *
-     * Note that a utf-8 name can never result in more wide chars
-     * than the original number of utf-8 narrow chars.
-     */
-    if (srcremains > 248) {
-        if (srcstr[1] == ':' && (srcstr[2] == '/' || srcstr[2] == '\\')) {
-            wcscpy (retstr, L"\\\\?\\");
-            retlen -= 4;
-            t += 4;
-        }
-        else if ((srcstr[0] == '/' || srcstr[0] == '\\')
-              && (srcstr[1] == '/' || srcstr[1] == '\\')
-              && (srcstr[2] != '?')) {
-            /* Skip the slashes */
-            srcstr += 2;
-            srcremains -= 2;
-            wcscpy (retstr, L"\\\\?\\UNC\\");
-            retlen -= 8;
-            t += 8;
-        }
-    }
-
-    if ((rv = apr_conv_utf8_to_ucs2(srcstr, &srcremains, t, &retlen))) {
-        return (rv == APR_INCOMPLETE) ? APR_EINVAL : rv;
-    }
-    if (srcremains) {
-        return APR_ENAMETOOLONG;
-    }
-    for (; *t; ++t)
-        if (*t == L'/')
-            *t = L'\\';
-    return APR_SUCCESS;
-}
-
-apr_status_t unicode_to_utf8_path(char* retstr, apr_size_t retlen,
-                                  const apr_wchar_t* srcstr)
-{
-    /* Skip the leading 4 characters if the path begins \\?\, or substitute
-     * // for the \\?\UNC\ path prefix, allocating the maximum string
-     * length based on the remaining string, plus the trailing null.
-     * then transform \\'s back into /'s since the \\?\ form never
-     * allows '/' path seperators, and APR always uses '/'s.
-     */
-    apr_size_t srcremains = wcslen(srcstr) + 1;
-    apr_status_t rv;
-    char *t = retstr;
-    if (srcstr[0] == L'\\' && srcstr[1] == L'\\' && 
-        srcstr[2] == L'?'  && srcstr[3] == L'\\') {
-        if (srcstr[4] == L'U' && srcstr[5] == L'N' && 
-            srcstr[6] == L'C' && srcstr[7] == L'\\') {
-            srcremains -= 8;
-            srcstr += 8;
-            retstr[0] = '\\';
-            retstr[1] = '\\';
-            retlen -= 2;
-            t += 2;
-        }
-        else {
-            srcremains -= 4;
-            srcstr += 4;
-        }
-    }
-        
-    if ((rv = apr_conv_ucs2_to_utf8(srcstr, &srcremains, t, &retlen))) {
-        return rv;
-    }
-    if (srcremains) {
-        return APR_ENAMETOOLONG;
-    }
-    return APR_SUCCESS;
-}
-#endif
-
-void *res_name_from_filename(const char *file, int global, apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        apr_wchar_t *wpre, *wfile, *ch;
-        apr_size_t n = strlen(file) + 1;
-        apr_size_t r, d;
-
-        if (apr_os_level >= APR_WIN_2000) {
-            if (global)
-                wpre = L"Global\\";
-            else
-                wpre = L"Local\\";
-        }
-        else
-            wpre = L"";
-        r = wcslen(wpre);
-
-        if (n > 256 - r) {
-            file += n - 256 - r;
-            n = 256;
-            /* skip utf8 continuation bytes */
-            while ((*file & 0xC0) == 0x80) {
-                ++file;
-                --n;
-            }
-        }
-        wfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t));
-        wcscpy(wfile, wpre);
-        d = n;
-        if (apr_conv_utf8_to_ucs2(file, &n, wfile + r, &d)) {
-            return NULL;
-        }
-        for (ch = wfile + r; *ch; ++ch) {
-            if (*ch == ':' || *ch == '/' || *ch == '\\')
-                *ch = '_';
-        }
-        return wfile;
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-    {
-        char *nfile, *ch;
-        apr_size_t n = strlen(file) + 1;
-
-#if !APR_HAS_UNICODE_FS
-        apr_size_t r, d;
-        char *pre;
-
-        if (apr_os_level >= APR_WIN_2000) {
-            if (global)
-                pre = "Global\\";
-            else
-                pre = "Local\\";
-        }
-        else
-            pre = "";
-        r = strlen(pre);
-
-        if (n > 256 - r) {
-            file += n - 256 - r;
-            n = 256;
-        }
-        nfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t));
-        memcpy(nfile, pre, r);
-        memcpy(nfile + r, file, n);
-#else
-        const apr_size_t r = 0;
-        if (n > 256) {
-            file += n - 256;
-            n = 256;
-        }
-        nfile = apr_pmemdup(pool, file, n);
-#endif
-        for (ch = nfile + r; *ch; ++ch) {
-            if (*ch == ':' || *ch == '/' || *ch == '\\')
-                *ch = '_';
-        }
-        return nfile;
-    }
-#endif
-}
-
-#if APR_HAS_UNICODE_FS
-static apr_status_t make_sparse_file(apr_file_t *file)
-{
-    BY_HANDLE_FILE_INFORMATION info;
-    apr_status_t rv;
-    DWORD bytesread = 0;
-    DWORD res;
-
-    /* test */
-
-    if (GetFileInformationByHandle(file->filehand, &info)
-            && (info.dwFileAttributes & FILE_ATTRIBUTE_SPARSE_FILE))
-        return APR_SUCCESS;
-
-    if (file->pOverlapped) {
-        file->pOverlapped->Offset     = 0;
-        file->pOverlapped->OffsetHigh = 0;
-    }
-
-    if (DeviceIoControl(file->filehand, FSCTL_SET_SPARSE, NULL, 0, NULL, 0,
-                        &bytesread, file->pOverlapped)) {
-        rv = APR_SUCCESS;
-    }
-    else 
-    {
-        rv = apr_get_os_error();
-
-        if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING))
-        {
-            do {
-                res = WaitForSingleObject(file->pOverlapped->hEvent, 
-                                          (file->timeout > 0)
-                                            ? (DWORD)(file->timeout/1000)
-                                            : ((file->timeout == -1) 
-                                                 ? INFINITE : 0));
-            } while (res == WAIT_ABANDONED);
-
-            if (res != WAIT_OBJECT_0) {
-                CancelIo(file->filehand);
-            }
-
-            if (GetOverlappedResult(file->filehand, file->pOverlapped, 
-                                    &bytesread, TRUE))
-                rv = APR_SUCCESS;
-            else
-                rv = apr_get_os_error();
-        }
-    }
-    return rv;
-}
-#endif
-
-apr_status_t file_cleanup(void *thefile)
-{
-    apr_file_t *file = thefile;
-    apr_status_t flush_rv = APR_SUCCESS;
-
-    if (file->filehand != INVALID_HANDLE_VALUE) {
-
-        if (file->buffered) {
-            /* XXX: flush here is not mutex protected */
-            flush_rv = apr_file_flush((apr_file_t *)thefile);
-        }
-
-        /* In order to avoid later segfaults with handle 'reuse',
-         * we must protect against the case that a dup2'ed handle
-         * is being closed, and invalidate the corresponding StdHandle 
-         * We also tell msvcrt when stdhandles are closed.
-         */
-        if (file->flags & APR_STD_FLAGS)
-        {
-            if ((file->flags & APR_STD_FLAGS) == APR_STDERR_FLAG) {
-                _close(2);
-                SetStdHandle(STD_ERROR_HANDLE, INVALID_HANDLE_VALUE);
-            }
-            else if ((file->flags & APR_STD_FLAGS) == APR_STDOUT_FLAG) {
-                _close(1);
-                SetStdHandle(STD_OUTPUT_HANDLE, INVALID_HANDLE_VALUE);
-            }
-            else if ((file->flags & APR_STD_FLAGS) == APR_STDIN_FLAG) {
-                _close(0);
-                SetStdHandle(STD_INPUT_HANDLE, INVALID_HANDLE_VALUE);
-            }
-        }
-        else
-            CloseHandle(file->filehand);
-
-        file->filehand = INVALID_HANDLE_VALUE;
-    }
-    if (file->pOverlapped && file->pOverlapped->hEvent) {
-        CloseHandle(file->pOverlapped->hEvent);
-        file->pOverlapped = NULL;
-    }
-    return flush_rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname,
-                                   apr_int32_t flag, apr_fileperms_t perm,
-                                   apr_pool_t *pool)
-{
-    HANDLE handle = INVALID_HANDLE_VALUE;
-    DWORD oflags = 0;
-    DWORD createflags = 0;
-    DWORD attributes = 0;
-    DWORD sharemode = FILE_SHARE_READ | FILE_SHARE_WRITE;
-    apr_status_t rv;
-
-    if (flag & APR_FOPEN_READ) {
-        oflags |= GENERIC_READ;
-    }
-    if (flag & APR_FOPEN_WRITE) {
-        oflags |= GENERIC_WRITE;
-    }
-    if (flag & APR_WRITEATTRS) {
-        oflags |= FILE_WRITE_ATTRIBUTES;
-    }
-
-    if (apr_os_level >= APR_WIN_NT) 
-        sharemode |= FILE_SHARE_DELETE;
-
-    if (flag & APR_FOPEN_CREATE) {
-        if (flag & APR_FOPEN_EXCL) {
-            /* only create new if file does not already exist */
-            createflags = CREATE_NEW;
-        } else if (flag & APR_FOPEN_TRUNCATE) {
-            /* truncate existing file or create new */
-            createflags = CREATE_ALWAYS;
-        } else {
-            /* open existing but create if necessary */
-            createflags = OPEN_ALWAYS;
-        }
-    } else if (flag & APR_FOPEN_TRUNCATE) {
-        /* only truncate if file already exists */
-        createflags = TRUNCATE_EXISTING;
-    } else {
-        /* only open if file already exists */
-        createflags = OPEN_EXISTING;
-    }
-
-    if ((flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_CREATE)) {
-        return APR_EACCES;
-    }   
-    
-    if (flag & APR_FOPEN_DELONCLOSE) {
-        attributes |= FILE_FLAG_DELETE_ON_CLOSE;
-    }
-
-    if (flag & APR_OPENLINK) {
-       attributes |= FILE_FLAG_OPEN_REPARSE_POINT;
-    }
-
-    /* Without READ or WRITE, we fail unless apr called apr_file_open
-     * internally with the private APR_OPENINFO flag.
-     *
-     * With the APR_OPENINFO flag on NT, use the option flag
-     * FILE_FLAG_BACKUP_SEMANTICS to allow us to open directories.
-     * See the static resolve_ident() fn in file_io/win32/filestat.c
-     */
-    if (!(flag & (APR_FOPEN_READ | APR_FOPEN_WRITE))) {
-        if (flag & APR_OPENINFO) {
-            if (apr_os_level >= APR_WIN_NT) {
-                attributes |= FILE_FLAG_BACKUP_SEMANTICS;
-            }
-        }
-        else {
-            return APR_EACCES;
-        }
-        if (flag & APR_READCONTROL)
-            oflags |= READ_CONTROL;
-    }
-
-    if (flag & APR_FOPEN_XTHREAD) {
-        /* This win32 specific feature is required 
-         * to allow multiple threads to work with the file.
-         */
-        attributes |= FILE_FLAG_OVERLAPPED;
-    }
-
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        apr_wchar_t wfname[APR_PATH_MAX];
-
-        if (flag & APR_FOPEN_SENDFILE_ENABLED) {
-            /* This feature is required to enable sendfile operations
-             * against the file on Win32. Also implies APR_FOPEN_XTHREAD.
-             */
-            flag |= APR_FOPEN_XTHREAD;
-            attributes |= FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_OVERLAPPED;
-        }
-
-        if ((rv = utf8_to_unicode_path(wfname, sizeof(wfname) 
-                                             / sizeof(apr_wchar_t), fname)))
-            return rv;
-        handle = CreateFileW(wfname, oflags, sharemode,
-                             NULL, createflags, attributes, 0);
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI {
-        handle = CreateFileA(fname, oflags, sharemode,
-                             NULL, createflags, attributes, 0);
-        /* This feature is not supported on this platform. */
-        flag &= ~APR_FOPEN_SENDFILE_ENABLED;
-    }
-#endif
-    if (handle == INVALID_HANDLE_VALUE) {
-        return apr_get_os_error();
-    }
-
-    (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
-    (*new)->pool = pool;
-    (*new)->filehand = handle;
-    (*new)->fname = apr_pstrdup(pool, fname);
-    (*new)->flags = flag;
-    (*new)->timeout = -1;
-    (*new)->ungetchar = -1;
-
-    if (flag & APR_FOPEN_APPEND) {
-        (*new)->append = 1;
-        SetFilePointer((*new)->filehand, 0, NULL, FILE_END);
-    }
-    if (flag & APR_FOPEN_BUFFERED) {
-        (*new)->buffered = 1;
-        (*new)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
-        (*new)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
-    }
-    /* Need the mutex to handled buffered and O_APPEND style file i/o */
-    if ((*new)->buffered || (*new)->append) {
-        rv = apr_thread_mutex_create(&(*new)->mutex, 
-                                     APR_THREAD_MUTEX_DEFAULT, pool);
-        if (rv) {
-            if (file_cleanup(*new) == APR_SUCCESS) {
-                apr_pool_cleanup_kill(pool, *new, file_cleanup);
-            }
-            return rv;
-        }
-    }
-
-#if APR_HAS_UNICODE_FS
-    if ((apr_os_level >= APR_WIN_2000) && ((*new)->flags & APR_FOPEN_SPARSE)) {
-        if ((rv = make_sparse_file(*new)) != APR_SUCCESS)
-            /* The great mystery; do we close the file and return an error?
-             * Do we add a new APR_INCOMPLETE style error saying opened, but
-             * NOTSPARSE?  For now let's simply mark the file as not-sparse.
-             */
-            (*new)->flags &= ~APR_FOPEN_SPARSE;
-    }
-    else
-#endif
-        /* This feature is not supported on this platform. */
-        (*new)->flags &= ~APR_FOPEN_SPARSE;
-
-    /* Create a pollset with room for one descriptor. */
-    /* ### check return codes */
-    (void) apr_pollset_create(&(*new)->pollset, 1, pool, 0);
-
-    if (!(flag & APR_FOPEN_NOCLEANUP)) {
-        apr_pool_cleanup_register((*new)->pool, (void *)(*new), file_cleanup,
-                                  apr_pool_cleanup_null);
-    }
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
-{
-    apr_status_t stat;
-    if ((stat = file_cleanup(file)) == APR_SUCCESS) {
-        apr_pool_cleanup_kill(file->pool, file, file_cleanup);
-
-        if (file->mutex) {
-            apr_thread_mutex_destroy(file->mutex);
-        }
-
-        return APR_SUCCESS;
-    }
-    return stat;
-}
-
-APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        apr_wchar_t wpath[APR_PATH_MAX];
-        apr_status_t rv;
-        if ((rv = utf8_to_unicode_path(wpath, sizeof(wpath) 
-                                            / sizeof(apr_wchar_t), path))) {
-            return rv;
-        }
-        if (DeleteFileW(wpath))
-            return APR_SUCCESS;
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-        if (DeleteFile(path))
-            return APR_SUCCESS;
-#endif
-    return apr_get_os_error();
-}
-
-APR_DECLARE(apr_status_t) apr_file_rename(const char *frompath,
-                                          const char *topath,
-                                          apr_pool_t *pool)
-{
-    IF_WIN_OS_IS_UNICODE
-    {
-#if APR_HAS_UNICODE_FS
-        apr_wchar_t wfrompath[APR_PATH_MAX], wtopath[APR_PATH_MAX];
-        apr_status_t rv;
-        if ((rv = utf8_to_unicode_path(wfrompath,
-                                       sizeof(wfrompath) / sizeof(apr_wchar_t),
-                                       frompath))) {
-            return rv;
-        }
-        if ((rv = utf8_to_unicode_path(wtopath,
-                                       sizeof(wtopath) / sizeof(apr_wchar_t),
-                                       topath))) {
-            return rv;
-        }
-#ifndef _WIN32_WCE
-        if (MoveFileExW(wfrompath, wtopath, MOVEFILE_REPLACE_EXISTING |
-                                            MOVEFILE_COPY_ALLOWED))
-#else
-        if (MoveFileW(wfrompath, wtopath))
-#endif
-            return APR_SUCCESS;
-#else
-        if (MoveFileEx(frompath, topath, MOVEFILE_REPLACE_EXISTING |
-                                         MOVEFILE_COPY_ALLOWED))
-            return APR_SUCCESS;
-#endif
-    }
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-    {
-        /* Windows 95 and 98 do not support MoveFileEx, so we'll use
-         * the old MoveFile function.  However, MoveFile requires that
-         * the new file not already exist...so we have to delete that
-         * file if it does.  Perhaps we should back up the to-be-deleted
-         * file in case something happens?
-         */
-        HANDLE handle = INVALID_HANDLE_VALUE;
-
-        if ((handle = CreateFile(topath, GENERIC_WRITE, 0, 0,  
-            OPEN_EXISTING, 0, 0 )) != INVALID_HANDLE_VALUE )
-        {
-            CloseHandle(handle);
-            if (!DeleteFile(topath))
-                return apr_get_os_error();
-        }
-        if (MoveFile(frompath, topath))
-            return APR_SUCCESS;
-    }        
-#endif
-    return apr_get_os_error();
-}
-
-APR_DECLARE(apr_status_t) apr_file_link(const char *from_path, 
-                                           const char *to_path)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        apr_wchar_t wfrom_path[APR_PATH_MAX];
-        apr_wchar_t wto_path[APR_PATH_MAX];
-
-        if ((rv = utf8_to_unicode_path(wfrom_path,
-                                       sizeof(wfrom_path) / sizeof(apr_wchar_t),
-                                       from_path)))
-            return rv;
-        if ((rv = utf8_to_unicode_path(wto_path,
-                                       sizeof(wto_path) / sizeof(apr_wchar_t),
-                                       to_path)))
-            return rv;
-
-        if (!CreateHardLinkW(wto_path, wfrom_path, NULL))
-                return apr_get_os_error();
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI {
-        if (!CreateHardLinkA(to_path, from_path, NULL))
-                return apr_get_os_error();
-    }
-#endif
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile,
-                                          apr_file_t *file)
-{
-    *thefile = file->filehand;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file,
-                                          apr_os_file_t *thefile,
-                                          apr_int32_t flags,
-                                          apr_pool_t *pool)
-{
-    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
-    (*file)->pool = pool;
-    (*file)->filehand = *thefile;
-    (*file)->ungetchar = -1; /* no char avail */
-    (*file)->timeout = -1;
-    (*file)->flags = flags;
-
-    if (flags & APR_FOPEN_APPEND) {
-        (*file)->append = 1;
-    }
-    if (flags & APR_FOPEN_BUFFERED) {
-        (*file)->buffered = 1;
-        (*file)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
-        (*file)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
-    }
-
-    if ((*file)->append || (*file)->buffered) {
-        apr_status_t rv;
-        rv = apr_thread_mutex_create(&(*file)->mutex, 
-                                     APR_THREAD_MUTEX_DEFAULT, pool);
-        if (rv) {
-            if (file_cleanup(*file) == APR_SUCCESS) {
-                apr_pool_cleanup_kill(pool, *file, file_cleanup);
-            }
-            return rv;
-        }
-    }
-
-    /* Create a pollset with room for one descriptor. */
-    /* ### check return codes */
-    (void) apr_pollset_create(&(*file)->pollset, 1, pool, 0);
-
-    /* Should we be testing if thefile is a handle to 
-     * a PIPE and set up the mechanics appropriately?
-     *
-     *  (*file)->pipe;
-     */
-    return APR_SUCCESS;
-}    
-
-APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
-{
-    if (fptr->eof_hit == 1) {
-        return APR_EOF;
-    }
-    return APR_SUCCESS;
-}   
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile, 
-                                                     apr_int32_t flags, 
-                                                     apr_pool_t *pool)
-{
-#ifdef _WIN32_WCE
-    return APR_ENOTIMPL;
-#else
-    apr_os_file_t file_handle;
-
-    apr_set_os_error(APR_SUCCESS);
-    file_handle = GetStdHandle(STD_ERROR_HANDLE);
-    if (!file_handle)
-        file_handle = INVALID_HANDLE_VALUE;
-
-    return apr_os_file_put(thefile, &file_handle,
-                           flags | APR_FOPEN_WRITE | APR_STDERR_FLAG, pool);
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile, 
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool)
-{
-#ifdef _WIN32_WCE
-    return APR_ENOTIMPL;
-#else
-    apr_os_file_t file_handle;
-
-    apr_set_os_error(APR_SUCCESS);
-    file_handle = GetStdHandle(STD_OUTPUT_HANDLE);
-    if (!file_handle)
-        file_handle = INVALID_HANDLE_VALUE;
-
-    return apr_os_file_put(thefile, &file_handle,
-                           flags | APR_FOPEN_WRITE | APR_STDOUT_FLAG, pool);
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile, 
-                                                    apr_int32_t flags,
-                                                    apr_pool_t *pool)
-{
-#ifdef _WIN32_WCE
-    return APR_ENOTIMPL;
-#else
-    apr_os_file_t file_handle;
-
-    apr_set_os_error(APR_SUCCESS);
-    file_handle = GetStdHandle(STD_INPUT_HANDLE);
-    if (!file_handle)
-        file_handle = INVALID_HANDLE_VALUE;
-
-    return apr_os_file_put(thefile, &file_handle,
-                           flags | APR_FOPEN_READ | APR_STDIN_FLAG, pool);
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool)
-{
-    return apr_file_open_flags_stderr(thefile, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool)
-{
-    return apr_file_open_flags_stdout(thefile, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool)
-{
-    return apr_file_open_flags_stdin(thefile, 0, pool);
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(file);
-
-APR_IMPLEMENT_INHERIT_SET(file, flags, pool, file_cleanup)
- 
-APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, file_cleanup)

Copied: vendor/apache/apr/1.5.2/file_io/win32/open.c (from rev 9273, vendor/apache/apr/dist/file_io/win32/open.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/win32/open.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/win32/open.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,755 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_private.h"
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_general.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+#include "apr_thread_mutex.h"
+#if APR_HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <winbase.h>
+#include <string.h>
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#include "apr_arch_misc.h"
+#include "apr_arch_inherit.h"
+#include <io.h>
+#include <winioctl.h>
+
+#if APR_HAS_UNICODE_FS
+apr_status_t utf8_to_unicode_path(apr_wchar_t* retstr, apr_size_t retlen, 
+                                  const char* srcstr)
+{
+    /* TODO: The computations could preconvert the string to determine
+     * the true size of the retstr, but that's a memory over speed
+     * tradeoff that isn't appropriate this early in development.
+     *
+     * Allocate the maximum string length based on leading 4 
+     * characters of \\?\ (allowing nearly unlimited path lengths) 
+     * plus the trailing null, then transform /'s into \\'s since
+     * the \\?\ form doesn't allow '/' path seperators.
+     *
+     * Note that the \\?\ form only works for local drive paths, and
+     * \\?\UNC\ is needed UNC paths.
+     */
+    apr_size_t srcremains = strlen(srcstr) + 1;
+    apr_wchar_t *t = retstr;
+    apr_status_t rv;
+
+    /* This is correct, we don't twist the filename if it is will
+     * definitely be shorter than 248 characters.  It merits some 
+     * performance testing to see if this has any effect, but there
+     * seem to be applications that get confused by the resulting
+     * Unicode \\?\ style file names, especially if they use argv[0]
+     * or call the Win32 API functions such as GetModuleName, etc.
+     * Not every application is prepared to handle such names.
+     * 
+     * Note also this is shorter than MAX_PATH, as directory paths 
+     * are actually limited to 248 characters. 
+     *
+     * Note that a utf-8 name can never result in more wide chars
+     * than the original number of utf-8 narrow chars.
+     */
+    if (srcremains > 248) {
+        if (srcstr[1] == ':' && (srcstr[2] == '/' || srcstr[2] == '\\')) {
+            wcscpy (retstr, L"\\\\?\\");
+            retlen -= 4;
+            t += 4;
+        }
+        else if ((srcstr[0] == '/' || srcstr[0] == '\\')
+              && (srcstr[1] == '/' || srcstr[1] == '\\')
+              && (srcstr[2] != '?')) {
+            /* Skip the slashes */
+            srcstr += 2;
+            srcremains -= 2;
+            wcscpy (retstr, L"\\\\?\\UNC\\");
+            retlen -= 8;
+            t += 8;
+        }
+    }
+
+    if ((rv = apr_conv_utf8_to_ucs2(srcstr, &srcremains, t, &retlen))) {
+        return (rv == APR_INCOMPLETE) ? APR_EINVAL : rv;
+    }
+    if (srcremains) {
+        return APR_ENAMETOOLONG;
+    }
+    for (; *t; ++t)
+        if (*t == L'/')
+            *t = L'\\';
+    return APR_SUCCESS;
+}
+
+apr_status_t unicode_to_utf8_path(char* retstr, apr_size_t retlen,
+                                  const apr_wchar_t* srcstr)
+{
+    /* Skip the leading 4 characters if the path begins \\?\, or substitute
+     * // for the \\?\UNC\ path prefix, allocating the maximum string
+     * length based on the remaining string, plus the trailing null.
+     * then transform \\'s back into /'s since the \\?\ form never
+     * allows '/' path seperators, and APR always uses '/'s.
+     */
+    apr_size_t srcremains = wcslen(srcstr) + 1;
+    apr_status_t rv;
+    char *t = retstr;
+    if (srcstr[0] == L'\\' && srcstr[1] == L'\\' && 
+        srcstr[2] == L'?'  && srcstr[3] == L'\\') {
+        if (srcstr[4] == L'U' && srcstr[5] == L'N' && 
+            srcstr[6] == L'C' && srcstr[7] == L'\\') {
+            srcremains -= 8;
+            srcstr += 8;
+            retstr[0] = '\\';
+            retstr[1] = '\\';
+            retlen -= 2;
+            t += 2;
+        }
+        else {
+            srcremains -= 4;
+            srcstr += 4;
+        }
+    }
+        
+    if ((rv = apr_conv_ucs2_to_utf8(srcstr, &srcremains, t, &retlen))) {
+        return rv;
+    }
+    if (srcremains) {
+        return APR_ENAMETOOLONG;
+    }
+    return APR_SUCCESS;
+}
+#endif
+
+void *res_name_from_filename(const char *file, int global, apr_pool_t *pool)
+{
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        apr_wchar_t *wpre, *wfile, *ch;
+        apr_size_t n = strlen(file) + 1;
+        apr_size_t r, d;
+
+        if (apr_os_level >= APR_WIN_2000) {
+            if (global)
+                wpre = L"Global\\";
+            else
+                wpre = L"Local\\";
+        }
+        else
+            wpre = L"";
+        r = wcslen(wpre);
+
+        if (n > 256 - r) {
+            file += n - 256 - r;
+            n = 256;
+            /* skip utf8 continuation bytes */
+            while ((*file & 0xC0) == 0x80) {
+                ++file;
+                --n;
+            }
+        }
+        wfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t));
+        wcscpy(wfile, wpre);
+        d = n;
+        if (apr_conv_utf8_to_ucs2(file, &n, wfile + r, &d)) {
+            return NULL;
+        }
+        for (ch = wfile + r; *ch; ++ch) {
+            if (*ch == ':' || *ch == '/' || *ch == '\\')
+                *ch = '_';
+        }
+        return wfile;
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+    {
+        char *nfile, *ch;
+        apr_size_t n = strlen(file) + 1;
+
+#if !APR_HAS_UNICODE_FS
+        apr_size_t r, d;
+        char *pre;
+
+        if (apr_os_level >= APR_WIN_2000) {
+            if (global)
+                pre = "Global\\";
+            else
+                pre = "Local\\";
+        }
+        else
+            pre = "";
+        r = strlen(pre);
+
+        if (n > 256 - r) {
+            file += n - 256 - r;
+            n = 256;
+        }
+        nfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t));
+        memcpy(nfile, pre, r);
+        memcpy(nfile + r, file, n);
+#else
+        const apr_size_t r = 0;
+        if (n > 256) {
+            file += n - 256;
+            n = 256;
+        }
+        nfile = apr_pmemdup(pool, file, n);
+#endif
+        for (ch = nfile + r; *ch; ++ch) {
+            if (*ch == ':' || *ch == '/' || *ch == '\\')
+                *ch = '_';
+        }
+        return nfile;
+    }
+#endif
+}
+
+#if APR_HAS_UNICODE_FS
+static apr_status_t make_sparse_file(apr_file_t *file)
+{
+    BY_HANDLE_FILE_INFORMATION info;
+    apr_status_t rv;
+    DWORD bytesread = 0;
+    DWORD res;
+
+    /* test */
+
+    if (GetFileInformationByHandle(file->filehand, &info)
+            && (info.dwFileAttributes & FILE_ATTRIBUTE_SPARSE_FILE))
+        return APR_SUCCESS;
+
+    if (file->pOverlapped) {
+        file->pOverlapped->Offset     = 0;
+        file->pOverlapped->OffsetHigh = 0;
+    }
+
+    if (DeviceIoControl(file->filehand, FSCTL_SET_SPARSE, NULL, 0, NULL, 0,
+                        &bytesread, file->pOverlapped)) {
+        rv = APR_SUCCESS;
+    }
+    else 
+    {
+        rv = apr_get_os_error();
+
+        if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING))
+        {
+            do {
+                res = WaitForSingleObject(file->pOverlapped->hEvent, 
+                                          (file->timeout > 0)
+                                            ? (DWORD)(file->timeout/1000)
+                                            : ((file->timeout == -1) 
+                                                 ? INFINITE : 0));
+            } while (res == WAIT_ABANDONED);
+
+            if (res != WAIT_OBJECT_0) {
+                CancelIo(file->filehand);
+            }
+
+            if (GetOverlappedResult(file->filehand, file->pOverlapped, 
+                                    &bytesread, TRUE))
+                rv = APR_SUCCESS;
+            else
+                rv = apr_get_os_error();
+        }
+    }
+    return rv;
+}
+#endif
+
+apr_status_t file_cleanup(void *thefile)
+{
+    apr_file_t *file = thefile;
+    apr_status_t flush_rv = APR_SUCCESS;
+
+    if (file->filehand != INVALID_HANDLE_VALUE) {
+
+        if (file->buffered) {
+            /* XXX: flush here is not mutex protected */
+            flush_rv = apr_file_flush((apr_file_t *)thefile);
+        }
+
+        /* In order to avoid later segfaults with handle 'reuse',
+         * we must protect against the case that a dup2'ed handle
+         * is being closed, and invalidate the corresponding StdHandle 
+         * We also tell msvcrt when stdhandles are closed.
+         */
+        if (file->flags & APR_STD_FLAGS)
+        {
+            if ((file->flags & APR_STD_FLAGS) == APR_STDERR_FLAG) {
+                _close(2);
+                SetStdHandle(STD_ERROR_HANDLE, INVALID_HANDLE_VALUE);
+            }
+            else if ((file->flags & APR_STD_FLAGS) == APR_STDOUT_FLAG) {
+                _close(1);
+                SetStdHandle(STD_OUTPUT_HANDLE, INVALID_HANDLE_VALUE);
+            }
+            else if ((file->flags & APR_STD_FLAGS) == APR_STDIN_FLAG) {
+                _close(0);
+                SetStdHandle(STD_INPUT_HANDLE, INVALID_HANDLE_VALUE);
+            }
+        }
+        else
+            CloseHandle(file->filehand);
+
+        file->filehand = INVALID_HANDLE_VALUE;
+    }
+    if (file->pOverlapped && file->pOverlapped->hEvent) {
+        CloseHandle(file->pOverlapped->hEvent);
+        file->pOverlapped = NULL;
+    }
+    return flush_rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname,
+                                   apr_int32_t flag, apr_fileperms_t perm,
+                                   apr_pool_t *pool)
+{
+    HANDLE handle = INVALID_HANDLE_VALUE;
+    DWORD oflags = 0;
+    DWORD createflags = 0;
+    DWORD attributes = 0;
+    DWORD sharemode = FILE_SHARE_READ | FILE_SHARE_WRITE;
+    apr_status_t rv;
+
+    if (flag & APR_FOPEN_NONBLOCK) {
+        return APR_ENOTIMPL;
+    }
+    if (flag & APR_FOPEN_READ) {
+        oflags |= GENERIC_READ;
+    }
+    if (flag & APR_FOPEN_WRITE) {
+        oflags |= GENERIC_WRITE;
+    }
+    if (flag & APR_WRITEATTRS) {
+        oflags |= FILE_WRITE_ATTRIBUTES;
+    }
+
+    if (apr_os_level >= APR_WIN_NT) 
+        sharemode |= FILE_SHARE_DELETE;
+
+    if (flag & APR_FOPEN_CREATE) {
+        if (flag & APR_FOPEN_EXCL) {
+            /* only create new if file does not already exist */
+            createflags = CREATE_NEW;
+        } else if (flag & APR_FOPEN_TRUNCATE) {
+            /* truncate existing file or create new */
+            createflags = CREATE_ALWAYS;
+        } else {
+            /* open existing but create if necessary */
+            createflags = OPEN_ALWAYS;
+        }
+    } else if (flag & APR_FOPEN_TRUNCATE) {
+        /* only truncate if file already exists */
+        createflags = TRUNCATE_EXISTING;
+    } else {
+        /* only open if file already exists */
+        createflags = OPEN_EXISTING;
+    }
+
+    if ((flag & APR_FOPEN_EXCL) && !(flag & APR_FOPEN_CREATE)) {
+        return APR_EACCES;
+    }   
+    
+    if (flag & APR_FOPEN_DELONCLOSE) {
+        attributes |= FILE_FLAG_DELETE_ON_CLOSE;
+    }
+
+    if (flag & APR_OPENLINK) {
+       attributes |= FILE_FLAG_OPEN_REPARSE_POINT;
+    }
+
+    /* Without READ or WRITE, we fail unless apr called apr_file_open
+     * internally with the private APR_OPENINFO flag.
+     *
+     * With the APR_OPENINFO flag on NT, use the option flag
+     * FILE_FLAG_BACKUP_SEMANTICS to allow us to open directories.
+     * See the static resolve_ident() fn in file_io/win32/filestat.c
+     */
+    if (!(flag & (APR_FOPEN_READ | APR_FOPEN_WRITE))) {
+        if (flag & APR_OPENINFO) {
+            if (apr_os_level >= APR_WIN_NT) {
+                attributes |= FILE_FLAG_BACKUP_SEMANTICS;
+            }
+        }
+        else {
+            return APR_EACCES;
+        }
+        if (flag & APR_READCONTROL)
+            oflags |= READ_CONTROL;
+    }
+
+    if (flag & APR_FOPEN_XTHREAD) {
+        /* This win32 specific feature is required 
+         * to allow multiple threads to work with the file.
+         */
+        attributes |= FILE_FLAG_OVERLAPPED;
+    }
+
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        apr_wchar_t wfname[APR_PATH_MAX];
+
+        if (flag & APR_FOPEN_SENDFILE_ENABLED) {
+            /* This feature is required to enable sendfile operations
+             * against the file on Win32. Also implies APR_FOPEN_XTHREAD.
+             */
+            flag |= APR_FOPEN_XTHREAD;
+            attributes |= FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_OVERLAPPED;
+        }
+
+        if ((rv = utf8_to_unicode_path(wfname, sizeof(wfname) 
+                                             / sizeof(apr_wchar_t), fname)))
+            return rv;
+        handle = CreateFileW(wfname, oflags, sharemode,
+                             NULL, createflags, attributes, 0);
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI {
+        handle = CreateFileA(fname, oflags, sharemode,
+                             NULL, createflags, attributes, 0);
+        /* This feature is not supported on this platform. */
+        flag &= ~APR_FOPEN_SENDFILE_ENABLED;
+    }
+#endif
+    if (handle == INVALID_HANDLE_VALUE) {
+        return apr_get_os_error();
+    }
+
+    (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
+    (*new)->pool = pool;
+    (*new)->filehand = handle;
+    (*new)->fname = apr_pstrdup(pool, fname);
+    (*new)->flags = flag;
+    (*new)->timeout = -1;
+    (*new)->ungetchar = -1;
+
+    if (flag & APR_FOPEN_APPEND) {
+        (*new)->append = 1;
+        SetFilePointer((*new)->filehand, 0, NULL, FILE_END);
+    }
+    if (flag & APR_FOPEN_BUFFERED) {
+        (*new)->buffered = 1;
+        (*new)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
+        (*new)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
+    }
+    /* Need the mutex to handled buffered and O_APPEND style file i/o */
+    if ((*new)->buffered || (*new)->append) {
+        rv = apr_thread_mutex_create(&(*new)->mutex, 
+                                     APR_THREAD_MUTEX_DEFAULT, pool);
+        if (rv) {
+            if (file_cleanup(*new) == APR_SUCCESS) {
+                apr_pool_cleanup_kill(pool, *new, file_cleanup);
+            }
+            return rv;
+        }
+    }
+
+#if APR_HAS_UNICODE_FS
+    if ((apr_os_level >= APR_WIN_2000) && ((*new)->flags & APR_FOPEN_SPARSE)) {
+        if ((rv = make_sparse_file(*new)) != APR_SUCCESS)
+            /* The great mystery; do we close the file and return an error?
+             * Do we add a new APR_INCOMPLETE style error saying opened, but
+             * NOTSPARSE?  For now let's simply mark the file as not-sparse.
+             */
+            (*new)->flags &= ~APR_FOPEN_SPARSE;
+    }
+    else
+#endif
+        /* This feature is not supported on this platform. */
+        (*new)->flags &= ~APR_FOPEN_SPARSE;
+
+#if APR_FILES_AS_SOCKETS
+    /* Create a pollset with room for one descriptor. */
+    /* ### check return codes */
+    (void) apr_pollset_create(&(*new)->pollset, 1, pool, 0);
+#endif
+    if (!(flag & APR_FOPEN_NOCLEANUP)) {
+        apr_pool_cleanup_register((*new)->pool, (void *)(*new), file_cleanup,
+                                  apr_pool_cleanup_null);
+    }
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
+{
+    apr_status_t stat;
+    if ((stat = file_cleanup(file)) == APR_SUCCESS) {
+        apr_pool_cleanup_kill(file->pool, file, file_cleanup);
+
+        if (file->mutex) {
+            apr_thread_mutex_destroy(file->mutex);
+        }
+
+        return APR_SUCCESS;
+    }
+    return stat;
+}
+
+APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
+{
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        apr_wchar_t wpath[APR_PATH_MAX];
+        apr_status_t rv;
+        if ((rv = utf8_to_unicode_path(wpath, sizeof(wpath) 
+                                            / sizeof(apr_wchar_t), path))) {
+            return rv;
+        }
+        if (DeleteFileW(wpath))
+            return APR_SUCCESS;
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+        if (DeleteFile(path))
+            return APR_SUCCESS;
+#endif
+    return apr_get_os_error();
+}
+
+APR_DECLARE(apr_status_t) apr_file_rename(const char *frompath,
+                                          const char *topath,
+                                          apr_pool_t *pool)
+{
+    IF_WIN_OS_IS_UNICODE
+    {
+#if APR_HAS_UNICODE_FS
+        apr_wchar_t wfrompath[APR_PATH_MAX], wtopath[APR_PATH_MAX];
+        apr_status_t rv;
+        if ((rv = utf8_to_unicode_path(wfrompath,
+                                       sizeof(wfrompath) / sizeof(apr_wchar_t),
+                                       frompath))) {
+            return rv;
+        }
+        if ((rv = utf8_to_unicode_path(wtopath,
+                                       sizeof(wtopath) / sizeof(apr_wchar_t),
+                                       topath))) {
+            return rv;
+        }
+#ifndef _WIN32_WCE
+        if (MoveFileExW(wfrompath, wtopath, MOVEFILE_REPLACE_EXISTING |
+                                            MOVEFILE_COPY_ALLOWED))
+#else
+        if (MoveFileW(wfrompath, wtopath))
+#endif
+            return APR_SUCCESS;
+#else
+        if (MoveFileEx(frompath, topath, MOVEFILE_REPLACE_EXISTING |
+                                         MOVEFILE_COPY_ALLOWED))
+            return APR_SUCCESS;
+#endif
+    }
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+    {
+        /* Windows 95 and 98 do not support MoveFileEx, so we'll use
+         * the old MoveFile function.  However, MoveFile requires that
+         * the new file not already exist...so we have to delete that
+         * file if it does.  Perhaps we should back up the to-be-deleted
+         * file in case something happens?
+         */
+        HANDLE handle = INVALID_HANDLE_VALUE;
+
+        if ((handle = CreateFile(topath, GENERIC_WRITE, 0, 0,  
+            OPEN_EXISTING, 0, 0 )) != INVALID_HANDLE_VALUE )
+        {
+            CloseHandle(handle);
+            if (!DeleteFile(topath))
+                return apr_get_os_error();
+        }
+        if (MoveFile(frompath, topath))
+            return APR_SUCCESS;
+    }        
+#endif
+    return apr_get_os_error();
+}
+
+APR_DECLARE(apr_status_t) apr_file_link(const char *from_path, 
+                                           const char *to_path)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        apr_wchar_t wfrom_path[APR_PATH_MAX];
+        apr_wchar_t wto_path[APR_PATH_MAX];
+
+        if ((rv = utf8_to_unicode_path(wfrom_path,
+                                       sizeof(wfrom_path) / sizeof(apr_wchar_t),
+                                       from_path)))
+            return rv;
+        if ((rv = utf8_to_unicode_path(wto_path,
+                                       sizeof(wto_path) / sizeof(apr_wchar_t),
+                                       to_path)))
+            return rv;
+
+        if (!CreateHardLinkW(wto_path, wfrom_path, NULL))
+                return apr_get_os_error();
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI {
+        if (!CreateHardLinkA(to_path, from_path, NULL))
+                return apr_get_os_error();
+    }
+#endif
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile,
+                                          apr_file_t *file)
+{
+    *thefile = file->filehand;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file,
+                                          apr_os_file_t *thefile,
+                                          apr_int32_t flags,
+                                          apr_pool_t *pool)
+{
+    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
+    (*file)->pool = pool;
+    (*file)->filehand = *thefile;
+    (*file)->ungetchar = -1; /* no char avail */
+    (*file)->timeout = -1;
+    (*file)->flags = flags;
+
+    if (flags & APR_FOPEN_APPEND) {
+        (*file)->append = 1;
+    }
+    if (flags & APR_FOPEN_BUFFERED) {
+        (*file)->buffered = 1;
+        (*file)->buffer = apr_palloc(pool, APR_FILE_DEFAULT_BUFSIZE);
+        (*file)->bufsize = APR_FILE_DEFAULT_BUFSIZE;
+    }
+
+    if ((*file)->append || (*file)->buffered) {
+        apr_status_t rv;
+        rv = apr_thread_mutex_create(&(*file)->mutex, 
+                                     APR_THREAD_MUTEX_DEFAULT, pool);
+        if (rv) {
+            return rv;
+        }
+    }
+
+#if APR_FILES_AS_SOCKETS
+    /* Create a pollset with room for one descriptor. */
+    /* ### check return codes */
+    (void) apr_pollset_create(&(*file)->pollset, 1, pool, 0);
+#endif
+    /* Should we be testing if thefile is a handle to 
+     * a PIPE and set up the mechanics appropriately?
+     *
+     *  (*file)->pipe;
+     */
+    return APR_SUCCESS;
+}    
+
+APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
+{
+    if (fptr->eof_hit == 1) {
+        return APR_EOF;
+    }
+    return APR_SUCCESS;
+}   
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile, 
+                                                     apr_int32_t flags, 
+                                                     apr_pool_t *pool)
+{
+#ifdef _WIN32_WCE
+    return APR_ENOTIMPL;
+#else
+    apr_os_file_t file_handle;
+
+    apr_set_os_error(APR_SUCCESS);
+    file_handle = GetStdHandle(STD_ERROR_HANDLE);
+    if (!file_handle)
+        file_handle = INVALID_HANDLE_VALUE;
+
+    return apr_os_file_put(thefile, &file_handle,
+                           flags | APR_FOPEN_WRITE | APR_STDERR_FLAG, pool);
+#endif
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile, 
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool)
+{
+#ifdef _WIN32_WCE
+    return APR_ENOTIMPL;
+#else
+    apr_os_file_t file_handle;
+
+    apr_set_os_error(APR_SUCCESS);
+    file_handle = GetStdHandle(STD_OUTPUT_HANDLE);
+    if (!file_handle)
+        file_handle = INVALID_HANDLE_VALUE;
+
+    return apr_os_file_put(thefile, &file_handle,
+                           flags | APR_FOPEN_WRITE | APR_STDOUT_FLAG, pool);
+#endif
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile, 
+                                                    apr_int32_t flags,
+                                                    apr_pool_t *pool)
+{
+#ifdef _WIN32_WCE
+    return APR_ENOTIMPL;
+#else
+    apr_os_file_t file_handle;
+
+    apr_set_os_error(APR_SUCCESS);
+    file_handle = GetStdHandle(STD_INPUT_HANDLE);
+    if (!file_handle)
+        file_handle = INVALID_HANDLE_VALUE;
+
+    return apr_os_file_put(thefile, &file_handle,
+                           flags | APR_FOPEN_READ | APR_STDIN_FLAG, pool);
+#endif
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool)
+{
+    return apr_file_open_flags_stderr(thefile, 0, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool)
+{
+    return apr_file_open_flags_stdout(thefile, 0, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool)
+{
+    return apr_file_open_flags_stdin(thefile, 0, pool);
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(file);
+
+APR_IMPLEMENT_INHERIT_SET(file, flags, pool, file_cleanup)
+ 
+APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, file_cleanup)

Deleted: vendor/apache/apr/1.5.2/file_io/win32/pipe.c
===================================================================
--- vendor/apache/apr/dist/file_io/win32/pipe.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/win32/pipe.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,441 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include <string.h>
-#include <stdio.h>
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if APR_HAVE_PROCESS_H
-#include <process.h>            /* for getpid() on Win32 */
-#endif
-#include "apr_arch_misc.h"
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe,
-                                            apr_interval_time_t timeout)
-{
-    /* Always OK to unset timeouts */
-    if (timeout == -1) {
-        thepipe->timeout = timeout;
-        return APR_SUCCESS;
-    }
-    if (!thepipe->pipe) {
-        return APR_ENOTIMPL;
-    }
-    if (timeout && !(thepipe->pOverlapped)) {
-        /* Cannot be nonzero if a pipe was opened blocking */
-        return APR_EINVAL;
-    }
-    thepipe->timeout = timeout;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe,
-                                           apr_interval_time_t *timeout)
-{
-    /* Always OK to get the timeout (even if it's unset ... -1) */
-    *timeout = thepipe->timeout;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in,
-                                               apr_file_t **out,
-                                               apr_pool_t *p)
-{
-    /* Unix creates full blocking pipes. */
-    return apr_file_pipe_create_ex(in, out, APR_FULL_BLOCK, p);
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in,
-                                                  apr_file_t **out,
-                                                  apr_int32_t blocking,
-                                                  apr_pool_t *p)
-{
-#ifdef _WIN32_WCE
-    return APR_ENOTIMPL;
-#else
-    SECURITY_ATTRIBUTES sa;
-    static unsigned long id = 0;
-    DWORD dwPipeMode;
-    DWORD dwOpenMode;
-    char name[50];
-
-    sa.nLength = sizeof(sa);
-
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-        sa.bInheritHandle = FALSE;
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-        sa.bInheritHandle = TRUE;
-#endif
-    sa.lpSecurityDescriptor = NULL;
-
-    (*in) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
-    (*in)->pool = p;
-    (*in)->fname = NULL;
-    (*in)->pipe = 1;
-    (*in)->timeout = -1;
-    (*in)->ungetchar = -1;
-    (*in)->eof_hit = 0;
-    (*in)->filePtr = 0;
-    (*in)->bufpos = 0;
-    (*in)->dataRead = 0;
-    (*in)->direction = 0;
-    (*in)->pOverlapped = NULL;
-    (void) apr_pollset_create(&(*in)->pollset, 1, p, 0);
-
-    (*out) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
-    (*out)->pool = p;
-    (*out)->fname = NULL;
-    (*out)->pipe = 1;
-    (*out)->timeout = -1;
-    (*out)->ungetchar = -1;
-    (*out)->eof_hit = 0;
-    (*out)->filePtr = 0;
-    (*out)->bufpos = 0;
-    (*out)->dataRead = 0;
-    (*out)->direction = 0;
-    (*out)->pOverlapped = NULL;
-    (void) apr_pollset_create(&(*out)->pollset, 1, p, 0);
-
-    if (apr_os_level >= APR_WIN_NT) {
-        /* Create the read end of the pipe */
-        dwOpenMode = PIPE_ACCESS_INBOUND;
-        if (blocking == APR_WRITE_BLOCK /* READ_NONBLOCK */
-               || blocking == APR_FULL_NONBLOCK) {
-            dwOpenMode |= FILE_FLAG_OVERLAPPED;
-            (*in)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED));
-            (*in)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
-            (*in)->timeout = 0;
-        }
-
-        dwPipeMode = 0;
-
-        sprintf(name, "\\\\.\\pipe\\apr-pipe-%u.%lu", getpid(), id++);
-
-        (*in)->filehand = CreateNamedPipe(name,
-                                          dwOpenMode,
-                                          dwPipeMode,
-                                          1,            /* nMaxInstances,   */
-                                          0,            /* nOutBufferSize,  */
-                                          65536,        /* nInBufferSize,   */
-                                          1,            /* nDefaultTimeOut, */
-                                          &sa);
-
-        /* Create the write end of the pipe */
-        dwOpenMode = FILE_ATTRIBUTE_NORMAL;
-        if (blocking == APR_READ_BLOCK /* WRITE_NONBLOCK */
-                || blocking == APR_FULL_NONBLOCK) {
-            dwOpenMode |= FILE_FLAG_OVERLAPPED;
-            (*out)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED));
-            (*out)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
-            (*out)->timeout = 0;
-        }
-
-        (*out)->filehand = CreateFile(name,
-                                      GENERIC_WRITE, /* access mode             */
-                                      0,             /* share mode              */
-                                      &sa,           /* Security attributes     */
-                                      OPEN_EXISTING, /* dwCreationDisposition   */
-                                      dwOpenMode,    /* Pipe attributes         */
-                                      NULL);         /* handle to template file */
-    }
-    else {
-        /* Pipes on Win9* are blocking. Live with it. */
-        if (!CreatePipe(&(*in)->filehand, &(*out)->filehand, &sa, 65536)) {
-            return apr_get_os_error();
-        }
-    }
-
-    apr_pool_cleanup_register((*in)->pool, (void *)(*in), file_cleanup,
-                        apr_pool_cleanup_null);
-    apr_pool_cleanup_register((*out)->pool, (void *)(*out), file_cleanup,
-                        apr_pool_cleanup_null);
-    return APR_SUCCESS;
-#endif /* _WIN32_WCE */
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename,
-                                                    apr_fileperms_t perm,
-                                                    apr_pool_t *pool)
-{
-    /* Not yet implemented, interface not suitable.
-     * Win32 requires the named pipe to be *opened* at the time it's
-     * created, and to do so, blocking or non blocking must be elected.
-     */
-    return APR_ENOTIMPL;
-}
-
-
-/* XXX: Problem; we need to choose between blocking and nonblocking based
- * on how *thefile was opened, and we don't have that information :-/
- * Hack; assume a blocking socket, since the most common use for the fn
- * would be to handle stdio-style or blocking pipes.  Win32 doesn't have
- * select() blocking for pipes anyways :(
- */
-APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
-                                             apr_os_file_t *thefile,
-                                             int register_cleanup,
-                                             apr_pool_t *pool)
-{
-    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
-    (*file)->pool = pool;
-    (*file)->pipe = 1;
-    (*file)->timeout = -1;
-    (*file)->ungetchar = -1;
-    (*file)->filehand = *thefile;
-    (void) apr_pollset_create(&(*file)->pollset, 1, pool, 0);
-
-    if (register_cleanup) {
-        apr_pool_cleanup_register(pool, *file, file_cleanup,
-                                  apr_pool_cleanup_null);
-    }
-
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
-                                          apr_os_file_t *thefile,
-                                          apr_pool_t *pool)
-{
-    return apr_os_pipe_put_ex(file, thefile, 0, pool);
-}
-
-static apr_status_t create_socket_pipe(SOCKET *rd, SOCKET *wr)
-{
-    static int id = 0;
-    FD_SET rs;
-    SOCKET ls;
-    struct timeval socktm;
-    struct sockaddr_in pa;
-    struct sockaddr_in la;
-    struct sockaddr_in ca;
-    int nrd;
-    apr_status_t rv = APR_SUCCESS;
-    int ll = sizeof(la);
-    int lc = sizeof(ca);
-    unsigned long bm = 1;
-    int uid[2];
-    int iid[2];
-
-    *rd = INVALID_SOCKET;
-    *wr = INVALID_SOCKET;
-
-    /* Create the unique socket identifier
-     * so that we know the connection originated
-     * from us.
-     */
-    uid[0] = getpid();
-    uid[1] = id++;
-    if ((ls = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
-        return apr_get_netos_error();
-    }
-
-    pa.sin_family = AF_INET;
-    pa.sin_port   = 0;
-    pa.sin_addr.s_addr = inet_addr("127.0.0.1");
-
-    if (bind(ls, (SOCKADDR *)&pa, sizeof(pa)) == SOCKET_ERROR) {
-        rv =  apr_get_netos_error();
-        goto cleanup;
-    }
-    if (getsockname(ls, (SOCKADDR *)&la, &ll) == SOCKET_ERROR) {
-        rv =  apr_get_netos_error();
-        goto cleanup;
-    }
-    if (listen(ls, 1) == SOCKET_ERROR) {
-        rv =  apr_get_netos_error();
-        goto cleanup;
-    }
-    if ((*wr = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
-        rv = apr_get_netos_error();
-        goto cleanup;
-    }
-    if (connect(*wr, (SOCKADDR *)&la, sizeof(la)) == SOCKET_ERROR) {
-        rv =  apr_get_netos_error();
-        goto cleanup;
-    }
-    if (send(*wr, (char *)uid, sizeof(uid), 0) != sizeof(uid)) {
-        if ((rv =  apr_get_netos_error()) == 0) {
-            rv = APR_EINVAL;
-        }
-        goto cleanup;
-    }
-    if (ioctlsocket(ls, FIONBIO, &bm) == SOCKET_ERROR) {
-        rv = apr_get_netos_error();
-        goto cleanup;
-    }
-    for (;;) {
-        int ns;
-        int nc = 0;
-        /* Listening socket is nonblocking by now.
-         * The accept should create the socket
-         * immediatelly because we are connected already.
-         * However on buys systems this can take a while
-         * until winsock gets a chance to handle the events.
-         */
-        FD_ZERO(&rs);
-        FD_SET(ls, &rs);
-
-        socktm.tv_sec  = 1;
-        socktm.tv_usec = 0;
-        if ((ns = select(0, &rs, NULL, NULL, &socktm)) == SOCKET_ERROR) {
-            /* Accept still not signaled */
-            Sleep(100);
-            continue;
-        }
-        if (ns == 0) {
-            /* No connections in the last second */
-            continue;
-        }
-        if ((*rd = accept(ls, (SOCKADDR *)&ca, &lc)) == INVALID_SOCKET) {
-            rv =  apr_get_netos_error();
-            goto cleanup;
-        }
-        /* Verify the connection by reading the send identification.
-         */
-        do {
-            if (nc++)
-                Sleep(1);
-            nrd = recv(*rd, (char *)iid, sizeof(iid), 0);
-            rv = nrd == SOCKET_ERROR ? apr_get_netos_error() : APR_SUCCESS;
-        } while (APR_STATUS_IS_EAGAIN(rv));
-
-        if (nrd == sizeof(iid)) {
-            if (memcmp(uid, iid, sizeof(uid)) == 0) {
-                /* Wow, we recived what we send.
-                 * Put read side of the pipe to the blocking
-                 * mode and return.
-                 */
-                bm = 0;
-                if (ioctlsocket(*rd, FIONBIO, &bm) == SOCKET_ERROR) {
-                    rv = apr_get_netos_error();
-                    goto cleanup;
-                }
-                break;
-            }
-        }
-        else if (nrd == SOCKET_ERROR) {
-            goto cleanup;
-        }
-        closesocket(*rd);
-    }
-    /* We don't need the listening socket any more */
-    closesocket(ls);
-    return 0;
-
-cleanup:
-    /* Don't leak resources */
-    if (*rd != INVALID_SOCKET)
-        closesocket(*rd);
-    if (*wr != INVALID_SOCKET)
-        closesocket(*wr);
-
-    *rd = INVALID_SOCKET;
-    *wr = INVALID_SOCKET;
-    closesocket(ls);
-    return rv;
-}
-
-static apr_status_t socket_pipe_cleanup(void *thefile)
-{
-    apr_file_t *file = thefile;
-    if (file->filehand != INVALID_HANDLE_VALUE) {
-        shutdown((SOCKET)file->filehand, SD_BOTH);
-        closesocket((SOCKET)file->filehand);
-        file->filehand = INVALID_HANDLE_VALUE;
-    }
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_file_socket_pipe_create(apr_file_t **in,
-                                         apr_file_t **out,
-                                         apr_pool_t *p)
-{
-    apr_status_t rv;
-    SOCKET rd;
-    SOCKET wr;
-
-    if ((rv = create_socket_pipe(&rd, &wr)) != APR_SUCCESS) {
-        return rv;
-    }
-    (*in) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
-    (*in)->pool = p;
-    (*in)->fname = NULL;
-    (*in)->pipe = 1;
-    (*in)->timeout = -1;
-    (*in)->ungetchar = -1;
-    (*in)->eof_hit = 0;
-    (*in)->filePtr = 0;
-    (*in)->bufpos = 0;
-    (*in)->dataRead = 0;
-    (*in)->direction = 0;
-    (*in)->pOverlapped = (OVERLAPPED*)apr_pcalloc(p, sizeof(OVERLAPPED));
-    (*in)->filehand = (HANDLE)rd;
-
-    (*out) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
-    (*out)->pool = p;
-    (*out)->fname = NULL;
-    (*out)->pipe = 1;
-    (*out)->timeout = -1;
-    (*out)->ungetchar = -1;
-    (*out)->eof_hit = 0;
-    (*out)->filePtr = 0;
-    (*out)->bufpos = 0;
-    (*out)->dataRead = 0;
-    (*out)->direction = 0;
-    (*out)->pOverlapped = (OVERLAPPED*)apr_pcalloc(p, sizeof(OVERLAPPED));
-    (*out)->filehand = (HANDLE)wr;
-
-    apr_pool_cleanup_register(p, (void *)(*in), socket_pipe_cleanup,
-                              apr_pool_cleanup_null);
-    apr_pool_cleanup_register(p, (void *)(*out), socket_pipe_cleanup,
-                              apr_pool_cleanup_null);
-
-    return rv;
-}
-
-apr_status_t apr_file_socket_pipe_close(apr_file_t *file)
-{
-    apr_status_t stat;
-    if (!file->pipe)
-        return apr_file_close(file);
-    if ((stat = socket_pipe_cleanup(file)) == APR_SUCCESS) {
-        apr_pool_cleanup_kill(file->pool, file, socket_pipe_cleanup);
-
-        if (file->mutex) {
-            apr_thread_mutex_destroy(file->mutex);
-        }
-
-        return APR_SUCCESS;
-    }
-    return stat;
-}
-

Copied: vendor/apache/apr/1.5.2/file_io/win32/pipe.c (from rev 9273, vendor/apache/apr/dist/file_io/win32/pipe.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/win32/pipe.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/win32/pipe.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,475 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_general.h"
+#include "apr_strings.h"
+#include "apr_escape.h"
+#if APR_HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <string.h>
+#include <stdio.h>
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if APR_HAVE_PROCESS_H
+#include <process.h>            /* for getpid() on Win32 */
+#endif
+#include "apr_arch_misc.h"
+
+APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe,
+                                            apr_interval_time_t timeout)
+{
+    /* Always OK to unset timeouts */
+    if (timeout == -1) {
+        thepipe->timeout = timeout;
+        return APR_SUCCESS;
+    }
+    if (!thepipe->pipe) {
+        return APR_ENOTIMPL;
+    }
+    if (timeout && !(thepipe->pOverlapped)) {
+        /* Cannot be nonzero if a pipe was opened blocking
+         */
+        return APR_EINVAL;
+    }
+    thepipe->timeout = timeout;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe,
+                                           apr_interval_time_t *timeout)
+{
+    /* Always OK to get the timeout (even if it's unset ... -1) */
+    *timeout = thepipe->timeout;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in,
+                                               apr_file_t **out,
+                                               apr_pool_t *p)
+{
+    /* Unix creates full blocking pipes. */
+    return apr_file_pipe_create_ex(in, out, APR_FULL_BLOCK, p);
+}
+
+APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in,
+                                                  apr_file_t **out,
+                                                  apr_int32_t blocking,
+                                                  apr_pool_t *p)
+{
+#ifdef _WIN32_WCE
+    return APR_ENOTIMPL;
+#else
+    SECURITY_ATTRIBUTES sa;
+    static unsigned long id = 0;
+    DWORD dwPipeMode;
+    DWORD dwOpenMode;
+
+    sa.nLength = sizeof(sa);
+
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+        sa.bInheritHandle = FALSE;
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+        sa.bInheritHandle = TRUE;
+#endif
+    sa.lpSecurityDescriptor = NULL;
+
+    (*in) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
+    (*in)->pool = p;
+    (*in)->fname = NULL;
+    (*in)->pipe = 1;
+    (*in)->timeout = -1;
+    (*in)->ungetchar = -1;
+    (*in)->eof_hit = 0;
+    (*in)->filePtr = 0;
+    (*in)->bufpos = 0;
+    (*in)->dataRead = 0;
+    (*in)->direction = 0;
+    (*in)->pOverlapped = NULL;
+#if APR_FILES_AS_SOCKETS
+    (void) apr_pollset_create(&(*in)->pollset, 1, p, 0);
+#endif
+    (*out) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
+    (*out)->pool = p;
+    (*out)->fname = NULL;
+    (*out)->pipe = 1;
+    (*out)->timeout = -1;
+    (*out)->ungetchar = -1;
+    (*out)->eof_hit = 0;
+    (*out)->filePtr = 0;
+    (*out)->bufpos = 0;
+    (*out)->dataRead = 0;
+    (*out)->direction = 0;
+    (*out)->pOverlapped = NULL;
+#if APR_FILES_AS_SOCKETS
+    (void) apr_pollset_create(&(*out)->pollset, 1, p, 0);
+#endif
+    if (apr_os_level >= APR_WIN_NT) {
+        char rand[8];
+        int pid = getpid();
+#define FMT_PIPE_NAME "\\\\.\\pipe\\apr-pipe-%x.%lx."
+        /*                                    ^   ^ ^
+         *                                  pid   | |
+         *                                        | |
+         *                                       id |
+         *                                          |
+         *                        hex-escaped rand[8] (16 bytes)
+         */
+        char name[sizeof FMT_PIPE_NAME + 2 * sizeof(pid)
+                                       + 2 * sizeof(id)
+                                       + 2 * sizeof(rand)];
+        apr_size_t pos;
+
+        /* Create the read end of the pipe */
+        dwOpenMode = PIPE_ACCESS_INBOUND;
+#ifdef FILE_FLAG_FIRST_PIPE_INSTANCE
+        dwOpenMode |= FILE_FLAG_FIRST_PIPE_INSTANCE;
+#endif
+        if (blocking == APR_WRITE_BLOCK /* READ_NONBLOCK */
+               || blocking == APR_FULL_NONBLOCK) {
+            dwOpenMode |= FILE_FLAG_OVERLAPPED;
+            (*in)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED));
+            (*in)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+            (*in)->timeout = 0;
+        }
+        dwPipeMode = 0;
+
+        apr_generate_random_bytes(rand, sizeof rand);
+        pos = apr_snprintf(name, sizeof name, FMT_PIPE_NAME, pid, id++);
+        apr_escape_hex(name + pos, rand, sizeof rand, 0, NULL);
+
+        (*in)->filehand = CreateNamedPipe(name,
+                                          dwOpenMode,
+                                          dwPipeMode,
+                                          1,            /* nMaxInstances,   */
+                                          0,            /* nOutBufferSize,  */
+                                          65536,        /* nInBufferSize,   */
+                                          1,            /* nDefaultTimeOut, */
+                                          &sa);
+        if ((*in)->filehand == INVALID_HANDLE_VALUE) {
+            apr_status_t rv = apr_get_os_error();
+            file_cleanup(*in);
+            return rv;
+        }
+
+        /* Create the write end of the pipe */
+        dwOpenMode = FILE_ATTRIBUTE_NORMAL;
+        if (blocking == APR_READ_BLOCK /* WRITE_NONBLOCK */
+                || blocking == APR_FULL_NONBLOCK) {
+            dwOpenMode |= FILE_FLAG_OVERLAPPED;
+            (*out)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED));
+            (*out)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+            (*out)->timeout = 0;
+        }
+
+        (*out)->filehand = CreateFile(name,
+                                      GENERIC_WRITE,   /* access mode             */
+                                      0,               /* share mode              */
+                                      &sa,             /* Security attributes     */
+                                      OPEN_EXISTING,   /* dwCreationDisposition   */
+                                      dwOpenMode,      /* Pipe attributes         */
+                                      NULL);           /* handle to template file */
+        if ((*out)->filehand == INVALID_HANDLE_VALUE) {
+            apr_status_t rv = apr_get_os_error();
+            file_cleanup(*out);
+            file_cleanup(*in);
+            return rv;
+        }
+    }
+    else {
+        /* Pipes on Win9* are blocking. Live with it. */
+        if (!CreatePipe(&(*in)->filehand, &(*out)->filehand, &sa, 65536)) {
+            return apr_get_os_error();
+        }
+    }
+
+    apr_pool_cleanup_register((*in)->pool, (void *)(*in), file_cleanup,
+                        apr_pool_cleanup_null);
+    apr_pool_cleanup_register((*out)->pool, (void *)(*out), file_cleanup,
+                        apr_pool_cleanup_null);
+    return APR_SUCCESS;
+#endif /* _WIN32_WCE */
+}
+
+
+APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename,
+                                                    apr_fileperms_t perm,
+                                                    apr_pool_t *pool)
+{
+    /* Not yet implemented, interface not suitable.
+     * Win32 requires the named pipe to be *opened* at the time it's
+     * created, and to do so, blocking or non blocking must be elected.
+     */
+    return APR_ENOTIMPL;
+}
+
+
+/* XXX: Problem; we need to choose between blocking and nonblocking based
+ * on how *thefile was opened, and we don't have that information :-/
+ * Hack; assume a blocking socket, since the most common use for the fn
+ * would be to handle stdio-style or blocking pipes.  Win32 doesn't have
+ * select() blocking for pipes anyways :(
+ */
+APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
+                                             apr_os_file_t *thefile,
+                                             int register_cleanup,
+                                             apr_pool_t *pool)
+{
+    (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
+    (*file)->pool = pool;
+    (*file)->pipe = 1;
+    (*file)->timeout = -1;
+    (*file)->ungetchar = -1;
+    (*file)->filehand = *thefile;
+#if APR_FILES_AS_SOCKETS
+    (void) apr_pollset_create(&(*file)->pollset, 1, pool, 0);
+#endif
+    if (register_cleanup) {
+        apr_pool_cleanup_register(pool, *file, file_cleanup,
+                                  apr_pool_cleanup_null);
+    }
+
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
+                                          apr_os_file_t *thefile,
+                                          apr_pool_t *pool)
+{
+    return apr_os_pipe_put_ex(file, thefile, 0, pool);
+}
+
+static apr_status_t create_socket_pipe(SOCKET *rd, SOCKET *wr)
+{
+    static int id = 0;
+    FD_SET rs;
+    SOCKET ls;
+    struct timeval socktm;
+    struct sockaddr_in pa;
+    struct sockaddr_in la;
+    struct sockaddr_in ca;
+    int nrd;
+    apr_status_t rv = APR_SUCCESS;
+    int ll = sizeof(la);
+    int lc = sizeof(ca);
+    unsigned long bm = 1;
+    int uid[2];
+    int iid[2];
+
+    *rd = INVALID_SOCKET;
+    *wr = INVALID_SOCKET;
+
+    /* Create the unique socket identifier
+     * so that we know the connection originated
+     * from us.
+     */
+    uid[0] = getpid();
+    uid[1] = id++;
+    if ((ls = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
+        return apr_get_netos_error();
+    }
+
+    pa.sin_family = AF_INET;
+    pa.sin_port   = 0;
+    pa.sin_addr.s_addr = inet_addr("127.0.0.1");
+
+    if (bind(ls, (SOCKADDR *)&pa, sizeof(pa)) == SOCKET_ERROR) {
+        rv =  apr_get_netos_error();
+        goto cleanup;
+    }
+    if (getsockname(ls, (SOCKADDR *)&la, &ll) == SOCKET_ERROR) {
+        rv =  apr_get_netos_error();
+        goto cleanup;
+    }
+    if (listen(ls, 1) == SOCKET_ERROR) {
+        rv =  apr_get_netos_error();
+        goto cleanup;
+    }
+    if ((*wr = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
+        rv = apr_get_netos_error();
+        goto cleanup;
+    }
+    if (connect(*wr, (SOCKADDR *)&la, sizeof(la)) == SOCKET_ERROR) {
+        rv =  apr_get_netos_error();
+        goto cleanup;
+    }
+    if (send(*wr, (char *)uid, sizeof(uid), 0) != sizeof(uid)) {
+        if ((rv =  apr_get_netos_error()) == 0) {
+            rv = APR_EINVAL;
+        }
+        goto cleanup;
+    }
+    if (ioctlsocket(ls, FIONBIO, &bm) == SOCKET_ERROR) {
+        rv = apr_get_netos_error();
+        goto cleanup;
+    }
+    for (;;) {
+        int ns;
+        int nc = 0;
+        /* Listening socket is nonblocking by now.
+         * The accept should create the socket
+         * immediatelly because we are connected already.
+         * However on buys systems this can take a while
+         * until winsock gets a chance to handle the events.
+         */
+        FD_ZERO(&rs);
+        FD_SET(ls, &rs);
+
+        socktm.tv_sec  = 1;
+        socktm.tv_usec = 0;
+        if ((ns = select(0, &rs, NULL, NULL, &socktm)) == SOCKET_ERROR) {
+            /* Accept still not signaled */
+            Sleep(100);
+            continue;
+        }
+        if (ns == 0) {
+            /* No connections in the last second */
+            continue;
+        }
+        if ((*rd = accept(ls, (SOCKADDR *)&ca, &lc)) == INVALID_SOCKET) {
+            rv =  apr_get_netos_error();
+            goto cleanup;
+        }
+        /* Verify the connection by reading the send identification.
+         */
+        do {
+            if (nc++)
+                Sleep(1);
+            nrd = recv(*rd, (char *)iid, sizeof(iid), 0);
+            rv = nrd == SOCKET_ERROR ? apr_get_netos_error() : APR_SUCCESS;
+        } while (APR_STATUS_IS_EAGAIN(rv));
+
+        if (nrd == sizeof(iid)) {
+            if (memcmp(uid, iid, sizeof(uid)) == 0) {
+                /* Wow, we recived what we send.
+                 * Put read side of the pipe to the blocking
+                 * mode and return.
+                 */
+                bm = 0;
+                if (ioctlsocket(*rd, FIONBIO, &bm) == SOCKET_ERROR) {
+                    rv = apr_get_netos_error();
+                    goto cleanup;
+                }
+                break;
+            }
+        }
+        else if (nrd == SOCKET_ERROR) {
+            goto cleanup;
+        }
+        closesocket(*rd);
+    }
+    /* We don't need the listening socket any more */
+    closesocket(ls);
+    return 0;
+
+cleanup:
+    /* Don't leak resources */
+    if (*rd != INVALID_SOCKET)
+        closesocket(*rd);
+    if (*wr != INVALID_SOCKET)
+        closesocket(*wr);
+
+    *rd = INVALID_SOCKET;
+    *wr = INVALID_SOCKET;
+    closesocket(ls);
+    return rv;
+}
+
+static apr_status_t socket_pipe_cleanup(void *thefile)
+{
+    apr_file_t *file = thefile;
+    if (file->filehand != INVALID_HANDLE_VALUE) {
+        shutdown((SOCKET)file->filehand, SD_BOTH);
+        closesocket((SOCKET)file->filehand);
+        file->filehand = INVALID_HANDLE_VALUE;
+    }
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_file_socket_pipe_create(apr_file_t **in,
+                                         apr_file_t **out,
+                                         apr_pool_t *p)
+{
+    apr_status_t rv;
+    SOCKET rd;
+    SOCKET wr;
+
+    if ((rv = create_socket_pipe(&rd, &wr)) != APR_SUCCESS) {
+        return rv;
+    }
+    (*in) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
+    (*in)->pool = p;
+    (*in)->fname = NULL;
+    (*in)->pipe = 1;
+    (*in)->timeout = -1;
+    (*in)->ungetchar = -1;
+    (*in)->eof_hit = 0;
+    (*in)->filePtr = 0;
+    (*in)->bufpos = 0;
+    (*in)->dataRead = 0;
+    (*in)->direction = 0;
+    (*in)->pOverlapped = (OVERLAPPED*)apr_pcalloc(p, sizeof(OVERLAPPED));
+    (*in)->filehand = (HANDLE)rd;
+
+    (*out) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
+    (*out)->pool = p;
+    (*out)->fname = NULL;
+    (*out)->pipe = 1;
+    (*out)->timeout = -1;
+    (*out)->ungetchar = -1;
+    (*out)->eof_hit = 0;
+    (*out)->filePtr = 0;
+    (*out)->bufpos = 0;
+    (*out)->dataRead = 0;
+    (*out)->direction = 0;
+    (*out)->pOverlapped = (OVERLAPPED*)apr_pcalloc(p, sizeof(OVERLAPPED));
+    (*out)->filehand = (HANDLE)wr;
+
+    apr_pool_cleanup_register(p, (void *)(*in), socket_pipe_cleanup,
+                              apr_pool_cleanup_null);
+    apr_pool_cleanup_register(p, (void *)(*out), socket_pipe_cleanup,
+                              apr_pool_cleanup_null);
+
+    return rv;
+}
+
+apr_status_t apr_file_socket_pipe_close(apr_file_t *file)
+{
+    apr_status_t stat;
+    if (!file->pipe)
+        return apr_file_close(file);
+    if ((stat = socket_pipe_cleanup(file)) == APR_SUCCESS) {
+        apr_pool_cleanup_kill(file->pool, file, socket_pipe_cleanup);
+
+        if (file->mutex) {
+            apr_thread_mutex_destroy(file->mutex);
+        }
+
+        return APR_SUCCESS;
+    }
+    return stat;
+}
+

Deleted: vendor/apache/apr/1.5.2/file_io/win32/readwrite.c
===================================================================
--- vendor/apache/apr/dist/file_io/win32/readwrite.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/file_io/win32/readwrite.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,581 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_lib.h"
-#include "apr_errno.h"
-#include <malloc.h>
-#include "apr_arch_atime.h"
-#include "apr_arch_misc.h"
-
-/*
- * read_with_timeout() 
- * Uses async i/o to emulate unix non-blocking i/o with timeouts.
- */
-static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t len_in, apr_size_t *nbytes)
-{
-    apr_status_t rv;
-    DWORD res;
-    DWORD len = (DWORD)len_in;
-    DWORD bytesread = 0;
-
-    /* Handle the zero timeout non-blocking case */
-    if (file->timeout == 0) {
-        /* Peek at the pipe. If there is no data available, return APR_EAGAIN.
-         * If data is available, go ahead and read it.
-         */
-        if (file->pipe) {
-            DWORD bytes;
-            if (!PeekNamedPipe(file->filehand, NULL, 0, NULL, &bytes, NULL)) {
-                rv = apr_get_os_error();
-                if (rv == APR_FROM_OS_ERROR(ERROR_BROKEN_PIPE)) {
-                    rv = APR_EOF;
-                }
-                *nbytes = 0;
-                return rv;
-            }
-            else {
-                if (bytes == 0) {
-                    *nbytes = 0;
-                    return APR_EAGAIN;
-                }
-                if (len > bytes) {
-                    len = bytes;
-                }
-            }
-        }
-        else {
-            /* ToDo: Handle zero timeout non-blocking file i/o 
-             * This is not needed until an APR application needs to
-             * timeout file i/o (which means setting file i/o non-blocking)
-             */
-        }
-    }
-
-    if (file->pOverlapped && !file->pipe) {
-        file->pOverlapped->Offset     = (DWORD)file->filePtr;
-        file->pOverlapped->OffsetHigh = (DWORD)(file->filePtr >> 32);
-    }
-
-    if (ReadFile(file->filehand, buf, len, 
-                 &bytesread, file->pOverlapped)) {
-        rv = APR_SUCCESS;
-    }
-    else {
-        rv = apr_get_os_error();
-        if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) {
-            /* Wait for the pending i/o, timeout converted from us to ms
-             * Note that we loop if someone gives up the event, since
-             * folks suggest that WAIT_ABANDONED isn't actually a result
-             * but an alert that ownership of the event has passed from
-             * one owner to a new proc/thread.
-             */
-            do {
-                res = WaitForSingleObject(file->pOverlapped->hEvent, 
-                                          (file->timeout > 0)
-                                            ? (DWORD)(file->timeout/1000)
-                                            : ((file->timeout == -1) 
-                                                 ? INFINITE : 0));
-            } while (res == WAIT_ABANDONED);
-
-            /* There is one case that represents entirely
-             * successful operations, otherwise we will cancel
-             * the operation in progress.
-             */
-            if (res != WAIT_OBJECT_0) {
-                CancelIo(file->filehand);
-            }
-
-            /* Ignore any failures above.  Attempt to complete
-             * the overlapped operation and use only _its_ result.
-             * For example, CancelIo or WaitForSingleObject can
-             * fail if the handle is closed, yet the read may have
-             * completed before we attempted to CancelIo...
-             */
-            if (GetOverlappedResult(file->filehand, file->pOverlapped, 
-                                    &bytesread, TRUE)) {
-                rv = APR_SUCCESS;
-            }
-            else {
-                rv = apr_get_os_error();
-                if (((rv == APR_FROM_OS_ERROR(ERROR_IO_INCOMPLETE))
-                        || (rv == APR_FROM_OS_ERROR(ERROR_OPERATION_ABORTED)))
-                    && (res == WAIT_TIMEOUT))
-                    rv = APR_TIMEUP;
-            }
-        }
-        if (rv == APR_FROM_OS_ERROR(ERROR_BROKEN_PIPE)) {
-            /* Assume ERROR_BROKEN_PIPE signals an EOF reading from a pipe */
-            rv = APR_EOF;
-        } else if (rv == APR_FROM_OS_ERROR(ERROR_HANDLE_EOF)) {
-            /* Did we hit EOF reading from the handle? */
-            rv = APR_EOF;
-        }
-    }
-    
-    /* OK and 0 bytes read ==> end of file */
-    if (rv == APR_SUCCESS && bytesread == 0)
-        rv = APR_EOF;
-    
-    if (rv == APR_SUCCESS && file->pOverlapped && !file->pipe) {
-        file->filePtr += bytesread;
-    }
-    *nbytes = bytesread;
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *len)
-{
-    apr_status_t rv;
-    DWORD bytes_read = 0;
-
-    if (*len <= 0) {
-        *len = 0;
-        return APR_SUCCESS;
-    }
-
-    /* If the file is open for xthread support, allocate and
-     * initialize the overlapped and io completion event (hEvent). 
-     * Threads should NOT share an apr_file_t or its hEvent.
-     */
-    if ((thefile->flags & APR_FOPEN_XTHREAD) && !thefile->pOverlapped ) {
-        thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool, 
-                                                         sizeof(OVERLAPPED));
-        thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
-        if (!thefile->pOverlapped->hEvent) {
-            rv = apr_get_os_error();
-            return rv;
-        }
-    }
-
-    /* Handle the ungetchar if there is one */
-    if (thefile->ungetchar != -1) {
-        bytes_read = 1;
-        *(char *)buf = (char)thefile->ungetchar;
-        buf = (char *)buf + 1;
-        (*len)--;
-        thefile->ungetchar = -1;
-        if (*len == 0) {
-            *len = bytes_read;
-            return APR_SUCCESS;
-        }
-    }
-    if (thefile->buffered) {
-        char *pos = (char *)buf;
-        apr_size_t blocksize;
-        apr_size_t size = *len;
-
-        apr_thread_mutex_lock(thefile->mutex);
-
-        if (thefile->direction == 1) {
-            rv = apr_file_flush(thefile);
-            if (rv != APR_SUCCESS) {
-                apr_thread_mutex_unlock(thefile->mutex);
-                return rv;
-            }
-            thefile->bufpos = 0;
-            thefile->direction = 0;
-            thefile->dataRead = 0;
-        }
-
-        rv = 0;
-        while (rv == 0 && size > 0) {
-            if (thefile->bufpos >= thefile->dataRead) {
-                apr_size_t read;
-                rv = read_with_timeout(thefile, thefile->buffer, 
-                                       thefile->bufsize, &read);
-                if (read == 0) {
-                    if (rv == APR_EOF)
-                        thefile->eof_hit = TRUE;
-                    break;
-                }
-                else {
-                    thefile->dataRead = read;
-                    thefile->filePtr += thefile->dataRead;
-                    thefile->bufpos = 0;
-                }
-            }
-
-            blocksize = size > thefile->dataRead - thefile->bufpos ? thefile->dataRead - thefile->bufpos : size;
-            memcpy(pos, thefile->buffer + thefile->bufpos, blocksize);
-            thefile->bufpos += blocksize;
-            pos += blocksize;
-            size -= blocksize;
-        }
-
-        *len = pos - (char *)buf;
-        if (*len) {
-            rv = APR_SUCCESS;
-        }
-        apr_thread_mutex_unlock(thefile->mutex);
-    } else {  
-        /* Unbuffered i/o */
-        apr_size_t nbytes;
-        rv = read_with_timeout(thefile, buf, *len, &nbytes);
-        if (rv == APR_EOF)
-            thefile->eof_hit = TRUE;
-        *len = nbytes;
-    }
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)
-{
-    apr_status_t rv;
-    DWORD bwrote;
-
-    /* If the file is open for xthread support, allocate and
-     * initialize the overlapped and io completion event (hEvent). 
-     * Threads should NOT share an apr_file_t or its hEvent.
-     */
-    if ((thefile->flags & APR_FOPEN_XTHREAD) && !thefile->pOverlapped ) {
-        thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool, 
-                                                         sizeof(OVERLAPPED));
-        thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
-        if (!thefile->pOverlapped->hEvent) {
-            rv = apr_get_os_error();
-            return rv;
-        }
-    }
-
-    if (thefile->buffered) {
-        char *pos = (char *)buf;
-        apr_size_t blocksize;
-        apr_size_t size = *nbytes;
-
-        apr_thread_mutex_lock(thefile->mutex);
-
-        if (thefile->direction == 0) {
-            /* Position file pointer for writing at the offset we are logically reading from */
-            apr_off_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
-            DWORD offlo = (DWORD)offset;
-            LONG  offhi = (LONG)(offset >> 32);
-            if (offset != thefile->filePtr)
-                SetFilePointer(thefile->filehand, offlo, &offhi, FILE_BEGIN);
-            thefile->bufpos = thefile->dataRead = 0;
-            thefile->direction = 1;
-        }
-
-        rv = 0;
-        while (rv == 0 && size > 0) {
-            if (thefile->bufpos == thefile->bufsize)   // write buffer is full
-                rv = apr_file_flush(thefile);
-
-            blocksize = size > thefile->bufsize - thefile->bufpos ? 
-                                     thefile->bufsize - thefile->bufpos : size;
-            memcpy(thefile->buffer + thefile->bufpos, pos, blocksize);
-            thefile->bufpos += blocksize;
-            pos += blocksize;
-            size -= blocksize;
-        }
-
-        apr_thread_mutex_unlock(thefile->mutex);
-        return rv;
-    } else {
-        if (!thefile->pipe) {
-            apr_off_t offset = 0;
-            apr_status_t rc;
-            if (thefile->append) {
-                /* apr_file_lock will mutex the file across processes.
-                 * The call to apr_thread_mutex_lock is added to avoid
-                 * a race condition between LockFile and WriteFile 
-                 * that occasionally leads to deadlocked threads.
-                 */
-                apr_thread_mutex_lock(thefile->mutex);
-                rc = apr_file_lock(thefile, APR_FLOCK_EXCLUSIVE);
-                if (rc != APR_SUCCESS) {
-                    apr_thread_mutex_unlock(thefile->mutex);
-                    return rc;
-                }
-                rc = apr_file_seek(thefile, APR_END, &offset);
-                if (rc != APR_SUCCESS) {
-                    apr_thread_mutex_unlock(thefile->mutex);
-                    return rc;
-                }
-            }
-            if (thefile->pOverlapped) {
-                thefile->pOverlapped->Offset     = (DWORD)thefile->filePtr;
-                thefile->pOverlapped->OffsetHigh = (DWORD)(thefile->filePtr >> 32);
-            }
-            rv = WriteFile(thefile->filehand, buf, (DWORD)*nbytes, &bwrote,
-                           thefile->pOverlapped);
-            if (thefile->append) {
-                apr_file_unlock(thefile);
-                apr_thread_mutex_unlock(thefile->mutex);
-            }
-        }
-        else {
-            rv = WriteFile(thefile->filehand, buf, (DWORD)*nbytes, &bwrote,
-                           thefile->pOverlapped);
-        }
-        if (rv) {
-            *nbytes = bwrote;
-            rv = APR_SUCCESS;
-        }
-        else {
-            (*nbytes) = 0;
-            rv = apr_get_os_error();
-
-            /* XXX: This must be corrected, per the apr_file_read logic!!! */
-            if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) {
- 
-                DWORD timeout_ms;
-
-                if (thefile->timeout == 0) {
-                    timeout_ms = 0;
-                }
-                else if (thefile->timeout < 0) {
-                    timeout_ms = INFINITE;
-                }
-                else {
-                    timeout_ms = (DWORD)(thefile->timeout / 1000);
-                }
-	       
-                rv = WaitForSingleObject(thefile->pOverlapped->hEvent, timeout_ms);
-                switch (rv) {
-                    case WAIT_OBJECT_0:
-                        GetOverlappedResult(thefile->filehand, thefile->pOverlapped, 
-                                            &bwrote, TRUE);
-                        *nbytes = bwrote;
-                        rv = APR_SUCCESS;
-                        break;
-                    case WAIT_TIMEOUT:
-                        rv = (timeout_ms == 0) ? APR_EAGAIN : APR_TIMEUP;
-                        break;
-                    case WAIT_FAILED:
-                        rv = apr_get_os_error();
-                        break;
-                    default:
-                        break;
-                }
-                if (rv != APR_SUCCESS) {
-                    if (apr_os_level >= APR_WIN_98)
-                        CancelIo(thefile->filehand);
-                }
-            }
-        }
-        if (rv == APR_SUCCESS && thefile->pOverlapped && !thefile->pipe) {
-            thefile->filePtr += *nbytes;
-        }
-    }
-    return rv;
-}
-/* ToDo: Write for it anyway and test the oslevel!
- * Too bad WriteFileGather() is not supported on 95&98 (or NT prior to SP2)
- */
-APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile,
-                                     const struct iovec *vec,
-                                     apr_size_t nvec, 
-                                     apr_size_t *nbytes)
-{
-    apr_status_t rv = APR_SUCCESS;
-    apr_size_t i;
-    apr_size_t bwrote = 0;
-    char *buf;
-
-    *nbytes = 0;
-    for (i = 0; i < nvec; i++) {
-        buf = vec[i].iov_base;
-        bwrote = vec[i].iov_len;
-        rv = apr_file_write(thefile, buf, &bwrote);
-        *nbytes += bwrote;
-        if (rv != APR_SUCCESS) {
-            break;
-        }
-    }
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile)
-{
-    apr_size_t len = 1;
-
-    return apr_file_write(thefile, &ch, &len);
-}
-
-APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile)
-{
-    thefile->ungetchar = (unsigned char) ch;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile)
-{
-    apr_status_t rc;
-    apr_size_t bread;
-
-    bread = 1;
-    rc = apr_file_read(thefile, ch, &bread);
-
-    if (rc) {
-        return rc;
-    }
-    
-    if (bread == 0) {
-        thefile->eof_hit = TRUE;
-        return APR_EOF;
-    }
-    return APR_SUCCESS; 
-}
-
-APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile)
-{
-    apr_size_t len = strlen(str);
-
-    return apr_file_write(thefile, str, &len);
-}
-
-APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile)
-{
-    apr_size_t readlen;
-    apr_status_t rv = APR_SUCCESS;
-    int i;    
-
-    for (i = 0; i < len-1; i++) {
-        readlen = 1;
-        rv = apr_file_read(thefile, str+i, &readlen);
-
-        if (rv != APR_SUCCESS && rv != APR_EOF)
-            return rv;
-
-        if (readlen == 0) {
-            /* If we have bytes, defer APR_EOF to the next call */
-            if (i > 0)
-                rv = APR_SUCCESS;
-            break;
-        }
-        
-        if (str[i] == '\n') {
-            i++; /* don't clobber this char below */
-            break;
-        }
-    }
-    str[i] = 0;
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile)
-{
-    if (thefile->buffered) {
-        DWORD numbytes, written = 0;
-        apr_status_t rc = 0;
-        char *buffer;
-        apr_size_t bytesleft;
-
-        if (thefile->direction == 1 && thefile->bufpos) {
-            buffer = thefile->buffer;
-            bytesleft = thefile->bufpos;           
-
-            do {
-                if (bytesleft > APR_DWORD_MAX) {
-                    numbytes = APR_DWORD_MAX;
-                }
-                else {
-                    numbytes = (DWORD)bytesleft;
-                }
-
-                if (!WriteFile(thefile->filehand, buffer, numbytes, &written, NULL)) {
-                    rc = apr_get_os_error();
-                    thefile->filePtr += written;
-                    break;
-                }
-
-                thefile->filePtr += written;
-                bytesleft -= written;
-                buffer += written;
-
-            } while (bytesleft > 0);
-
-            if (rc == 0)
-                thefile->bufpos = 0;
-        }
-
-        return rc;
-    }
-
-    /* There isn't anything to do if we aren't buffering the output
-     * so just return success.
-     */
-    return APR_SUCCESS; 
-}
-
-APR_DECLARE(apr_status_t) apr_file_sync(apr_file_t *thefile){
-    apr_status_t rv;
-
-    rv = apr_file_flush(thefile);
-    if (rv != APR_SUCCESS) {
-        return rv;
-    }
-
-    if (!FlushFileBuffers(thefile->filehand)) {
-        rv = apr_get_os_error();
-    }
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_datasync(apr_file_t *thefile){
-    return apr_file_sync(thefile);
-}
-
-struct apr_file_printf_data {
-    apr_vformatter_buff_t vbuff;
-    apr_file_t *fptr;
-    char *buf;
-};
-
-static int file_printf_flush(apr_vformatter_buff_t *buff)
-{
-    struct apr_file_printf_data *data = (struct apr_file_printf_data *)buff;
-
-    if (apr_file_write_full(data->fptr, data->buf,
-                            data->vbuff.curpos - data->buf, NULL)) {
-        return -1;
-    }
-
-    data->vbuff.curpos = data->buf;
-    return 0;
-}
-
-APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, 
-                                        const char *format, ...)
-{
-    struct apr_file_printf_data data;
-    va_list ap;
-    int count;
-
-    data.buf = malloc(HUGE_STRING_LEN);
-    if (data.buf == NULL) {
-        return 0;
-    }
-    data.vbuff.curpos = data.buf;
-    data.vbuff.endpos = data.buf + HUGE_STRING_LEN;
-    data.fptr = fptr;
-    va_start(ap, format);
-    count = apr_vformatter(file_printf_flush,
-                           (apr_vformatter_buff_t *)&data, format, ap);
-    /* apr_vformatter does not call flush for the last bits */
-    if (count >= 0) file_printf_flush((apr_vformatter_buff_t *)&data);
-
-    va_end(ap);
-
-    free(data.buf);
-    return count;
-}

Copied: vendor/apache/apr/1.5.2/file_io/win32/readwrite.c (from rev 9273, vendor/apache/apr/dist/file_io/win32/readwrite.c)
===================================================================
--- vendor/apache/apr/1.5.2/file_io/win32/readwrite.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/file_io/win32/readwrite.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,592 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_file_io.h"
+#include "apr_general.h"
+#include "apr_strings.h"
+#include "apr_lib.h"
+#include "apr_errno.h"
+#include <malloc.h>
+#include "apr_arch_atime.h"
+#include "apr_arch_misc.h"
+
+/*
+ * read_with_timeout() 
+ * Uses async i/o to emulate unix non-blocking i/o with timeouts.
+ */
+static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t len_in, apr_size_t *nbytes)
+{
+    apr_status_t rv;
+    DWORD res;
+    DWORD len = (DWORD)len_in;
+    DWORD bytesread = 0;
+
+    /* Handle the zero timeout non-blocking case */
+    if (file->timeout == 0) {
+        /* Peek at the pipe. If there is no data available, return APR_EAGAIN.
+         * If data is available, go ahead and read it.
+         */
+        if (file->pipe) {
+            DWORD bytes;
+            if (!PeekNamedPipe(file->filehand, NULL, 0, NULL, &bytes, NULL)) {
+                rv = apr_get_os_error();
+                if (rv == APR_FROM_OS_ERROR(ERROR_BROKEN_PIPE)) {
+                    rv = APR_EOF;
+                }
+                *nbytes = 0;
+                return rv;
+            }
+            else {
+                if (bytes == 0) {
+                    *nbytes = 0;
+                    return APR_EAGAIN;
+                }
+                if (len > bytes) {
+                    len = bytes;
+                }
+            }
+        }
+        else {
+            /* ToDo: Handle zero timeout non-blocking file i/o 
+             * This is not needed until an APR application needs to
+             * timeout file i/o (which means setting file i/o non-blocking)
+             */
+        }
+    }
+
+    if (file->pOverlapped && !file->pipe) {
+        file->pOverlapped->Offset     = (DWORD)file->filePtr;
+        file->pOverlapped->OffsetHigh = (DWORD)(file->filePtr >> 32);
+    }
+
+    if (ReadFile(file->filehand, buf, len, 
+                 &bytesread, file->pOverlapped)) {
+        rv = APR_SUCCESS;
+    }
+    else {
+        rv = apr_get_os_error();
+        if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) {
+            /* Wait for the pending i/o, timeout converted from us to ms
+             * Note that we loop if someone gives up the event, since
+             * folks suggest that WAIT_ABANDONED isn't actually a result
+             * but an alert that ownership of the event has passed from
+             * one owner to a new proc/thread.
+             */
+            do {
+                res = WaitForSingleObject(file->pOverlapped->hEvent, 
+                                          (file->timeout > 0)
+                                            ? (DWORD)(file->timeout/1000)
+                                            : ((file->timeout == -1) 
+                                                 ? INFINITE : 0));
+            } while (res == WAIT_ABANDONED);
+
+            /* There is one case that represents entirely
+             * successful operations, otherwise we will cancel
+             * the operation in progress.
+             */
+            if (res != WAIT_OBJECT_0) {
+                CancelIo(file->filehand);
+            }
+
+            /* Ignore any failures above.  Attempt to complete
+             * the overlapped operation and use only _its_ result.
+             * For example, CancelIo or WaitForSingleObject can
+             * fail if the handle is closed, yet the read may have
+             * completed before we attempted to CancelIo...
+             */
+            if (GetOverlappedResult(file->filehand, file->pOverlapped, 
+                                    &bytesread, TRUE)) {
+                rv = APR_SUCCESS;
+            }
+            else {
+                rv = apr_get_os_error();
+                if (((rv == APR_FROM_OS_ERROR(ERROR_IO_INCOMPLETE))
+                        || (rv == APR_FROM_OS_ERROR(ERROR_OPERATION_ABORTED)))
+                    && (res == WAIT_TIMEOUT))
+                    rv = APR_TIMEUP;
+            }
+        }
+        if (rv == APR_FROM_OS_ERROR(ERROR_BROKEN_PIPE)) {
+            /* Assume ERROR_BROKEN_PIPE signals an EOF reading from a pipe */
+            rv = APR_EOF;
+        } else if (rv == APR_FROM_OS_ERROR(ERROR_HANDLE_EOF)) {
+            /* Did we hit EOF reading from the handle? */
+            rv = APR_EOF;
+        }
+    }
+    
+    /* OK and 0 bytes read ==> end of file */
+    if (rv == APR_SUCCESS && bytesread == 0)
+        rv = APR_EOF;
+    
+    if (rv == APR_SUCCESS && file->pOverlapped && !file->pipe) {
+        file->filePtr += bytesread;
+    }
+    *nbytes = bytesread;
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *len)
+{
+    apr_status_t rv;
+    DWORD bytes_read = 0;
+
+    if (*len <= 0) {
+        *len = 0;
+        return APR_SUCCESS;
+    }
+
+    /* If the file is open for xthread support, allocate and
+     * initialize the overlapped and io completion event (hEvent). 
+     * Threads should NOT share an apr_file_t or its hEvent.
+     */
+    if ((thefile->flags & APR_FOPEN_XTHREAD) && !thefile->pOverlapped ) {
+        thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool, 
+                                                         sizeof(OVERLAPPED));
+        thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+        if (!thefile->pOverlapped->hEvent) {
+            rv = apr_get_os_error();
+            return rv;
+        }
+    }
+
+    /* Handle the ungetchar if there is one */
+    if (thefile->ungetchar != -1) {
+        bytes_read = 1;
+        *(char *)buf = (char)thefile->ungetchar;
+        buf = (char *)buf + 1;
+        (*len)--;
+        thefile->ungetchar = -1;
+        if (*len == 0) {
+            *len = bytes_read;
+            return APR_SUCCESS;
+        }
+    }
+    if (thefile->buffered) {
+        char *pos = (char *)buf;
+        apr_size_t blocksize;
+        apr_size_t size = *len;
+
+        if (thefile->flags & APR_FOPEN_XTHREAD) {
+            apr_thread_mutex_lock(thefile->mutex);
+        }
+
+        if (thefile->direction == 1) {
+            rv = apr_file_flush(thefile);
+            if (rv != APR_SUCCESS) {
+                if (thefile->flags & APR_FOPEN_XTHREAD) {
+                    apr_thread_mutex_unlock(thefile->mutex);
+                }
+                return rv;
+            }
+            thefile->bufpos = 0;
+            thefile->direction = 0;
+            thefile->dataRead = 0;
+        }
+
+        rv = 0;
+        while (rv == 0 && size > 0) {
+            if (thefile->bufpos >= thefile->dataRead) {
+                apr_size_t read;
+                rv = read_with_timeout(thefile, thefile->buffer, 
+                                       thefile->bufsize, &read);
+                if (read == 0) {
+                    if (rv == APR_EOF)
+                        thefile->eof_hit = TRUE;
+                    break;
+                }
+                else {
+                    thefile->dataRead = read;
+                    thefile->filePtr += thefile->dataRead;
+                    thefile->bufpos = 0;
+                }
+            }
+
+            blocksize = size > thefile->dataRead - thefile->bufpos ? thefile->dataRead - thefile->bufpos : size;
+            memcpy(pos, thefile->buffer + thefile->bufpos, blocksize);
+            thefile->bufpos += blocksize;
+            pos += blocksize;
+            size -= blocksize;
+        }
+
+        *len = pos - (char *)buf;
+        if (*len) {
+            rv = APR_SUCCESS;
+        }
+
+        if (thefile->flags & APR_FOPEN_XTHREAD) {
+            apr_thread_mutex_unlock(thefile->mutex);
+        }
+    } else {  
+        /* Unbuffered i/o */
+        apr_size_t nbytes;
+        rv = read_with_timeout(thefile, buf, *len, &nbytes);
+        if (rv == APR_EOF)
+            thefile->eof_hit = TRUE;
+        *len = nbytes;
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)
+{
+    apr_status_t rv;
+    DWORD bwrote;
+
+    /* If the file is open for xthread support, allocate and
+     * initialize the overlapped and io completion event (hEvent). 
+     * Threads should NOT share an apr_file_t or its hEvent.
+     */
+    if ((thefile->flags & APR_FOPEN_XTHREAD) && !thefile->pOverlapped ) {
+        thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool, 
+                                                         sizeof(OVERLAPPED));
+        thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+        if (!thefile->pOverlapped->hEvent) {
+            rv = apr_get_os_error();
+            return rv;
+        }
+    }
+
+    if (thefile->buffered) {
+        char *pos = (char *)buf;
+        apr_size_t blocksize;
+        apr_size_t size = *nbytes;
+
+        if (thefile->flags & APR_FOPEN_XTHREAD) {
+            apr_thread_mutex_lock(thefile->mutex);
+        }
+
+        if (thefile->direction == 0) {
+            /* Position file pointer for writing at the offset we are logically reading from */
+            apr_off_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
+            DWORD offlo = (DWORD)offset;
+            LONG  offhi = (LONG)(offset >> 32);
+            if (offset != thefile->filePtr)
+                SetFilePointer(thefile->filehand, offlo, &offhi, FILE_BEGIN);
+            thefile->bufpos = thefile->dataRead = 0;
+            thefile->direction = 1;
+        }
+
+        rv = 0;
+        while (rv == 0 && size > 0) {
+            if (thefile->bufpos == thefile->bufsize)   /* write buffer is full */
+                rv = apr_file_flush(thefile);
+
+            blocksize = size > thefile->bufsize - thefile->bufpos ? 
+                                     thefile->bufsize - thefile->bufpos : size;
+            memcpy(thefile->buffer + thefile->bufpos, pos, blocksize);
+            thefile->bufpos += blocksize;
+            pos += blocksize;
+            size -= blocksize;
+        }
+
+        if (thefile->flags & APR_FOPEN_XTHREAD) {
+            apr_thread_mutex_unlock(thefile->mutex);
+        }
+        return rv;
+    } else {
+        if (!thefile->pipe) {
+            apr_off_t offset = 0;
+            apr_status_t rc;
+            if (thefile->append) {
+                /* apr_file_lock will mutex the file across processes.
+                 * The call to apr_thread_mutex_lock is added to avoid
+                 * a race condition between LockFile and WriteFile 
+                 * that occasionally leads to deadlocked threads.
+                 */
+                apr_thread_mutex_lock(thefile->mutex);
+                rc = apr_file_lock(thefile, APR_FLOCK_EXCLUSIVE);
+                if (rc != APR_SUCCESS) {
+                    apr_thread_mutex_unlock(thefile->mutex);
+                    return rc;
+                }
+                rc = apr_file_seek(thefile, APR_END, &offset);
+                if (rc != APR_SUCCESS) {
+                    apr_thread_mutex_unlock(thefile->mutex);
+                    return rc;
+                }
+            }
+            if (thefile->pOverlapped) {
+                thefile->pOverlapped->Offset     = (DWORD)thefile->filePtr;
+                thefile->pOverlapped->OffsetHigh = (DWORD)(thefile->filePtr >> 32);
+            }
+            rv = WriteFile(thefile->filehand, buf, (DWORD)*nbytes, &bwrote,
+                           thefile->pOverlapped);
+            if (thefile->append) {
+                apr_file_unlock(thefile);
+                apr_thread_mutex_unlock(thefile->mutex);
+            }
+        }
+        else {
+            rv = WriteFile(thefile->filehand, buf, (DWORD)*nbytes, &bwrote,
+                           thefile->pOverlapped);
+        }
+        if (rv) {
+            *nbytes = bwrote;
+            rv = APR_SUCCESS;
+        }
+        else {
+            (*nbytes) = 0;
+            rv = apr_get_os_error();
+
+            /* XXX: This must be corrected, per the apr_file_read logic!!! */
+            if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) {
+ 
+                DWORD timeout_ms;
+
+                if (thefile->timeout == 0) {
+                    timeout_ms = 0;
+                }
+                else if (thefile->timeout < 0) {
+                    timeout_ms = INFINITE;
+                }
+                else {
+                    timeout_ms = (DWORD)(thefile->timeout / 1000);
+                }
+	       
+                rv = WaitForSingleObject(thefile->pOverlapped->hEvent, timeout_ms);
+                switch (rv) {
+                    case WAIT_OBJECT_0:
+                        GetOverlappedResult(thefile->filehand, thefile->pOverlapped, 
+                                            &bwrote, TRUE);
+                        *nbytes = bwrote;
+                        rv = APR_SUCCESS;
+                        break;
+                    case WAIT_TIMEOUT:
+                        rv = (timeout_ms == 0) ? APR_EAGAIN : APR_TIMEUP;
+                        break;
+                    case WAIT_FAILED:
+                        rv = apr_get_os_error();
+                        break;
+                    default:
+                        break;
+                }
+                if (rv != APR_SUCCESS) {
+                    if (apr_os_level >= APR_WIN_98)
+                        CancelIo(thefile->filehand);
+                }
+            }
+        }
+        if (rv == APR_SUCCESS && thefile->pOverlapped && !thefile->pipe) {
+            thefile->filePtr += *nbytes;
+        }
+    }
+    return rv;
+}
+/* ToDo: Write for it anyway and test the oslevel!
+ * Too bad WriteFileGather() is not supported on 95&98 (or NT prior to SP2)
+ */
+APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile,
+                                     const struct iovec *vec,
+                                     apr_size_t nvec, 
+                                     apr_size_t *nbytes)
+{
+    apr_status_t rv = APR_SUCCESS;
+    apr_size_t i;
+    apr_size_t bwrote = 0;
+    char *buf;
+
+    *nbytes = 0;
+    for (i = 0; i < nvec; i++) {
+        buf = vec[i].iov_base;
+        bwrote = vec[i].iov_len;
+        rv = apr_file_write(thefile, buf, &bwrote);
+        *nbytes += bwrote;
+        if (rv != APR_SUCCESS) {
+            break;
+        }
+    }
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile)
+{
+    apr_size_t len = 1;
+
+    return apr_file_write(thefile, &ch, &len);
+}
+
+APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile)
+{
+    thefile->ungetchar = (unsigned char) ch;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile)
+{
+    apr_status_t rc;
+    apr_size_t bread;
+
+    bread = 1;
+    rc = apr_file_read(thefile, ch, &bread);
+
+    if (rc) {
+        return rc;
+    }
+    
+    if (bread == 0) {
+        thefile->eof_hit = TRUE;
+        return APR_EOF;
+    }
+    return APR_SUCCESS; 
+}
+
+APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile)
+{
+    apr_size_t len = strlen(str);
+
+    return apr_file_write(thefile, str, &len);
+}
+
+APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile)
+{
+    apr_size_t readlen;
+    apr_status_t rv = APR_SUCCESS;
+    int i;    
+
+    for (i = 0; i < len-1; i++) {
+        readlen = 1;
+        rv = apr_file_read(thefile, str+i, &readlen);
+
+        if (rv != APR_SUCCESS && rv != APR_EOF)
+            return rv;
+
+        if (readlen == 0) {
+            /* If we have bytes, defer APR_EOF to the next call */
+            if (i > 0)
+                rv = APR_SUCCESS;
+            break;
+        }
+        
+        if (str[i] == '\n') {
+            i++; /* don't clobber this char below */
+            break;
+        }
+    }
+    str[i] = 0;
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile)
+{
+    if (thefile->buffered) {
+        DWORD numbytes, written = 0;
+        apr_status_t rc = 0;
+        char *buffer;
+        apr_size_t bytesleft;
+
+        if (thefile->direction == 1 && thefile->bufpos) {
+            buffer = thefile->buffer;
+            bytesleft = thefile->bufpos;           
+
+            do {
+                if (bytesleft > APR_DWORD_MAX) {
+                    numbytes = APR_DWORD_MAX;
+                }
+                else {
+                    numbytes = (DWORD)bytesleft;
+                }
+
+                if (!WriteFile(thefile->filehand, buffer, numbytes, &written, NULL)) {
+                    rc = apr_get_os_error();
+                    thefile->filePtr += written;
+                    break;
+                }
+
+                thefile->filePtr += written;
+                bytesleft -= written;
+                buffer += written;
+
+            } while (bytesleft > 0);
+
+            if (rc == 0)
+                thefile->bufpos = 0;
+        }
+
+        return rc;
+    }
+
+    /* There isn't anything to do if we aren't buffering the output
+     * so just return success.
+     */
+    return APR_SUCCESS; 
+}
+
+APR_DECLARE(apr_status_t) apr_file_sync(apr_file_t *thefile){
+    apr_status_t rv;
+
+    rv = apr_file_flush(thefile);
+    if (rv != APR_SUCCESS) {
+        return rv;
+    }
+
+    if (!FlushFileBuffers(thefile->filehand)) {
+        rv = apr_get_os_error();
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_file_datasync(apr_file_t *thefile){
+    return apr_file_sync(thefile);
+}
+
+struct apr_file_printf_data {
+    apr_vformatter_buff_t vbuff;
+    apr_file_t *fptr;
+    char *buf;
+};
+
+static int file_printf_flush(apr_vformatter_buff_t *buff)
+{
+    struct apr_file_printf_data *data = (struct apr_file_printf_data *)buff;
+
+    if (apr_file_write_full(data->fptr, data->buf,
+                            data->vbuff.curpos - data->buf, NULL)) {
+        return -1;
+    }
+
+    data->vbuff.curpos = data->buf;
+    return 0;
+}
+
+APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, 
+                                        const char *format, ...)
+{
+    struct apr_file_printf_data data;
+    va_list ap;
+    int count;
+
+    data.buf = malloc(HUGE_STRING_LEN);
+    if (data.buf == NULL) {
+        return 0;
+    }
+    data.vbuff.curpos = data.buf;
+    data.vbuff.endpos = data.buf + HUGE_STRING_LEN;
+    data.fptr = fptr;
+    va_start(ap, format);
+    count = apr_vformatter(file_printf_flush,
+                           (apr_vformatter_buff_t *)&data, format, ap);
+    /* apr_vformatter does not call flush for the last bits */
+    if (count >= 0) file_printf_flush((apr_vformatter_buff_t *)&data);
+
+    va_end(ap);
+
+    free(data.buf);
+    return count;
+}

Deleted: vendor/apache/apr/1.5.2/helpers/apr_rename.pl
===================================================================
--- vendor/apache/apr/dist/helpers/apr_rename.pl	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/helpers/apr_rename.pl	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,106 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-use ExtUtils::MakeMaker qw(prompt);
-use File::Find;
-
-my $just_check = @ARGV ? $ARGV[0] eq '-c' : 0;
-shift if $just_check;
-my $dir = shift || '.';
-my %names;
-
-my $prefix = 'apr_';
-
-while (<DATA>) {
-    chomp;
-    my($old, $new) = grep { s/^$prefix//o } split;
-    next unless $old and $new;
-    $names{$old} = $new;
-}
-
-my $pattern = join '|', keys %names;
-#print "replacement pattern=$pattern\n";
-
-find sub {
-    chomp;
-    return unless /\.[ch]$/;
-    my $file = "$File::Find::dir/$_";
-    print "looking in $file\n";
-
-    replace($_, !$just_check);
-
-}, $dir;
-
-sub replace {
-    my($file, $replace) = @_;
-    local *IN, *OUT;
-    my @lines;
-    my $found = 0;
-
-    open IN, $file or die "open $file: $!";
-
-    while (<IN>) {
-        for (m/[^_\"]*$prefix($pattern)\b/og) {
-            $found++;
-            print "   $file:$. apr_$_ -> apr_$names{$_}\n";
-        }
-        push @lines, $_ if $replace;
-    }
-
-    close IN;
-
-    return unless $found and $replace;
-
-#    my $ans = prompt("replace?", 'y');
-#    return unless $ans =~ /^y/i;
-
-    open OUT, ">$file" or die "open $file: $!";
-
-    for (@lines) {
-        unless (/^\#include/) {
-            s/([^_\"]*$prefix)($pattern)\b/$1$names{$2}/og;
-        }
-        print OUT $_;
-    }
-
-    close OUT;
-}
-
-__DATA__
-apr_time_t:
-apr_implode_gmt              apr_time_exp_gmt_get
-
-apr_socket_t:
-apr_close_socket             apr_socket_close
-apr_create_socket            apr_socket_create
-apr_get_sockaddr             apr_socket_addr_get
-apr_get_socketdata           apr_socket_data_get
-apr_set_socketdata           apr_socket_data_set
-apr_shutdown                 apr_socket_shutdown
-apr_bind                     apr_socket_bind
-apr_listen                   apr_socket_listen
-apr_accept                   apr_socket_accept
-apr_connect                  apr_socket_connect
-apr_send                     apr_socket_send
-apr_sendv                    apr_socket_sendv
-apr_sendto                   apr_socket_sendto
-apr_recvfrom                 apr_socket_recvfrom
-apr_sendfile                 apr_socket_sendfile
-apr_recv                     apr_socket_recv
-
-apr_filepath_*:
-apr_filename_of_pathname     apr_filepath_name_get
-
-apr_gid_t:
-apr_get_groupid              apr_gid_get
-apr_get_groupname            apr_gid_name_get
-apr_group_name_get           apr_gid_name_get
-apr_compare_groups           apr_gid_compare
-
-apr_uid_t:
-apr_get_home_directory       apr_uid_homepath_get
-apr_get_userid               apr_uid_get
-apr_current_userid           apr_uid_current
-apr_compare_users            apr_uid_compare
-apr_get_username             apr_uid_name_get
-apr_compare_users            apr_uid_compare
-

Copied: vendor/apache/apr/1.5.2/helpers/apr_rename.pl (from rev 9273, vendor/apache/apr/dist/helpers/apr_rename.pl)
===================================================================
--- vendor/apache/apr/1.5.2/helpers/apr_rename.pl	                        (rev 0)
+++ vendor/apache/apr/1.5.2/helpers/apr_rename.pl	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,106 @@
+#!/usr/bin/perl -w
+use strict;
+use ExtUtils::MakeMaker qw(prompt);
+use File::Find;
+
+my $just_check = @ARGV ? $ARGV[0] eq '-c' : 0;
+shift if $just_check;
+my $dir = shift || '.';
+my %names;
+
+my $prefix = 'apr_';
+
+while (<DATA>) {
+    chomp;
+    my($old, $new) = grep { s/^$prefix//o } split;
+    next unless $old and $new;
+    $names{$old} = $new;
+}
+
+my $pattern = join '|', keys %names;
+#print "replacement pattern=$pattern\n";
+
+find sub {
+    chomp;
+    return unless /\.[ch]$/;
+    my $file = "$File::Find::dir/$_";
+    print "looking in $file\n";
+
+    replace($_, !$just_check);
+
+}, $dir;
+
+sub replace {
+    my($file, $replace) = @_;
+    local *IN, *OUT;
+    my @lines;
+    my $found = 0;
+
+    open IN, $file or die "open $file: $!";
+
+    while (<IN>) {
+        for (m/[^_\"]*$prefix($pattern)\b/og) {
+            $found++;
+            print "   $file:$. apr_$_ -> apr_$names{$_}\n";
+        }
+        push @lines, $_ if $replace;
+    }
+
+    close IN;
+
+    return unless $found and $replace;
+
+#    my $ans = prompt("replace?", 'y');
+#    return unless $ans =~ /^y/i;
+
+    open OUT, ">$file" or die "open $file: $!";
+
+    for (@lines) {
+        unless (/^\#include/) {
+            s/([^_\"]*$prefix)($pattern)\b/$1$names{$2}/og;
+        }
+        print OUT $_;
+    }
+
+    close OUT;
+}
+
+__DATA__
+apr_time_t:
+apr_implode_gmt              apr_time_exp_gmt_get
+
+apr_socket_t:
+apr_close_socket             apr_socket_close
+apr_create_socket            apr_socket_create
+apr_get_sockaddr             apr_socket_addr_get
+apr_get_socketdata           apr_socket_data_get
+apr_set_socketdata           apr_socket_data_set
+apr_shutdown                 apr_socket_shutdown
+apr_bind                     apr_socket_bind
+apr_listen                   apr_socket_listen
+apr_accept                   apr_socket_accept
+apr_connect                  apr_socket_connect
+apr_send                     apr_socket_send
+apr_sendv                    apr_socket_sendv
+apr_sendto                   apr_socket_sendto
+apr_recvfrom                 apr_socket_recvfrom
+apr_sendfile                 apr_socket_sendfile
+apr_recv                     apr_socket_recv
+
+apr_filepath_*:
+apr_filename_of_pathname     apr_filepath_name_get
+
+apr_gid_t:
+apr_get_groupid              apr_gid_get
+apr_get_groupname            apr_gid_name_get
+apr_group_name_get           apr_gid_name_get
+apr_compare_groups           apr_gid_compare
+
+apr_uid_t:
+apr_get_home_directory       apr_uid_homepath_get
+apr_get_userid               apr_uid_get
+apr_current_userid           apr_uid_current
+apr_compare_users            apr_uid_compare
+apr_get_username             apr_uid_name_get
+apr_compare_users            apr_uid_compare
+

Deleted: vendor/apache/apr/1.5.2/include/apr.h.in
===================================================================
--- vendor/apache/apr/dist/include/apr.h.in	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr.h.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,621 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef APR_H
-#define APR_H
-
-/* GENERATED FILE WARNING!  DO NOT EDIT apr.h
- *
- * You must modify apr.h.in instead.
- *
- * And please, make an effort to stub apr.hw and apr.hnw in the process.
- */
-
-/**
- * @file apr.h
- * @brief APR Platform Definitions
- * @remark This is a generated header generated from include/apr.h.in by
- * ./configure, or copied from include/apr.hw or include/apr.hnw 
- * for Win32 or Netware by those build environments, respectively.
- */
-
-/**
- * @defgroup APR Apache Portability Runtime library
- * @{
- */
-/**
- * @defgroup apr_platform Platform Definitions
- * @{
- * @warning
- * <strong><em>The actual values of macros and typedefs on this page<br>
- * are platform specific and should NOT be relied upon!</em></strong>
- */
-
-/* So that we can use inline on some critical functions, and use
- * GNUC attributes (such as to get -Wall warnings for printf-like
- * functions).  Only do this in gcc 2.7 or later ... it may work
- * on earlier stuff, but why chance it.
- *
- * We've since discovered that the gcc shipped with NeXT systems
- * as "cc" is completely broken.  It claims to be __GNUC__ and so
- * on, but it doesn't implement half of the things that __GNUC__
- * means.  In particular it's missing inline and the __attribute__
- * stuff.  So we hack around it.  PR#1613. -djg
- */
-#if !defined(__GNUC__) || __GNUC__ < 2 || \
-    (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\
-    defined(NEXT)
-#ifndef __attribute__
-#define __attribute__(__x)
-#endif
-#define APR_INLINE
-#define APR_HAS_INLINE           0
-#else
-#define APR_INLINE __inline__
-#define APR_HAS_INLINE           1
-#endif
-
-#define APR_HAVE_ARPA_INET_H     @arpa_ineth@
-#define APR_HAVE_CONIO_H         @conioh@
-#define APR_HAVE_CRYPT_H         @crypth@
-#define APR_HAVE_CTYPE_H         @ctypeh@
-#define APR_HAVE_DIRENT_H        @direnth@
-#define APR_HAVE_ERRNO_H         @errnoh@
-#define APR_HAVE_FCNTL_H         @fcntlh@
-#define APR_HAVE_IO_H            @ioh@
-#define APR_HAVE_LIMITS_H        @limitsh@
-#define APR_HAVE_NETDB_H         @netdbh@
-#define APR_HAVE_NETINET_IN_H    @netinet_inh@
-#define APR_HAVE_NETINET_SCTP_H  @netinet_sctph@
-#define APR_HAVE_NETINET_SCTP_UIO_H @netinet_sctp_uioh@
-#define APR_HAVE_NETINET_TCP_H   @netinet_tcph@
-#define APR_HAVE_PROCESS_H       @processh@
-#define APR_HAVE_PTHREAD_H       @pthreadh@
-#define APR_HAVE_SEMAPHORE_H     @semaphoreh@
-#define APR_HAVE_SIGNAL_H        @signalh@
-#define APR_HAVE_STDARG_H        @stdargh@
-#define APR_HAVE_STDINT_H        @stdint@
-#define APR_HAVE_STDIO_H         @stdioh@
-#define APR_HAVE_STDLIB_H        @stdlibh@
-#define APR_HAVE_STRING_H        @stringh@
-#define APR_HAVE_STRINGS_H       @stringsh@
-#define APR_HAVE_SYS_IOCTL_H     @sys_ioctlh@
-#define APR_HAVE_SYS_SENDFILE_H  @sys_sendfileh@
-#define APR_HAVE_SYS_SIGNAL_H    @sys_signalh@
-#define APR_HAVE_SYS_SOCKET_H    @sys_socketh@
-#define APR_HAVE_SYS_SOCKIO_H    @sys_sockioh@
-#define APR_HAVE_SYS_SYSLIMITS_H @sys_syslimitsh@
-#define APR_HAVE_SYS_TIME_H      @sys_timeh@
-#define APR_HAVE_SYS_TYPES_H     @sys_typesh@
-#define APR_HAVE_SYS_UIO_H       @sys_uioh@
-#define APR_HAVE_SYS_UN_H        @sys_unh@
-#define APR_HAVE_SYS_WAIT_H      @sys_waith@
-#define APR_HAVE_TIME_H          @timeh@
-#define APR_HAVE_UNISTD_H        @unistdh@
-#define APR_HAVE_WINDOWS_H       @windowsh@
-#define APR_HAVE_WINSOCK2_H      @winsock2h@
-
-/** @} */
-/** @} */
-
-/* We don't include our conditional headers within the doxyblocks 
- * or the extern "C" namespace 
- */
-
-#if APR_HAVE_WINDOWS_H
-/* If windows.h was already included, our preferences don't matter.
- * If not, include a restricted set of windows headers to our tastes.
- */
-#ifndef _WINDOWS_
-
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-
-#ifndef _WIN32_WINNT
-/* Restrict the server to a subset of Windows XP header files by default
- */
-#define _WIN32_WINNT 0x0501
-#endif
-
-#ifndef NOUSER
-#define NOUSER
-#endif
-#ifndef NOMCX
-#define NOMCX
-#endif
-#ifndef NOIME
-#define NOIME
-#endif
-
-#include <windows.h>
-/* 
- * Add a _very_few_ declarations missing from the restricted set of headers
- * (If this list becomes extensive, re-enable the required headers above!)
- * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now
- */
-#define SW_HIDE             0
-#ifndef _WIN32_WCE
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#include <mswsock.h>
-#else
-#include <winsock.h>
-#endif
-
-#endif /* ndef _WINDOWS_ */
-#endif /* APR_HAVE_WINDOWS_H */
-
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#if APR_HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS)
-/* C99 7.18.4 requires that stdint.h only exposes INT64_C 
- * and UINT64_C for C++ implementations if this is defined: */
-#define __STDC_CONSTANT_MACROS
-#endif
-
-#if APR_HAVE_STDINT_H
-#include <stdint.h>
-#endif
-
-#if APR_HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-#ifdef OS2
-#define INCL_DOS
-#define INCL_DOSERRORS
-#include <os2.h>
-#endif
-
-/* header files for PATH_MAX, _POSIX_PATH_MAX */
-#if APR_HAVE_LIMITS_H
-#include <limits.h>
-#else
-#if APR_HAVE_SYS_SYSLIMITS_H
-#include <sys/syslimits.h>
-#endif
-#endif
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup apr_platform
- * @ingroup APR 
- * @{
- */
-
-#define APR_HAVE_SHMEM_MMAP_TMP     @havemmaptmp@
-#define APR_HAVE_SHMEM_MMAP_SHM     @havemmapshm@
-#define APR_HAVE_SHMEM_MMAP_ZERO    @havemmapzero@
-#define APR_HAVE_SHMEM_SHMGET_ANON  @haveshmgetanon@
-#define APR_HAVE_SHMEM_SHMGET       @haveshmget@
-#define APR_HAVE_SHMEM_MMAP_ANON    @havemmapanon@
-#define APR_HAVE_SHMEM_BEOS         @havebeosarea@
-
-#define APR_USE_SHMEM_MMAP_TMP     @usemmaptmp@
-#define APR_USE_SHMEM_MMAP_SHM     @usemmapshm@
-#define APR_USE_SHMEM_MMAP_ZERO    @usemmapzero@
-#define APR_USE_SHMEM_SHMGET_ANON  @useshmgetanon@
-#define APR_USE_SHMEM_SHMGET       @useshmget@
-#define APR_USE_SHMEM_MMAP_ANON    @usemmapanon@
-#define APR_USE_SHMEM_BEOS         @usebeosarea@
-
-#define APR_USE_FLOCK_SERIALIZE           @flockser@ 
-#define APR_USE_SYSVSEM_SERIALIZE         @sysvser@
-#define APR_USE_POSIXSEM_SERIALIZE        @posixser@
-#define APR_USE_FCNTL_SERIALIZE           @fcntlser@
-#define APR_USE_PROC_PTHREAD_SERIALIZE    @procpthreadser@ 
-#define APR_USE_PTHREAD_SERIALIZE         @pthreadser@ 
-
-#define APR_HAS_FLOCK_SERIALIZE           @hasflockser@
-#define APR_HAS_SYSVSEM_SERIALIZE         @hassysvser@
-#define APR_HAS_POSIXSEM_SERIALIZE        @hasposixser@
-#define APR_HAS_FCNTL_SERIALIZE           @hasfcntlser@
-#define APR_HAS_PROC_PTHREAD_SERIALIZE    @hasprocpthreadser@
-
-#define APR_PROCESS_LOCK_IS_GLOBAL        @proclockglobal@
-
-#define APR_HAVE_CORKABLE_TCP   @have_corkable_tcp@ 
-#define APR_HAVE_GETRLIMIT      @have_getrlimit@
-#define APR_HAVE_IN_ADDR        @have_in_addr@
-#define APR_HAVE_INET_ADDR      @have_inet_addr@
-#define APR_HAVE_INET_NETWORK   @have_inet_network@
-#define APR_HAVE_IPV6           @have_ipv6@
-#define APR_HAVE_MEMMOVE        @have_memmove@
-#define APR_HAVE_SETRLIMIT      @have_setrlimit@
-#define APR_HAVE_SIGACTION      @have_sigaction@
-#define APR_HAVE_SIGSUSPEND     @have_sigsuspend@
-#define APR_HAVE_SIGWAIT        @have_sigwait@
-#define APR_HAVE_SA_STORAGE     @have_sa_storage@
-#define APR_HAVE_STRCASECMP     @have_strcasecmp@
-#define APR_HAVE_STRDUP         @have_strdup@
-#define APR_HAVE_STRICMP        @have_stricmp@
-#define APR_HAVE_STRNCASECMP    @have_strncasecmp@
-#define APR_HAVE_STRNICMP       @have_strnicmp@
-#define APR_HAVE_STRSTR         @have_strstr@
-#define APR_HAVE_MEMCHR         @have_memchr@
-#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@
-#define APR_HAS_THREADS           @threads@
-#define APR_HAS_SENDFILE          @sendfile@
-#define APR_HAS_MMAP              @mmap@
-#define APR_HAS_FORK              @fork@
-#define APR_HAS_RANDOM            @rand@
-#define APR_HAS_OTHER_CHILD       @oc@
-#define APR_HAS_DSO               @aprdso@
-#define APR_HAS_SO_ACCEPTFILTER   @acceptfilter@
-#define APR_HAS_UNICODE_FS        @have_unicode_fs@
-#define APR_HAS_PROC_INVOKED      @have_proc_invoked@
-#define APR_HAS_USER              @apr_has_user@
-#define APR_HAS_LARGE_FILES       @aprlfs@
-#define APR_HAS_XTHREAD_FILES     @apr_has_xthread_files@
-#define APR_HAS_OS_UUID           @osuuid@
-
-#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD @apr_procattr_user_set_requires_password@
-
-/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible
- * to poll on files/pipes.
- */
-#define APR_FILES_AS_SOCKETS      @file_as_socket@
-
-/* This macro indicates whether or not EBCDIC is the native character set.
- */
-#define APR_CHARSET_EBCDIC        @apr_charset_ebcdic@
-
-/* If we have a TCP implementation that can be "corked", what flag
- * do we use?
- */
-#define APR_TCP_NOPUSH_FLAG       @apr_tcp_nopush_flag@
-
-/* Is the TCP_NODELAY socket option inherited from listening sockets?
-*/
-#define APR_TCP_NODELAY_INHERITED @tcp_nodelay_inherited@
-
-/* Is the O_NONBLOCK flag inherited from listening sockets?
-*/
-#define APR_O_NONBLOCK_INHERITED @o_nonblock_inherited@
-
-/* Typedefs that APR needs. */
-
-typedef  unsigned char           apr_byte_t;
-
-typedef  @short_value@           apr_int16_t;
-typedef  unsigned @short_value@  apr_uint16_t;
-
-typedef  @int_value@             apr_int32_t;
-typedef  unsigned @int_value@    apr_uint32_t;
-
-#define APR_SIZEOF_VOIDP @voidp_size@
-
-/*
- * Darwin 10's default compiler (gcc42) builds for both 64 and
- * 32 bit architectures unless specifically told not to.
- * In those cases, we need to override types depending on how
- * we're being built at compile time.
- * NOTE: This is an ugly work-around for Darwin's
- * concept of universal binaries, a single package
- * (executable, lib, etc...) which contains both 32
- * and 64 bit versions. The issue is that if APR is
- * built universally, if something else is compiled
- * against it, some bit sizes will depend on whether
- * it is 32 or 64 bit. This is determined by the __LP64__
- * flag. Since we need to support both, we have to
- * handle OS X unqiuely.
- */
-#ifdef DARWIN_10
-#undef APR_SIZEOF_VOIDP
-#undef INT64_C
-#undef UINT64_C
-#ifdef __LP64__
- typedef  long            apr_int64_t;
- typedef  unsigned long   apr_uint64_t;
- #define APR_SIZEOF_VOIDP     8
- #define INT64_C(v)   (v ## L)
- #define UINT64_C(v)  (v ## UL)
-#else
- typedef  long long            apr_int64_t;
- typedef  unsigned long long   apr_uint64_t;
- #define APR_SIZEOF_VOIDP     4
- #define INT64_C(v)   (v ## LL)
- #define UINT64_C(v)  (v ## ULL)
-#endif
-#else
- typedef  @long_value@            apr_int64_t;
- typedef  unsigned @long_value@   apr_uint64_t;
-#endif
-
-typedef  @size_t_value@          apr_size_t;
-typedef  @ssize_t_value@         apr_ssize_t;
-typedef  @off_t_value@           apr_off_t;
-typedef  @socklen_t_value@       apr_socklen_t;
-typedef  @ino_t_value@           apr_ino_t;
-
-#if APR_SIZEOF_VOIDP == 8
-typedef  apr_uint64_t            apr_uintptr_t;
-#else
-typedef  apr_uint32_t            apr_uintptr_t;
-#endif
-
-/* Are we big endian? */
-#define APR_IS_BIGENDIAN	@bigendian@
-
-/* Mechanisms to properly type numeric literals */
- at int64_literal@
- at uint64_literal@
-
-#ifdef INT16_MIN
-#define APR_INT16_MIN   INT16_MIN
-#else
-#define APR_INT16_MIN   (-0x7fff - 1)
-#endif
-
-#ifdef INT16_MAX
-#define APR_INT16_MAX  INT16_MAX
-#else
-#define APR_INT16_MAX   (0x7fff)
-#endif
-
-#ifdef UINT16_MAX
-#define APR_UINT16_MAX  UINT16_MAX
-#else
-#define APR_UINT16_MAX  (0xffff)
-#endif
-
-#ifdef INT32_MIN
-#define APR_INT32_MIN   INT32_MIN
-#else
-#define APR_INT32_MIN   (-0x7fffffff - 1)
-#endif
-
-#ifdef INT32_MAX
-#define APR_INT32_MAX  INT32_MAX
-#else
-#define APR_INT32_MAX  0x7fffffff
-#endif
-
-#ifdef UINT32_MAX
-#define APR_UINT32_MAX  UINT32_MAX
-#else
-#define APR_UINT32_MAX  (0xffffffffU)
-#endif
-
-#ifdef INT64_MIN
-#define APR_INT64_MIN   INT64_MIN
-#else
-#define APR_INT64_MIN   (APR_INT64_C(-0x7fffffffffffffff) - 1)
-#endif
-
-#ifdef INT64_MAX
-#define APR_INT64_MAX   INT64_MAX
-#else
-#define APR_INT64_MAX   APR_INT64_C(0x7fffffffffffffff)
-#endif
-
-#ifdef UINT64_MAX
-#define APR_UINT64_MAX  UINT64_MAX
-#else
-#define APR_UINT64_MAX  APR_UINT64_C(0xffffffffffffffff)
-#endif
-
-#define APR_SIZE_MAX    (~((apr_size_t)0))
-
-
-/* Definitions that APR programs need to work properly. */
-
-/**
- * APR public API wrap for C++ compilers.
- */
-#ifdef __cplusplus
-#define APR_BEGIN_DECLS     extern "C" {
-#define APR_END_DECLS       }
-#else
-#define APR_BEGIN_DECLS
-#define APR_END_DECLS
-#endif
-
-/** 
- * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 
- * so that they follow the platform's calling convention.
- * <PRE>
- *
- * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
- *
- * </PRE>
- */
-#define APR_THREAD_FUNC       @apr_thread_func@
-
-/**
- * The public APR functions are declared with APR_DECLARE(), so they may
- * use the most appropriate calling convention.  Public APR functions with 
- * variable arguments must use APR_DECLARE_NONSTD().
- *
- * @remark Both the declaration and implementations must use the same macro.
- *
- * <PRE>
- * APR_DECLARE(rettype) apr_func(args)
- * </PRE>
- * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
- * @remark Note that when APR compiles the library itself, it passes the 
- * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 
- * to export public symbols from the dynamic library build.\n
- * The user must define the APR_DECLARE_STATIC when compiling to target
- * the static APR library on some platforms (e.g. Win32.)  The public symbols 
- * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
- * By default, compiling an application and including the APR public
- * headers, without defining APR_DECLARE_STATIC, will prepare the code to be
- * linked to the dynamic library.
- */
-#define APR_DECLARE(type)            type 
-
-/**
- * The public APR functions using variable arguments are declared with 
- * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
- * @see APR_DECLARE @see APR_DECLARE_DATA
- * @remark Both the declaration and implementations must use the same macro.
- * <PRE>
- *
- * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
- *
- * </PRE>
- */
-#define APR_DECLARE_NONSTD(type)     type
-
-/**
- * The public APR variables are declared with AP_MODULE_DECLARE_DATA.
- * This assures the appropriate indirection is invoked at compile time.
- * @see APR_DECLARE @see APR_DECLARE_NONSTD
- * @remark Note that the declaration and implementations use different forms,
- * but both must include the macro.
- * 
- * <PRE>
- *
- * extern APR_DECLARE_DATA type apr_variable;\n
- * APR_DECLARE_DATA type apr_variable = value;
- *
- * </PRE>
- */
-#define APR_DECLARE_DATA
-
-/* Define APR_SSIZE_T_FMT.  
- * If ssize_t is an integer we define it to be "d",
- * if ssize_t is a long int we define it to be "ld",
- * if ssize_t is neither we declare an error here.
- * I looked for a better way to define this here, but couldn't find one, so
- * to find the logic for this definition search for "ssize_t_fmt" in
- * configure.in.
- */
-
- at ssize_t_fmt@
-
-/* And APR_SIZE_T_FMT */
- at size_t_fmt@
-
-/* And APR_OFF_T_FMT */
- at off_t_fmt@
-
-/* And APR_PID_T_FMT */
- at pid_t_fmt@
-
-/* And APR_INT64_T_FMT */
- at int64_t_fmt@
-
-/* And APR_UINT64_T_FMT */
- at uint64_t_fmt@
-
-/* And APR_UINT64_T_HEX_FMT */
- at uint64_t_hex_fmt@
-
-/*
- * Ensure we work with universal binaries on Darwin
- */
-#ifdef DARWIN_10
-
-#undef APR_HAS_LARGE_FILES
-#undef APR_SIZEOF_VOIDP
-#undef APR_INT64_T_FMT
-#undef APR_UINT64_T_FMT
-#undef APR_UINT64_T_HEX_FMT
-
-#ifdef __LP64__
- #define APR_HAS_LARGE_FILES  0
- #define APR_SIZEOF_VOIDP     8
- #define APR_INT64_T_FMT      "ld"
- #define APR_UINT64_T_FMT     "lu"
- #define APR_UINT64_T_HEX_FMT "lx"
-#else
- #define APR_HAS_LARGE_FILES  1
- #define APR_SIZEOF_VOIDP     4
- #define APR_INT64_T_FMT      "lld"
- #define APR_UINT64_T_FMT     "llu"
- #define APR_UINT64_T_HEX_FMT "llx"
-#endif
-
-#undef APR_IS_BIGENDIAN
-#ifdef __BIG_ENDIAN__
- #define APR_IS_BIGENDIAN	1
-#else
- #define APR_IS_BIGENDIAN	0
-#endif
-
-#undef APR_OFF_T_FMT
-#define APR_OFF_T_FMT "lld"
-
-#endif /* DARWIN_10 */
-
-/* Does the proc mutex lock threads too */
-#define APR_PROC_MUTEX_IS_GLOBAL      @proc_mutex_is_global@
-
-/* Local machine definition for console and log output. */
-#define APR_EOL_STR              "@eolstr@"
-
-#if APR_HAVE_SYS_WAIT_H
-#ifdef WEXITSTATUS
-#define apr_wait_t       int
-#else
-#define apr_wait_t       union wait
-#define WEXITSTATUS(status)    (int)((status).w_retcode)
-#define WTERMSIG(status)       (int)((status).w_termsig)
-#endif /* !WEXITSTATUS */
-#elif defined(__MINGW32__)
-typedef int apr_wait_t;
-#endif /* HAVE_SYS_WAIT_H */
-
-#if defined(PATH_MAX)
-#define APR_PATH_MAX       PATH_MAX
-#elif defined(_POSIX_PATH_MAX)
-#define APR_PATH_MAX       _POSIX_PATH_MAX
-#else
-#error no decision has been made on APR_PATH_MAX for your platform
-#endif
-
-#define APR_DSOPATH "@shlibpath_var@"
-
-/** @} */
-
-/* Definitions that only Win32 programs need to compile properly. */
-
-/* XXX These simply don't belong here, perhaps in apr_portable.h
- * based on some APR_HAVE_PID/GID/UID?
- */
-#ifdef __MINGW32__
-#ifndef __GNUC__
-typedef  int         pid_t;
-#endif
-typedef  int         uid_t;
-typedef  int         gid_t;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* APR_H */

Copied: vendor/apache/apr/1.5.2/include/apr.h.in (from rev 9273, vendor/apache/apr/dist/include/apr.h.in)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr.h.in	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr.h.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,637 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef APR_H
+#define APR_H
+
+/* GENERATED FILE WARNING!  DO NOT EDIT apr.h
+ *
+ * You must modify apr.h.in instead.
+ *
+ * And please, make an effort to stub apr.hw and apr.hnw in the process.
+ */
+
+/**
+ * @file apr.h
+ * @brief APR Platform Definitions
+ * @remark This is a generated header generated from include/apr.h.in by
+ * ./configure, or copied from include/apr.hw or include/apr.hnw 
+ * for Win32 or Netware by those build environments, respectively.
+ */
+
+/**
+ * @defgroup APR Apache Portability Runtime library
+ * @{
+ */
+/**
+ * @defgroup apr_platform Platform Definitions
+ * @{
+ * @warning
+ * <strong><em>The actual values of macros and typedefs on this page<br>
+ * are platform specific and should NOT be relied upon!</em></strong>
+ */
+
+/* So that we can use inline on some critical functions, and use
+ * GNUC attributes (such as to get -Wall warnings for printf-like
+ * functions).  Only do this in gcc 2.7 or later ... it may work
+ * on earlier stuff, but why chance it.
+ *
+ * We've since discovered that the gcc shipped with NeXT systems
+ * as "cc" is completely broken.  It claims to be __GNUC__ and so
+ * on, but it doesn't implement half of the things that __GNUC__
+ * means.  In particular it's missing inline and the __attribute__
+ * stuff.  So we hack around it.  PR#1613. -djg
+ */
+#if !defined(__GNUC__) || __GNUC__ < 2 || \
+    (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\
+    defined(NEXT)
+#ifndef __attribute__
+#define __attribute__(__x)
+#endif
+#define APR_INLINE
+#define APR_HAS_INLINE           0
+#else
+#define APR_INLINE __inline__
+#define APR_HAS_INLINE           1
+#endif
+
+#define APR_HAVE_ARPA_INET_H     @arpa_ineth@
+#define APR_HAVE_CONIO_H         @conioh@
+#define APR_HAVE_CRYPT_H         @crypth@
+#define APR_HAVE_CTYPE_H         @ctypeh@
+#define APR_HAVE_DIRENT_H        @direnth@
+#define APR_HAVE_ERRNO_H         @errnoh@
+#define APR_HAVE_FCNTL_H         @fcntlh@
+#define APR_HAVE_IO_H            @ioh@
+#define APR_HAVE_LIMITS_H        @limitsh@
+#define APR_HAVE_NETDB_H         @netdbh@
+#define APR_HAVE_NETINET_IN_H    @netinet_inh@
+#define APR_HAVE_NETINET_SCTP_H  @netinet_sctph@
+#define APR_HAVE_NETINET_SCTP_UIO_H @netinet_sctp_uioh@
+#define APR_HAVE_NETINET_TCP_H   @netinet_tcph@
+#define APR_HAVE_PROCESS_H       @processh@
+#define APR_HAVE_PTHREAD_H       @pthreadh@
+#define APR_HAVE_SEMAPHORE_H     @semaphoreh@
+#define APR_HAVE_SIGNAL_H        @signalh@
+#define APR_HAVE_STDARG_H        @stdargh@
+#define APR_HAVE_STDINT_H        @stdint@
+#define APR_HAVE_STDIO_H         @stdioh@
+#define APR_HAVE_STDLIB_H        @stdlibh@
+#define APR_HAVE_STRING_H        @stringh@
+#define APR_HAVE_STRINGS_H       @stringsh@
+#define APR_HAVE_SYS_IOCTL_H     @sys_ioctlh@
+#define APR_HAVE_SYS_SENDFILE_H  @sys_sendfileh@
+#define APR_HAVE_SYS_SIGNAL_H    @sys_signalh@
+#define APR_HAVE_SYS_SOCKET_H    @sys_socketh@
+#define APR_HAVE_SYS_SOCKIO_H    @sys_sockioh@
+#define APR_HAVE_SYS_SYSLIMITS_H @sys_syslimitsh@
+#define APR_HAVE_SYS_TIME_H      @sys_timeh@
+#define APR_HAVE_SYS_TYPES_H     @sys_typesh@
+#define APR_HAVE_SYS_UIO_H       @sys_uioh@
+#define APR_HAVE_SYS_UN_H        @sys_unh@
+#define APR_HAVE_SYS_WAIT_H      @sys_waith@
+#define APR_HAVE_TIME_H          @timeh@
+#define APR_HAVE_UNISTD_H        @unistdh@
+#define APR_HAVE_WINDOWS_H       @windowsh@
+#define APR_HAVE_WINSOCK2_H      @winsock2h@
+
+/** @} */
+/** @} */
+
+/* We don't include our conditional headers within the doxyblocks 
+ * or the extern "C" namespace 
+ */
+
+#if APR_HAVE_WINDOWS_H && defined(WIN32)
+/* If windows.h was already included, our preferences don't matter.
+ * If not, include a restricted set of windows headers to our tastes.
+ */
+#ifndef _WINDOWS_
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#ifndef _WIN32_WINNT
+/* Restrict the server to a subset of Windows XP header files by default
+ */
+#define _WIN32_WINNT 0x0501
+#endif
+
+#ifndef NOUSER
+#define NOUSER
+#endif
+#ifndef NOMCX
+#define NOMCX
+#endif
+#ifndef NOIME
+#define NOIME
+#endif
+
+#include <windows.h>
+/* 
+ * Add a _very_few_ declarations missing from the restricted set of headers
+ * (If this list becomes extensive, re-enable the required headers above!)
+ * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now
+ */
+#define SW_HIDE             0
+#ifndef _WIN32_WCE
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <mswsock.h>
+#else
+#include <winsock.h>
+#endif
+
+#endif /* ndef _WINDOWS_ */
+#endif /* APR_HAVE_WINDOWS_H */
+
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#if APR_HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS)
+/* C99 7.18.4 requires that stdint.h only exposes INT64_C 
+ * and UINT64_C for C++ implementations if this is defined: */
+#define __STDC_CONSTANT_MACROS
+#endif
+
+#if APR_HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#if APR_HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#ifdef OS2
+#define INCL_DOS
+#define INCL_DOSERRORS
+#include <os2.h>
+#endif
+
+/* header files for PATH_MAX, _POSIX_PATH_MAX */
+#if APR_HAVE_LIMITS_H
+#include <limits.h>
+#else
+#if APR_HAVE_SYS_SYSLIMITS_H
+#include <sys/syslimits.h>
+#endif
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup apr_platform
+ * @ingroup APR 
+ * @{
+ */
+
+#define APR_HAVE_SHMEM_MMAP_TMP     @havemmaptmp@
+#define APR_HAVE_SHMEM_MMAP_SHM     @havemmapshm@
+#define APR_HAVE_SHMEM_MMAP_ZERO    @havemmapzero@
+#define APR_HAVE_SHMEM_SHMGET_ANON  @haveshmgetanon@
+#define APR_HAVE_SHMEM_SHMGET       @haveshmget@
+#define APR_HAVE_SHMEM_MMAP_ANON    @havemmapanon@
+#define APR_HAVE_SHMEM_BEOS         @havebeosarea@
+
+#define APR_USE_SHMEM_MMAP_TMP     @usemmaptmp@
+#define APR_USE_SHMEM_MMAP_SHM     @usemmapshm@
+#define APR_USE_SHMEM_MMAP_ZERO    @usemmapzero@
+#define APR_USE_SHMEM_SHMGET_ANON  @useshmgetanon@
+#define APR_USE_SHMEM_SHMGET       @useshmget@
+#define APR_USE_SHMEM_MMAP_ANON    @usemmapanon@
+#define APR_USE_SHMEM_BEOS         @usebeosarea@
+
+#define APR_USE_FLOCK_SERIALIZE           @flockser@ 
+#define APR_USE_SYSVSEM_SERIALIZE         @sysvser@
+#define APR_USE_POSIXSEM_SERIALIZE        @posixser@
+#define APR_USE_FCNTL_SERIALIZE           @fcntlser@
+#define APR_USE_PROC_PTHREAD_SERIALIZE    @procpthreadser@ 
+#define APR_USE_PTHREAD_SERIALIZE         @pthreadser@ 
+
+#define APR_HAS_FLOCK_SERIALIZE           @hasflockser@
+#define APR_HAS_SYSVSEM_SERIALIZE         @hassysvser@
+#define APR_HAS_POSIXSEM_SERIALIZE        @hasposixser@
+#define APR_HAS_FCNTL_SERIALIZE           @hasfcntlser@
+#define APR_HAS_PROC_PTHREAD_SERIALIZE    @hasprocpthreadser@
+
+#define APR_PROCESS_LOCK_IS_GLOBAL        @proclockglobal@
+
+#define APR_HAVE_CORKABLE_TCP   @have_corkable_tcp@ 
+#define APR_HAVE_GETRLIMIT      @have_getrlimit@
+#define APR_HAVE_IN_ADDR        @have_in_addr@
+#define APR_HAVE_INET_ADDR      @have_inet_addr@
+#define APR_HAVE_INET_NETWORK   @have_inet_network@
+#define APR_HAVE_IPV6           @have_ipv6@
+#define APR_HAVE_MEMMOVE        @have_memmove@
+#define APR_HAVE_SETRLIMIT      @have_setrlimit@
+#define APR_HAVE_SIGACTION      @have_sigaction@
+#define APR_HAVE_SIGSUSPEND     @have_sigsuspend@
+#define APR_HAVE_SIGWAIT        @have_sigwait@
+#define APR_HAVE_SA_STORAGE     @have_sa_storage@
+#define APR_HAVE_STRCASECMP     @have_strcasecmp@
+#define APR_HAVE_STRDUP         @have_strdup@
+#define APR_HAVE_STRICMP        @have_stricmp@
+#define APR_HAVE_STRNCASECMP    @have_strncasecmp@
+#define APR_HAVE_STRNICMP       @have_strnicmp@
+#define APR_HAVE_STRSTR         @have_strstr@
+#define APR_HAVE_MEMCHR         @have_memchr@
+#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@
+#define APR_HAS_THREADS           @threads@
+#define APR_HAS_SENDFILE          @sendfile@
+#define APR_HAS_MMAP              @mmap@
+#define APR_HAS_FORK              @fork@
+#define APR_HAS_RANDOM            @rand@
+#define APR_HAS_OTHER_CHILD       @oc@
+#define APR_HAS_DSO               @aprdso@
+#define APR_HAS_SO_ACCEPTFILTER   @acceptfilter@
+#define APR_HAS_UNICODE_FS        @have_unicode_fs@
+#define APR_HAS_PROC_INVOKED      @have_proc_invoked@
+#define APR_HAS_USER              @apr_has_user@
+#define APR_HAS_LARGE_FILES       @aprlfs@
+#define APR_HAS_XTHREAD_FILES     @apr_has_xthread_files@
+#define APR_HAS_OS_UUID           @osuuid@
+
+#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD @apr_procattr_user_set_requires_password@
+
+/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible
+ * to poll on files/pipes.
+ */
+#define APR_FILES_AS_SOCKETS      @file_as_socket@
+
+/* This macro indicates whether or not EBCDIC is the native character set.
+ */
+#define APR_CHARSET_EBCDIC        @apr_charset_ebcdic@
+
+/* If we have a TCP implementation that can be "corked", what flag
+ * do we use?
+ */
+#define APR_TCP_NOPUSH_FLAG       @apr_tcp_nopush_flag@
+
+/* Is the TCP_NODELAY socket option inherited from listening sockets?
+*/
+#define APR_TCP_NODELAY_INHERITED @tcp_nodelay_inherited@
+
+/* Is the O_NONBLOCK flag inherited from listening sockets?
+*/
+#define APR_O_NONBLOCK_INHERITED @o_nonblock_inherited@
+
+/* Typedefs that APR needs. */
+
+typedef  unsigned char           apr_byte_t;
+
+typedef  @short_value@           apr_int16_t;
+typedef  unsigned @short_value@  apr_uint16_t;
+
+typedef  @int_value@             apr_int32_t;
+typedef  unsigned @int_value@    apr_uint32_t;
+
+#define APR_SIZEOF_VOIDP @voidp_size@
+
+/*
+ * Darwin 10's default compiler (gcc42) builds for both 64 and
+ * 32 bit architectures unless specifically told not to.
+ * In those cases, we need to override types depending on how
+ * we're being built at compile time.
+ * NOTE: This is an ugly work-around for Darwin's
+ * concept of universal binaries, a single package
+ * (executable, lib, etc...) which contains both 32
+ * and 64 bit versions. The issue is that if APR is
+ * built universally, if something else is compiled
+ * against it, some bit sizes will depend on whether
+ * it is 32 or 64 bit. This is determined by the __LP64__
+ * flag. Since we need to support both, we have to
+ * handle OS X unqiuely.
+ */
+#ifdef DARWIN_10
+#undef APR_SIZEOF_VOIDP
+#undef INT64_C
+#undef UINT64_C
+#ifdef __LP64__
+ typedef  long            apr_int64_t;
+ typedef  unsigned long   apr_uint64_t;
+ #define APR_SIZEOF_VOIDP     8
+ #define INT64_C(v)   (v ## L)
+ #define UINT64_C(v)  (v ## UL)
+#else
+ typedef  long long            apr_int64_t;
+ typedef  unsigned long long   apr_uint64_t;
+ #define APR_SIZEOF_VOIDP     4
+ #define INT64_C(v)   (v ## LL)
+ #define UINT64_C(v)  (v ## ULL)
+#endif
+#else
+ typedef  @long_value@            apr_int64_t;
+ typedef  unsigned @long_value@   apr_uint64_t;
+#endif
+
+typedef  @size_t_value@          apr_size_t;
+typedef  @ssize_t_value@         apr_ssize_t;
+typedef  @off_t_value@           apr_off_t;
+typedef  @socklen_t_value@       apr_socklen_t;
+typedef  @ino_t_value@           apr_ino_t;
+
+#if APR_SIZEOF_VOIDP == 8
+typedef  apr_uint64_t            apr_uintptr_t;
+#else
+typedef  apr_uint32_t            apr_uintptr_t;
+#endif
+
+/* Are we big endian? */
+#define APR_IS_BIGENDIAN	@bigendian@
+
+/* Mechanisms to properly type numeric literals */
+ at int64_literal@
+ at uint64_literal@
+
+#ifdef INT16_MIN
+#define APR_INT16_MIN   INT16_MIN
+#else
+#define APR_INT16_MIN   (-0x7fff - 1)
+#endif
+
+#ifdef INT16_MAX
+#define APR_INT16_MAX  INT16_MAX
+#else
+#define APR_INT16_MAX   (0x7fff)
+#endif
+
+#ifdef UINT16_MAX
+#define APR_UINT16_MAX  UINT16_MAX
+#else
+#define APR_UINT16_MAX  (0xffff)
+#endif
+
+#ifdef INT32_MIN
+#define APR_INT32_MIN   INT32_MIN
+#else
+#define APR_INT32_MIN   (-0x7fffffff - 1)
+#endif
+
+#ifdef INT32_MAX
+#define APR_INT32_MAX  INT32_MAX
+#else
+#define APR_INT32_MAX  0x7fffffff
+#endif
+
+#ifdef UINT32_MAX
+#define APR_UINT32_MAX  UINT32_MAX
+#else
+#define APR_UINT32_MAX  (0xffffffffU)
+#endif
+
+#ifdef INT64_MIN
+#define APR_INT64_MIN   INT64_MIN
+#else
+#define APR_INT64_MIN   (APR_INT64_C(-0x7fffffffffffffff) - 1)
+#endif
+
+#ifdef INT64_MAX
+#define APR_INT64_MAX   INT64_MAX
+#else
+#define APR_INT64_MAX   APR_INT64_C(0x7fffffffffffffff)
+#endif
+
+#ifdef UINT64_MAX
+#define APR_UINT64_MAX  UINT64_MAX
+#else
+#define APR_UINT64_MAX  APR_UINT64_C(0xffffffffffffffff)
+#endif
+
+#define APR_SIZE_MAX    (~((apr_size_t)0))
+
+
+/* Definitions that APR programs need to work properly. */
+
+/**
+ * APR public API wrap for C++ compilers.
+ */
+#ifdef __cplusplus
+#define APR_BEGIN_DECLS     extern "C" {
+#define APR_END_DECLS       }
+#else
+#define APR_BEGIN_DECLS
+#define APR_END_DECLS
+#endif
+
+/** 
+ * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 
+ * so that they follow the platform's calling convention.
+ * <PRE>
+ *
+ * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
+ *
+ * </PRE>
+ */
+#define APR_THREAD_FUNC       @apr_thread_func@
+
+#if defined(DOXYGEN) || !defined(WIN32)
+
+/**
+ * The public APR functions are declared with APR_DECLARE(), so they may
+ * use the most appropriate calling convention.  Public APR functions with 
+ * variable arguments must use APR_DECLARE_NONSTD().
+ *
+ * @remark Both the declaration and implementations must use the same macro.
+ *
+ * <PRE>
+ * APR_DECLARE(rettype) apr_func(args)
+ * </PRE>
+ * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
+ * @remark Note that when APR compiles the library itself, it passes the 
+ * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 
+ * to export public symbols from the dynamic library build.\n
+ * The user must define the APR_DECLARE_STATIC when compiling to target
+ * the static APR library on some platforms (e.g. Win32.)  The public symbols 
+ * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
+ * By default, compiling an application and including the APR public
+ * headers, without defining APR_DECLARE_STATIC, will prepare the code to be
+ * linked to the dynamic library.
+ */
+#define APR_DECLARE(type)            type 
+
+/**
+ * The public APR functions using variable arguments are declared with 
+ * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
+ * @see APR_DECLARE @see APR_DECLARE_DATA
+ * @remark Both the declaration and implementations must use the same macro.
+ * <PRE>
+ *
+ * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
+ *
+ * </PRE>
+ */
+#define APR_DECLARE_NONSTD(type)     type
+
+/**
+ * The public APR variables are declared with AP_MODULE_DECLARE_DATA.
+ * This assures the appropriate indirection is invoked at compile time.
+ * @see APR_DECLARE @see APR_DECLARE_NONSTD
+ * @remark Note that the declaration and implementations use different forms,
+ * but both must include the macro.
+ * 
+ * <PRE>
+ *
+ * extern APR_DECLARE_DATA type apr_variable;\n
+ * APR_DECLARE_DATA type apr_variable = value;
+ *
+ * </PRE>
+ */
+#define APR_DECLARE_DATA
+
+#elif defined(APR_DECLARE_STATIC)
+#define APR_DECLARE(type)            type __stdcall
+#define APR_DECLARE_NONSTD(type)     type __cdecl
+#define APR_DECLARE_DATA
+#elif defined(APR_DECLARE_EXPORT)
+#define APR_DECLARE(type)            __declspec(dllexport) type __stdcall
+#define APR_DECLARE_NONSTD(type)     __declspec(dllexport) type __cdecl
+#define APR_DECLARE_DATA             __declspec(dllexport)
+#else
+#define APR_DECLARE(type)            __declspec(dllimport) type __stdcall
+#define APR_DECLARE_NONSTD(type)     __declspec(dllimport) type __cdecl
+#define APR_DECLARE_DATA             __declspec(dllimport)
+#endif
+
+/* Define APR_SSIZE_T_FMT.  
+ * If ssize_t is an integer we define it to be "d",
+ * if ssize_t is a long int we define it to be "ld",
+ * if ssize_t is neither we declare an error here.
+ * I looked for a better way to define this here, but couldn't find one, so
+ * to find the logic for this definition search for "ssize_t_fmt" in
+ * configure.in.
+ */
+
+ at ssize_t_fmt@
+
+/* And APR_SIZE_T_FMT */
+ at size_t_fmt@
+
+/* And APR_OFF_T_FMT */
+ at off_t_fmt@
+
+/* And APR_PID_T_FMT */
+ at pid_t_fmt@
+
+/* And APR_INT64_T_FMT */
+ at int64_t_fmt@
+
+/* And APR_UINT64_T_FMT */
+ at uint64_t_fmt@
+
+/* And APR_UINT64_T_HEX_FMT */
+ at uint64_t_hex_fmt@
+
+/*
+ * Ensure we work with universal binaries on Darwin
+ */
+#ifdef DARWIN_10
+
+#undef APR_HAS_LARGE_FILES
+#undef APR_SIZEOF_VOIDP
+#undef APR_INT64_T_FMT
+#undef APR_UINT64_T_FMT
+#undef APR_UINT64_T_HEX_FMT
+
+#ifdef __LP64__
+ #define APR_HAS_LARGE_FILES  0
+ #define APR_SIZEOF_VOIDP     8
+ #define APR_INT64_T_FMT      "ld"
+ #define APR_UINT64_T_FMT     "lu"
+ #define APR_UINT64_T_HEX_FMT "lx"
+#else
+ #define APR_HAS_LARGE_FILES  1
+ #define APR_SIZEOF_VOIDP     4
+ #define APR_INT64_T_FMT      "lld"
+ #define APR_UINT64_T_FMT     "llu"
+ #define APR_UINT64_T_HEX_FMT "llx"
+#endif
+
+#undef APR_IS_BIGENDIAN
+#ifdef __BIG_ENDIAN__
+ #define APR_IS_BIGENDIAN	1
+#else
+ #define APR_IS_BIGENDIAN	0
+#endif
+
+#undef APR_OFF_T_FMT
+#define APR_OFF_T_FMT "lld"
+
+#endif /* DARWIN_10 */
+
+/* Does the proc mutex lock threads too */
+#define APR_PROC_MUTEX_IS_GLOBAL      @proc_mutex_is_global@
+
+/* Local machine definition for console and log output. */
+#define APR_EOL_STR              "@eolstr@"
+
+#if APR_HAVE_SYS_WAIT_H
+#ifdef WEXITSTATUS
+#define apr_wait_t       int
+#else
+#define apr_wait_t       union wait
+#define WEXITSTATUS(status)    (int)((status).w_retcode)
+#define WTERMSIG(status)       (int)((status).w_termsig)
+#endif /* !WEXITSTATUS */
+#elif defined(__MINGW32__)
+typedef int apr_wait_t;
+#endif /* HAVE_SYS_WAIT_H */
+
+#if defined(PATH_MAX)
+#define APR_PATH_MAX       PATH_MAX
+#elif defined(_POSIX_PATH_MAX)
+#define APR_PATH_MAX       _POSIX_PATH_MAX
+#else
+#error no decision has been made on APR_PATH_MAX for your platform
+#endif
+
+#define APR_DSOPATH "@shlibpath_var@"
+
+/** @} */
+
+/* Definitions that only Win32 programs need to compile properly. */
+
+/* XXX These simply don't belong here, perhaps in apr_portable.h
+ * based on some APR_HAVE_PID/GID/UID?
+ */
+#ifdef __MINGW32__
+#ifndef __GNUC__
+typedef  int         pid_t;
+#endif
+typedef  int         uid_t;
+typedef  int         gid_t;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* APR_H */

Copied: vendor/apache/apr/1.5.2/include/apr.hwc (from rev 9273, vendor/apache/apr/dist/include/apr.hwc)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr.hwc	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr.hwc	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,641 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef APR_H
+#define APR_H
+
+/* GENERATED FILE WARNING!  DO NOT EDIT apr.h
+ *
+ * You must modify apr.hwc instead.
+ *
+ * And please, make an effort to stub apr.hnw and apr.h.in in the process.
+ *
+ * This is the Win32 specific version of apr.h.  It is copied from
+ * apr.hw by the apr.dsp and libapr.dsp projects. 
+ */
+
+/**
+ * @file apr.h
+ * @brief APR Platform Definitions
+ * @remark This is a generated header generated from include/apr.h.in by
+ * ./configure, or copied from include/apr.hw or include/apr.hnw 
+ * for Win32 or Netware by those build environments, respectively.
+ */
+
+/* Make sure we have our platform identifier macro defined we ask for later.
+ */
+#if defined(_WIN32) && !defined(WIN32)
+#define WIN32 1
+#endif
+
+#if defined(WIN32) || defined(DOXYGEN)
+
+/* Ignore most warnings (back down to /W3) for poorly constructed headers
+ */
+#if defined(_MSC_VER) && _MSC_VER >= 1200
+#pragma warning(push, 3)
+#endif
+
+/* disable or reduce the frequency of...
+ *   C4057: indirection to slightly different base types
+ *   C4075: slight indirection changes (unsigned short* vs short[])
+ *   C4100: unreferenced formal parameter
+ *   C4127: conditional expression is constant
+ *   C4163: '_rotl64' : not available as an intrinsic function
+ *   C4201: nonstandard extension nameless struct/unions
+ *   C4244: int to char/short - precision loss
+ *   C4514: unreferenced inline function removed
+ */
+#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244)
+
+/* Ignore Microsoft's interpretation of secure development
+ * and the POSIX string handling API
+ */
+#if defined(_MSC_VER) && _MSC_VER >= 1400
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+#pragma warning(disable: 4996)
+#endif
+
+/* Has windows.h already been included?  If so, our preferences don't matter,
+ * but we will still need the winsock things no matter what was included.
+ * If not, include a restricted set of windows headers to our tastes.
+ */
+#ifndef _WINDOWS_
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT @win32_winnt_str@
+#endif
+#ifndef NOUSER
+#define NOUSER
+#endif
+#ifndef NOMCX
+#define NOMCX
+#endif
+#ifndef NOIME
+#define NOIME
+#endif
+#include <windows.h>
+/* 
+ * Add a _very_few_ declarations missing from the restricted set of headers
+ * (If this list becomes extensive, re-enable the required headers above!)
+ * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now
+ */
+#define SW_HIDE             0
+#ifndef _WIN32_WCE
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <mswsock.h>
+#else
+#include <winsock.h>
+#endif
+#endif /* !_WINDOWS_ */
+
+/**
+ * @defgroup APR Apache Portability Runtime library
+ * @{
+ */
+/**
+ * @defgroup apr_platform Platform Definitions
+ * @{
+ * @warning
+ * <strong><em>The actual values of macros and typedefs on this page<br>
+ * are platform specific and should NOT be relied upon!</em></strong>
+ */
+
+#define APR_INLINE __inline
+#define APR_HAS_INLINE          1
+#if !defined(__GNUC__) && !defined(__attribute__)
+#define __attribute__(__x)
+#endif
+
+#ifndef _WIN32_WCE
+#define APR_HAVE_ARPA_INET_H    0
+#define APR_HAVE_CONIO_H        1
+#define APR_HAVE_CRYPT_H        0
+#define APR_HAVE_CTYPE_H        1
+#define APR_HAVE_DIRENT_H       0
+#define APR_HAVE_ERRNO_H        1
+#define APR_HAVE_FCNTL_H        1
+#define APR_HAVE_IO_H           1
+#define APR_HAVE_LIMITS_H       1
+#define APR_HAVE_NETDB_H        0
+#define APR_HAVE_NETINET_IN_H   0
+#define APR_HAVE_NETINET_SCTP_H 0
+#define APR_HAVE_NETINET_SCTP_UIO_H 0
+#define APR_HAVE_NETINET_TCP_H  0
+#define APR_HAVE_PTHREAD_H      0
+#define APR_HAVE_SEMAPHORE_H    0
+#define APR_HAVE_SIGNAL_H       1
+#define APR_HAVE_STDARG_H       1
+#define APR_HAVE_STDINT_H       0
+#define APR_HAVE_STDIO_H        1
+#define APR_HAVE_STDLIB_H       1
+#define APR_HAVE_STRING_H       1
+#define APR_HAVE_STRINGS_H      0
+#define APR_HAVE_SYS_IOCTL_H    0
+#define APR_HAVE_SYS_SENDFILE_H 0
+#define APR_HAVE_SYS_SIGNAL_H   0
+#define APR_HAVE_SYS_SOCKET_H   0
+#define APR_HAVE_SYS_SOCKIO_H   0
+#define APR_HAVE_SYS_SYSLIMITS_H 0
+#define APR_HAVE_SYS_TIME_H     0
+#define APR_HAVE_SYS_TYPES_H    1
+#define APR_HAVE_SYS_UIO_H      0
+#define APR_HAVE_SYS_UN_H       0
+#define APR_HAVE_SYS_WAIT_H     0
+#define APR_HAVE_TIME_H         1
+#define APR_HAVE_UNISTD_H       0
+#define APR_HAVE_STDDEF_H       1
+#define APR_HAVE_PROCESS_H      1
+#else
+#define APR_HAVE_ARPA_INET_H    0
+#define APR_HAVE_CONIO_H        0
+#define APR_HAVE_CRYPT_H        0
+#define APR_HAVE_CTYPE_H        0
+#define APR_HAVE_DIRENT_H       0
+#define APR_HAVE_ERRNO_H        0
+#define APR_HAVE_FCNTL_H        0
+#define APR_HAVE_IO_H           0
+#define APR_HAVE_LIMITS_H       0
+#define APR_HAVE_NETDB_H        0
+#define APR_HAVE_NETINET_IN_H   0
+#define APR_HAVE_NETINET_SCTP_H 0
+#define APR_HAVE_NETINET_SCTP_UIO_H 0
+#define APR_HAVE_NETINET_TCP_H  0
+#define APR_HAVE_PTHREAD_H      0
+#define APR_HAVE_SEMAPHORE_H    0
+#define APR_HAVE_SIGNAL_H       0
+#define APR_HAVE_STDARG_H       0
+#define APR_HAVE_STDINT_H       0
+#define APR_HAVE_STDIO_H        1
+#define APR_HAVE_STDLIB_H       1
+#define APR_HAVE_STRING_H       1
+#define APR_HAVE_STRINGS_H      0
+#define APR_HAVE_SYS_IOCTL_H    0
+#define APR_HAVE_SYS_SENDFILE_H 0
+#define APR_HAVE_SYS_SIGNAL_H   0
+#define APR_HAVE_SYS_SOCKET_H   0
+#define APR_HAVE_SYS_SOCKIO_H   0
+#define APR_HAVE_SYS_SYSLIMITS_H 0
+#define APR_HAVE_SYS_TIME_H     0
+#define APR_HAVE_SYS_TYPES_H    0
+#define APR_HAVE_SYS_UIO_H      0
+#define APR_HAVE_SYS_UN_H       0
+#define APR_HAVE_SYS_WAIT_H     0
+#define APR_HAVE_TIME_H         0
+#define APR_HAVE_UNISTD_H       0
+#define APR_HAVE_STDDEF_H       0
+#define APR_HAVE_PROCESS_H      0
+#endif
+
+/** @} */
+/** @} */
+
+/* We don't include our conditional headers within the doxyblocks 
+ * or the extern "C" namespace 
+ */
+
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if APR_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if APR_HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+#if APR_HAVE_TIME_H
+#include <time.h>
+#endif
+#if APR_HAVE_PROCESS_H
+#include <process.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup apr_platform
+ * @ingroup APR 
+ * @{
+ */
+
+#define APR_HAVE_SHMEM_MMAP_TMP     0
+#define APR_HAVE_SHMEM_MMAP_SHM     0
+#define APR_HAVE_SHMEM_MMAP_ZERO    0
+#define APR_HAVE_SHMEM_SHMGET_ANON  0
+#define APR_HAVE_SHMEM_SHMGET       0
+#define APR_HAVE_SHMEM_MMAP_ANON    0
+#define APR_HAVE_SHMEM_BEOS         0
+
+#define APR_USE_SHMEM_MMAP_TMP     0
+#define APR_USE_SHMEM_MMAP_SHM     0
+#define APR_USE_SHMEM_MMAP_ZERO    0
+#define APR_USE_SHMEM_SHMGET_ANON  0
+#define APR_USE_SHMEM_SHMGET       0
+#define APR_USE_SHMEM_MMAP_ANON    0
+#define APR_USE_SHMEM_BEOS         0
+
+#define APR_USE_FLOCK_SERIALIZE           0 
+#define APR_USE_POSIXSEM_SERIALIZE        0
+#define APR_USE_SYSVSEM_SERIALIZE         0
+#define APR_USE_FCNTL_SERIALIZE           0
+#define APR_USE_PROC_PTHREAD_SERIALIZE    0 
+#define APR_USE_PTHREAD_SERIALIZE         0 
+
+#define APR_HAS_FLOCK_SERIALIZE           0
+#define APR_HAS_SYSVSEM_SERIALIZE         0
+#define APR_HAS_POSIXSEM_SERIALIZE        0
+#define APR_HAS_FCNTL_SERIALIZE           0
+#define APR_HAS_PROC_PTHREAD_SERIALIZE    0
+
+#define APR_PROCESS_LOCK_IS_GLOBAL        0
+
+#define APR_HAVE_CORKABLE_TCP   0
+#define APR_HAVE_GETRLIMIT      0
+#define APR_HAVE_ICONV          0
+#define APR_HAVE_IN_ADDR        1
+#define APR_HAVE_INET_ADDR      1
+#define APR_HAVE_INET_NETWORK   0
+#define APR_HAVE_IPV6           @apr_have_ipv6_10@
+#define APR_HAVE_MEMMOVE        1
+#define APR_HAVE_SETRLIMIT      0
+#define APR_HAVE_SIGACTION      0
+#define APR_HAVE_SIGSUSPEND     0
+#define APR_HAVE_SIGWAIT        0
+#define APR_HAVE_SA_STORAGE     0
+#define APR_HAVE_STRCASECMP     0
+#define APR_HAVE_STRDUP         1
+#define APR_HAVE_STRNCASECMP    0
+#define APR_HAVE_STRSTR         1
+#define APR_HAVE_MEMCHR         1
+#define APR_HAVE_STRUCT_RLIMIT  0
+#define APR_HAVE_UNION_SEMUN    0
+#define APR_HAVE_SCTP           0
+#define APR_HAVE_IOVEC          0
+
+#ifndef _WIN32_WCE
+#define APR_HAVE_STRICMP        1
+#define APR_HAVE_STRNICMP       1
+#else
+#define APR_HAVE_STRICMP        0
+#define APR_HAVE_STRNICMP       0
+#endif
+
+/*  APR Feature Macros */
+#define APR_HAS_SHARED_MEMORY     1
+#define APR_HAS_THREADS           1
+#define APR_HAS_MMAP              1
+#define APR_HAS_FORK              0
+#define APR_HAS_RANDOM            1
+#define APR_HAS_OTHER_CHILD       1
+#define APR_HAS_DSO               1
+#define APR_HAS_SO_ACCEPTFILTER   0
+#define APR_HAS_UNICODE_FS        1
+#define APR_HAS_PROC_INVOKED      1
+#define APR_HAS_OS_UUID           1
+
+#ifndef _WIN32_WCE
+#define APR_HAS_SENDFILE          1
+#define APR_HAS_USER              1
+#define APR_HAS_LARGE_FILES       1
+#define APR_HAS_XTHREAD_FILES     1
+#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1
+#else
+#define APR_HAS_SENDFILE          0
+#define APR_HAS_USER              0
+#define APR_HAS_LARGE_FILES       0
+#define APR_HAS_XTHREAD_FILES     0
+#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0
+#endif
+
+/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible
+ * to poll on files/pipes.
+ */
+#define APR_FILES_AS_SOCKETS      0
+
+/* This macro indicates whether or not EBCDIC is the native character set.
+ */
+#define APR_CHARSET_EBCDIC        0
+
+/* If we have a TCP implementation that can be "corked", what flag
+ * do we use?
+ */
+#define APR_TCP_NOPUSH_FLAG       @apr_tcp_nopush_flag@
+
+/* Is the TCP_NODELAY socket option inherited from listening sockets?
+ */
+#define APR_TCP_NODELAY_INHERITED 1
+
+/* Is the O_NONBLOCK flag inherited from listening sockets?
+ */
+#define APR_O_NONBLOCK_INHERITED  1
+
+/* Typedefs that APR needs. */
+
+typedef  unsigned char     apr_byte_t;
+
+typedef  short             apr_int16_t;
+typedef  unsigned short    apr_uint16_t;
+
+typedef  int               apr_int32_t;
+typedef  unsigned int      apr_uint32_t;
+
+typedef  __int64           apr_int64_t;
+typedef  unsigned __int64  apr_uint64_t;
+
+typedef  size_t      apr_size_t;
+#if APR_HAVE_STDDEF_H
+typedef  ptrdiff_t   apr_ssize_t;
+#else
+typedef  int         apr_ssize_t;
+#endif
+#if APR_HAS_LARGE_FILES
+typedef  __int64     apr_off_t;
+#else
+typedef  int         apr_off_t;
+#endif
+typedef  int         apr_socklen_t;
+typedef  apr_uint64_t      apr_ino_t;
+
+#ifdef _WIN64
+#define APR_SIZEOF_VOIDP   8
+#else
+#define APR_SIZEOF_VOIDP   4
+#endif
+
+#if APR_SIZEOF_VOIDP == 8
+typedef  apr_uint64_t            apr_uintptr_t;
+#else
+typedef  apr_uint32_t            apr_uintptr_t;
+#endif
+
+/* Are we big endian? */
+/* XXX: Fatal assumption on Alpha platforms */
+#define APR_IS_BIGENDIAN	0
+
+/* Mechanisms to properly type numeric literals */
+
+#ifndef __GNUC__
+#define APR_INT64_C(val) (val##i64)
+#define APR_UINT64_C(val) (val##Ui64)
+#else
+#define APR_INT64_C(val) (val##LL)
+#define APR_UINT64_C(val) (val##ULL)
+#endif
+
+#ifdef INT16_MIN
+#define APR_INT16_MIN   INT16_MIN
+#else
+#define APR_INT16_MIN   (-0x7fff - 1)
+#endif
+
+#ifdef INT16_MAX
+#define APR_INT16_MAX  INT16_MAX
+#else
+#define APR_INT16_MAX   (0x7fff)
+#endif
+
+#ifdef UINT16_MAX
+#define APR_UINT16_MAX  UINT16_MAX
+#else
+#define APR_UINT16_MAX  (0xffff)
+#endif
+
+#ifdef INT32_MIN
+#define APR_INT32_MIN   INT32_MIN
+#else
+#define APR_INT32_MIN   (-0x7fffffff - 1)
+#endif
+
+#ifdef INT32_MAX
+#define APR_INT32_MAX  INT32_MAX
+#else
+#define APR_INT32_MAX  0x7fffffff
+#endif
+
+#ifdef UINT32_MAX
+#define APR_UINT32_MAX  UINT32_MAX
+#else
+#define APR_UINT32_MAX  (0xffffffffU)
+#endif
+
+#ifdef INT64_MIN
+#define APR_INT64_MIN   INT64_MIN
+#else
+#define APR_INT64_MIN   (APR_INT64_C(-0x7fffffffffffffff) - 1)
+#endif
+
+#ifdef INT64_MAX
+#define APR_INT64_MAX   INT64_MAX
+#else
+#define APR_INT64_MAX   APR_INT64_C(0x7fffffffffffffff)
+#endif
+
+#ifdef UINT64_MAX
+#define APR_UINT64_MAX  UINT64_MAX
+#else
+#define APR_UINT64_MAX  APR_UINT64_C(0xffffffffffffffff)
+#endif
+
+#define APR_SIZE_MAX    (~((apr_size_t)0))
+
+/* Definitions that APR programs need to work properly. */
+
+/**
+ * APR public API wrap for C++ compilers.
+ */
+#ifdef __cplusplus
+#define APR_BEGIN_DECLS     extern "C" {
+#define APR_END_DECLS       }
+#else
+#define APR_BEGIN_DECLS
+#define APR_END_DECLS
+#endif
+
+/** 
+ * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 
+ * so that they follow the platform's calling convention.
+ * <PRE>
+ *
+ * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
+ *
+ * </PRE>
+ */
+#define APR_THREAD_FUNC  __stdcall
+
+
+#if defined(DOXYGEN) || !defined(WIN32)
+
+/**
+ * The public APR functions are declared with APR_DECLARE(), so they may
+ * use the most appropriate calling convention.  Public APR functions with 
+ * variable arguments must use APR_DECLARE_NONSTD().
+ *
+ * @remark Both the declaration and implementations must use the same macro.
+ *
+ * <PRE>
+ * APR_DECLARE(rettype) apr_func(args)
+ * </PRE>
+ * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
+ * @remark Note that when APR compiles the library itself, it passes the 
+ * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 
+ * to export public symbols from the dynamic library build.\n
+ * The user must define the APR_DECLARE_STATIC when compiling to target
+ * the static APR library on some platforms (e.g. Win32.)  The public symbols 
+ * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
+ * By default, compiling an application and including the APR public
+ * headers, without defining APR_DECLARE_STATIC, will prepare the code to be
+ * linked to the dynamic library.
+ */
+#define APR_DECLARE(type)            type 
+
+/**
+ * The public APR functions using variable arguments are declared with 
+ * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
+ * @see APR_DECLARE @see APR_DECLARE_DATA
+ * @remark Both the declaration and implementations must use the same macro.
+ * <PRE>
+ *
+ * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
+ *
+ * </PRE>
+ */
+#define APR_DECLARE_NONSTD(type)     type
+
+/**
+ * The public APR variables are declared with AP_MODULE_DECLARE_DATA.
+ * This assures the appropriate indirection is invoked at compile time.
+ * @see APR_DECLARE @see APR_DECLARE_NONSTD
+ * @remark Note that the declaration and implementations use different forms,
+ * but both must include the macro.
+ * 
+ * <PRE>
+ *
+ * extern APR_DECLARE_DATA type apr_variable;\n
+ * APR_DECLARE_DATA type apr_variable = value;
+ *
+ * </PRE>
+ */
+#define APR_DECLARE_DATA
+
+#elif defined(APR_DECLARE_STATIC)
+#define APR_DECLARE(type)            type __stdcall
+#define APR_DECLARE_NONSTD(type)     type __cdecl
+#define APR_DECLARE_DATA
+#elif defined(APR_DECLARE_EXPORT)
+#define APR_DECLARE(type)            __declspec(dllexport) type __stdcall
+#define APR_DECLARE_NONSTD(type)     __declspec(dllexport) type __cdecl
+#define APR_DECLARE_DATA             __declspec(dllexport)
+#else
+#define APR_DECLARE(type)            __declspec(dllimport) type __stdcall
+#define APR_DECLARE_NONSTD(type)     __declspec(dllimport) type __cdecl
+#define APR_DECLARE_DATA             __declspec(dllimport)
+#endif
+
+#ifdef _WIN64
+#define APR_SSIZE_T_FMT          "I64d"
+#define APR_SIZE_T_FMT           "I64u"
+#else
+#define APR_SSIZE_T_FMT          "d"
+#define APR_SIZE_T_FMT           "u"
+#endif
+
+#if APR_HAS_LARGE_FILES
+#define APR_OFF_T_FMT            "I64d"
+#else
+#define APR_OFF_T_FMT            "d"
+#endif
+
+#define APR_PID_T_FMT            "d"
+
+#define APR_INT64_T_FMT          "I64d"
+#define APR_UINT64_T_FMT         "I64u"
+#define APR_UINT64_T_HEX_FMT     "I64x"
+
+/* No difference between PROC and GLOBAL mutex */
+#define APR_PROC_MUTEX_IS_GLOBAL      1
+
+/* Local machine definition for console and log output. */
+#define APR_EOL_STR              "\r\n"
+
+typedef int apr_wait_t;
+
+#if APR_HAS_UNICODE_FS
+/* An arbitrary size that is digestable. True max is a bit less than 32000 */
+#define APR_PATH_MAX 8192
+#else /* !APR_HAS_UNICODE_FS */
+#define APR_PATH_MAX MAX_PATH
+#endif
+
+#define APR_DSOPATH "PATH"
+
+/** @} */
+
+/* Definitions that only Win32 programs need to compile properly. */
+
+/* XXX These simply don't belong here, perhaps in apr_portable.h
+ * based on some APR_HAVE_PID/GID/UID?
+ */
+#ifndef __GNUC__
+typedef  int         pid_t;
+#endif
+typedef  int         uid_t;
+typedef  int         gid_t;
+
+/* Win32 .h ommissions we really need */
+#define STDIN_FILENO  0
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
+
+#if APR_HAVE_IPV6
+
+/* Appears in later flavors, not the originals. */
+#ifndef in_addr6
+#define  in6_addr    in_addr6
+#endif
+
+#ifndef WS2TCPIP_INLINE
+#define IN6_IS_ADDR_V4MAPPED(a) \
+    (   (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \
+     && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))
+#endif
+
+#endif /* APR_HAS_IPV6 */
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Done with badly written headers
+ */
+#if defined(_MSC_VER) && _MSC_VER >= 1200
+#pragma warning(pop)
+#pragma warning(disable: 4996)
+#endif
+
+#endif /* WIN32 */
+
+#endif /* APR_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_allocator.h
===================================================================
--- vendor/apache/apr/dist/include/apr_allocator.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_allocator.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,169 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_ALLOCATOR_H
-#define APR_ALLOCATOR_H
-
-/**
- * @file apr_allocator.h
- * @brief APR Internal Memory Allocation
- */
-
-#include "apr.h"
-#include "apr_errno.h"
-#define APR_WANT_MEMFUNC /**< For no good reason? */
-#include "apr_want.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup apr_allocator Internal Memory Allocation
- * @ingroup APR 
- * @{
- */
-
-/** the allocator structure */
-typedef struct apr_allocator_t apr_allocator_t;
-/** the structure which holds information about the allocation */
-typedef struct apr_memnode_t apr_memnode_t;
-
-/** basic memory node structure
- * @note The next, ref and first_avail fields are available for use by the
- *       caller of apr_allocator_alloc(), the remaining fields are read-only.
- *       The next field has to be used with caution and sensibly set when the
- *       memnode is passed back to apr_allocator_free().  See apr_allocator_free()
- *       for details.  
- *       The ref and first_avail fields will be properly restored by
- *       apr_allocator_free().
- */
-struct apr_memnode_t {
-    apr_memnode_t *next;            /**< next memnode */
-    apr_memnode_t **ref;            /**< reference to self */
-    apr_uint32_t   index;           /**< size */
-    apr_uint32_t   free_index;      /**< how much free */
-    char          *first_avail;     /**< pointer to first free memory */
-    char          *endp;            /**< pointer to end of free memory */
-};
-
-/** The base size of a memory node - aligned.  */
-#define APR_MEMNODE_T_SIZE APR_ALIGN_DEFAULT(sizeof(apr_memnode_t))
-
-/** Symbolic constants */
-#define APR_ALLOCATOR_MAX_FREE_UNLIMITED 0
-
-/**
- * Create a new allocator
- * @param allocator The allocator we have just created.
- *
- */
-APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator)
-                          __attribute__((nonnull(1)));
-
-/**
- * Destroy an allocator
- * @param allocator The allocator to be destroyed
- * @remark Any memnodes not given back to the allocator prior to destroying
- *         will _not_ be free()d.
- */
-APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator)
-                  __attribute__((nonnull(1)));
-
-/**
- * Allocate a block of mem from the allocator
- * @param allocator The allocator to allocate from
- * @param size The size of the mem to allocate (excluding the
- *        memnode structure)
- */
-APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator,
-                                                 apr_size_t size)
-                             __attribute__((nonnull(1)));
-
-/**
- * Free a list of blocks of mem, giving them back to the allocator.
- * The list is typically terminated by a memnode with its next field
- * set to NULL.
- * @param allocator The allocator to give the mem back to
- * @param memnode The memory node to return
- */
-APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator,
-                                     apr_memnode_t *memnode)
-                  __attribute__((nonnull(1,2)));
-
-#include "apr_pools.h"
-
-/**
- * Set the owner of the allocator
- * @param allocator The allocator to set the owner for
- * @param pool The pool that is to own the allocator
- * @remark Typically pool is the highest level pool using the allocator
- */
-/*
- * XXX: see if we can come up with something a bit better.  Currently
- * you can make a pool an owner, but if the pool doesn't use the allocator
- * the allocator will never be destroyed.
- */
-APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator,
-                                          apr_pool_t *pool)
-                  __attribute__((nonnull(1)));
-
-/**
- * Get the current owner of the allocator
- * @param allocator The allocator to get the owner from
- */
-APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator)
-                          __attribute__((nonnull(1)));
-
-/**
- * Set the current threshold at which the allocator should start
- * giving blocks back to the system.
- * @param allocator The allocator the set the threshold on
- * @param size The threshold.  0 == unlimited.
- */
-APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
-                                             apr_size_t size)
-                  __attribute__((nonnull(1)));
-
-#include "apr_thread_mutex.h"
-
-#if APR_HAS_THREADS
-/**
- * Set a mutex for the allocator to use
- * @param allocator The allocator to set the mutex for
- * @param mutex The mutex
- */
-APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator,
-                                          apr_thread_mutex_t *mutex)
-                  __attribute__((nonnull(1)));
-
-/**
- * Get the mutex currently set for the allocator
- * @param allocator The allocator
- */
-APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get(
-                                          apr_allocator_t *allocator)
-                                  __attribute__((nonnull(1)));
-
-#endif /* APR_HAS_THREADS */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !APR_ALLOCATOR_H */

Copied: vendor/apache/apr/1.5.2/include/apr_allocator.h (from rev 9273, vendor/apache/apr/dist/include/apr_allocator.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_allocator.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_allocator.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,169 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_ALLOCATOR_H
+#define APR_ALLOCATOR_H
+
+/**
+ * @file apr_allocator.h
+ * @brief APR Internal Memory Allocation
+ */
+
+#include "apr.h"
+#include "apr_errno.h"
+#define APR_WANT_MEMFUNC /**< For no good reason? */
+#include "apr_want.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup apr_allocator Internal Memory Allocation
+ * @ingroup APR 
+ * @{
+ */
+
+/** the allocator structure */
+typedef struct apr_allocator_t apr_allocator_t;
+/** the structure which holds information about the allocation */
+typedef struct apr_memnode_t apr_memnode_t;
+
+/** basic memory node structure
+ * @note The next, ref and first_avail fields are available for use by the
+ *       caller of apr_allocator_alloc(), the remaining fields are read-only.
+ *       The next field has to be used with caution and sensibly set when the
+ *       memnode is passed back to apr_allocator_free().  See apr_allocator_free()
+ *       for details.  
+ *       The ref and first_avail fields will be properly restored by
+ *       apr_allocator_free().
+ */
+struct apr_memnode_t {
+    apr_memnode_t *next;            /**< next memnode */
+    apr_memnode_t **ref;            /**< reference to self */
+    apr_uint32_t   index;           /**< size */
+    apr_uint32_t   free_index;      /**< how much free */
+    char          *first_avail;     /**< pointer to first free memory */
+    char          *endp;            /**< pointer to end of free memory */
+};
+
+/** The base size of a memory node - aligned.  */
+#define APR_MEMNODE_T_SIZE APR_ALIGN_DEFAULT(sizeof(apr_memnode_t))
+
+/** Symbolic constants */
+#define APR_ALLOCATOR_MAX_FREE_UNLIMITED 0
+
+/**
+ * Create a new allocator
+ * @param allocator The allocator we have just created.
+ *
+ */
+APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator)
+                          __attribute__((nonnull(1)));
+
+/**
+ * Destroy an allocator
+ * @param allocator The allocator to be destroyed
+ * @remark Any memnodes not given back to the allocator prior to destroying
+ *         will _not_ be free()d.
+ */
+APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator)
+                  __attribute__((nonnull(1)));
+
+/**
+ * Allocate a block of mem from the allocator
+ * @param allocator The allocator to allocate from
+ * @param size The size of the mem to allocate (excluding the
+ *        memnode structure)
+ */
+APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator,
+                                                 apr_size_t size)
+                             __attribute__((nonnull(1)));
+
+/**
+ * Free a list of blocks of mem, giving them back to the allocator.
+ * The list is typically terminated by a memnode with its next field
+ * set to NULL.
+ * @param allocator The allocator to give the mem back to
+ * @param memnode The memory node to return
+ */
+APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator,
+                                     apr_memnode_t *memnode)
+                  __attribute__((nonnull(1,2)));
+
+#include "apr_pools.h"
+
+/**
+ * Set the owner of the allocator
+ * @param allocator The allocator to set the owner for
+ * @param pool The pool that is to own the allocator
+ * @remark Typically pool is the highest level pool using the allocator
+ */
+/*
+ * XXX: see if we can come up with something a bit better.  Currently
+ * you can make a pool an owner, but if the pool doesn't use the allocator
+ * the allocator will never be destroyed.
+ */
+APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator,
+                                          apr_pool_t *pool)
+                  __attribute__((nonnull(1)));
+
+/**
+ * Get the current owner of the allocator
+ * @param allocator The allocator to get the owner from
+ */
+APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator)
+                          __attribute__((nonnull(1)));
+
+/**
+ * Set the current threshold at which the allocator should start
+ * giving blocks back to the system.
+ * @param allocator The allocator to set the threshold on
+ * @param size The threshold.  0 == unlimited.
+ */
+APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
+                                             apr_size_t size)
+                  __attribute__((nonnull(1)));
+
+#include "apr_thread_mutex.h"
+
+#if APR_HAS_THREADS
+/**
+ * Set a mutex for the allocator to use
+ * @param allocator The allocator to set the mutex for
+ * @param mutex The mutex
+ */
+APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator,
+                                          apr_thread_mutex_t *mutex)
+                  __attribute__((nonnull(1)));
+
+/**
+ * Get the mutex currently set for the allocator
+ * @param allocator The allocator
+ */
+APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get(
+                                          apr_allocator_t *allocator)
+                                  __attribute__((nonnull(1)));
+
+#endif /* APR_HAS_THREADS */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !APR_ALLOCATOR_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_errno.h
===================================================================
--- vendor/apache/apr/dist/include/apr_errno.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_errno.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1315 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_ERRNO_H
-#define APR_ERRNO_H
-
-/**
- * @file apr_errno.h
- * @brief APR Error Codes
- */
-
-#include "apr.h"
-
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_errno Error Codes
- * @ingroup APR
- * @{
- */
-
-/**
- * Type for specifying an error or status code.
- */
-typedef int apr_status_t;
-
-/**
- * Return a human readable string describing the specified error.
- * @param statcode The error code the get a string for.
- * @param buf A buffer to hold the error string.
- * @param bufsize Size of the buffer to hold the string.
- */
-APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf,
-                                 apr_size_t bufsize);
-
-#if defined(DOXYGEN)
-/**
- * @def APR_FROM_OS_ERROR(os_err_type syserr)
- * Fold a platform specific error into an apr_status_t code.
- * @return apr_status_t
- * @param e The platform os error code.
- * @warning  macro implementation; the syserr argument may be evaluated
- *      multiple times.
- */
-#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
-
-/**
- * @def APR_TO_OS_ERROR(apr_status_t statcode)
- * @return os_err_type
- * Fold an apr_status_t code back to the native platform defined error.
- * @param e The apr_status_t folded platform os error code.
- * @warning  macro implementation; the statcode argument may be evaluated
- *      multiple times.  If the statcode was not created by apr_get_os_error
- *      or APR_FROM_OS_ERROR, the results are undefined.
- */
-#define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
-
-/** @def apr_get_os_error()
- * @return apr_status_t the last platform error, folded into apr_status_t, on most platforms
- * @remark This retrieves errno, or calls a GetLastError() style function, and
- *      folds it with APR_FROM_OS_ERROR.  Some platforms (such as OS2) have no
- *      such mechanism, so this call may be unsupported.  Do NOT use this
- *      call for socket errors from socket, send, recv etc!
- */
-
-/** @def apr_set_os_error(e)
- * Reset the last platform error, unfolded from an apr_status_t, on some platforms
- * @param e The OS error folded in a prior call to APR_FROM_OS_ERROR()
- * @warning This is a macro implementation; the statcode argument may be evaluated
- *      multiple times.  If the statcode was not created by apr_get_os_error
- *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets
- *      errno, or calls a SetLastError() style function, unfolding statcode
- *      with APR_TO_OS_ERROR.  Some platforms (such as OS2) have no such
- *      mechanism, so this call may be unsupported.
- */
-
-/** @def apr_get_netos_error()
- * Return the last socket error, folded into apr_status_t, on all platforms
- * @remark This retrieves errno or calls a GetLastSocketError() style function,
- *      and folds it with APR_FROM_OS_ERROR.
- */
-
-/** @def apr_set_netos_error(e)
- * Reset the last socket error, unfolded from an apr_status_t
- * @param e The socket error folded in a prior call to APR_FROM_OS_ERROR()
- * @warning This is a macro implementation; the statcode argument may be evaluated
- *      multiple times.  If the statcode was not created by apr_get_os_error
- *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets
- *      errno, or calls a WSASetLastError() style function, unfolding
- *      socketcode with APR_TO_OS_ERROR.
- */
-
-#endif /* defined(DOXYGEN) */
-
-/**
- * APR_OS_START_ERROR is where the APR specific error values start.
- */
-#define APR_OS_START_ERROR     20000
-/**
- * APR_OS_ERRSPACE_SIZE is the maximum number of errors you can fit
- *    into one of the error/status ranges below -- except for
- *    APR_OS_START_USERERR, which see.
- */
-#define APR_OS_ERRSPACE_SIZE 50000
-/**
- * APR_UTIL_ERRSPACE_SIZE is the size of the space that is reserved for
- * use within apr-util. This space is reserved above that used by APR
- * internally.
- * @note This number MUST be smaller than APR_OS_ERRSPACE_SIZE by a
- *       large enough amount that APR has sufficient room for it's
- *       codes.
- */
-#define APR_UTIL_ERRSPACE_SIZE 20000
-/**
- * APR_OS_START_STATUS is where the APR specific status codes start.
- */
-#define APR_OS_START_STATUS    (APR_OS_START_ERROR + APR_OS_ERRSPACE_SIZE)
-/**
- * APR_UTIL_START_STATUS is where APR-Util starts defining it's
- * status codes.
- */
-#define APR_UTIL_START_STATUS   (APR_OS_START_STATUS + \
-                           (APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE))
-/**
- * APR_OS_START_USERERR are reserved for applications that use APR that
- *     layer their own error codes along with APR's.  Note that the
- *     error immediately following this one is set ten times farther
- *     away than usual, so that users of apr have a lot of room in
- *     which to declare custom error codes.
- *
- * In general applications should try and create unique error codes. To try
- * and assist in finding suitable ranges of numbers to use, the following
- * ranges are known to be used by the listed applications. If your
- * application defines error codes please advise the range of numbers it
- * uses to dev at apr.apache.org for inclusion in this list.
- *
- * Ranges shown are in relation to APR_OS_START_USERERR
- *
- * Subversion - Defined ranges, of less than 100, at intervals of 5000
- *              starting at an offset of 5000, e.g.
- *               +5000 to 5100,  +10000 to 10100
- *
- * Apache HTTPD - +2000 to 2999
- */
-#define APR_OS_START_USERERR    (APR_OS_START_STATUS + APR_OS_ERRSPACE_SIZE)
-/**
- * APR_OS_START_USEERR is obsolete, defined for compatibility only.
- * Use APR_OS_START_USERERR instead.
- */
-#define APR_OS_START_USEERR     APR_OS_START_USERERR
-/**
- * APR_OS_START_CANONERR is where APR versions of errno values are defined
- *     on systems which don't have the corresponding errno.
- */
-#define APR_OS_START_CANONERR  (APR_OS_START_USERERR \
-                                 + (APR_OS_ERRSPACE_SIZE * 10))
-/**
- * APR_OS_START_EAIERR folds EAI_ error codes from getaddrinfo() into
- *     apr_status_t values.
- */
-#define APR_OS_START_EAIERR    (APR_OS_START_CANONERR + APR_OS_ERRSPACE_SIZE)
-/**
- * APR_OS_START_SYSERR folds platform-specific system error values into
- *     apr_status_t values.
- */
-#define APR_OS_START_SYSERR    (APR_OS_START_EAIERR + APR_OS_ERRSPACE_SIZE)
-
-/**
- * @defgroup APR_ERROR_map APR Error Space
- * <PRE>
- * The following attempts to show the relation of the various constants
- * used for mapping APR Status codes.
- *
- *       0
- *
- *  20,000     APR_OS_START_ERROR
- *
- *         + APR_OS_ERRSPACE_SIZE (50,000)
- *
- *  70,000      APR_OS_START_STATUS
- *
- *         + APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE (30,000)
- *
- * 100,000      APR_UTIL_START_STATUS
- *
- *         + APR_UTIL_ERRSPACE_SIZE (20,000)
- *
- * 120,000      APR_OS_START_USERERR
- *
- *         + 10 x APR_OS_ERRSPACE_SIZE (50,000 * 10)
- *
- * 620,000      APR_OS_START_CANONERR
- *
- *         + APR_OS_ERRSPACE_SIZE (50,000)
- *
- * 670,000      APR_OS_START_EAIERR
- *
- *         + APR_OS_ERRSPACE_SIZE (50,000)
- *
- * 720,000      APR_OS_START_SYSERR
- *
- * </PRE>
- */
-
-/** no error. */
-#define APR_SUCCESS 0
-
-/**
- * @defgroup APR_Error APR Error Values
- * <PRE>
- * <b>APR ERROR VALUES</b>
- * APR_ENOSTAT      APR was unable to perform a stat on the file
- * APR_ENOPOOL      APR was not provided a pool with which to allocate memory
- * APR_EBADDATE     APR was given an invalid date
- * APR_EINVALSOCK   APR was given an invalid socket
- * APR_ENOPROC      APR was not given a process structure
- * APR_ENOTIME      APR was not given a time structure
- * APR_ENODIR       APR was not given a directory structure
- * APR_ENOLOCK      APR was not given a lock structure
- * APR_ENOPOLL      APR was not given a poll structure
- * APR_ENOSOCKET    APR was not given a socket
- * APR_ENOTHREAD    APR was not given a thread structure
- * APR_ENOTHDKEY    APR was not given a thread key structure
- * APR_ENOSHMAVAIL  There is no more shared memory available
- * APR_EDSOOPEN     APR was unable to open the dso object.  For more
- *                  information call apr_dso_error().
- * APR_EGENERAL     General failure (specific information not available)
- * APR_EBADIP       The specified IP address is invalid
- * APR_EBADMASK     The specified netmask is invalid
- * APR_ESYMNOTFOUND Could not find the requested symbol
- * APR_ENOTENOUGHENTROPY Not enough entropy to continue
- * </PRE>
- *
- * <PRE>
- * <b>APR STATUS VALUES</b>
- * APR_INCHILD        Program is currently executing in the child
- * APR_INPARENT       Program is currently executing in the parent
- * APR_DETACH         The thread is detached
- * APR_NOTDETACH      The thread is not detached
- * APR_CHILD_DONE     The child has finished executing
- * APR_CHILD_NOTDONE  The child has not finished executing
- * APR_TIMEUP         The operation did not finish before the timeout
- * APR_INCOMPLETE     The operation was incomplete although some processing
- *                    was performed and the results are partially valid
- * APR_BADCH          Getopt found an option not in the option string
- * APR_BADARG         Getopt found an option that is missing an argument
- *                    and an argument was specified in the option string
- * APR_EOF            APR has encountered the end of the file
- * APR_NOTFOUND       APR was unable to find the socket in the poll structure
- * APR_ANONYMOUS      APR is using anonymous shared memory
- * APR_FILEBASED      APR is using a file name as the key to the shared memory
- * APR_KEYBASED       APR is using a shared key as the key to the shared memory
- * APR_EINIT          Ininitalizer value.  If no option has been found, but
- *                    the status variable requires a value, this should be used
- * APR_ENOTIMPL       The APR function has not been implemented on this
- *                    platform, either because nobody has gotten to it yet,
- *                    or the function is impossible on this platform.
- * APR_EMISMATCH      Two passwords do not match.
- * APR_EABSOLUTE      The given path was absolute.
- * APR_ERELATIVE      The given path was relative.
- * APR_EINCOMPLETE    The given path was neither relative nor absolute.
- * APR_EABOVEROOT     The given path was above the root path.
- * APR_EBUSY          The given lock was busy.
- * APR_EPROC_UNKNOWN  The given process wasn't recognized by APR
- * </PRE>
- * @{
- */
-/** @see APR_STATUS_IS_ENOSTAT */
-#define APR_ENOSTAT        (APR_OS_START_ERROR + 1)
-/** @see APR_STATUS_IS_ENOPOOL */
-#define APR_ENOPOOL        (APR_OS_START_ERROR + 2)
-/* empty slot: +3 */
-/** @see APR_STATUS_IS_EBADDATE */
-#define APR_EBADDATE       (APR_OS_START_ERROR + 4)
-/** @see APR_STATUS_IS_EINVALSOCK */
-#define APR_EINVALSOCK     (APR_OS_START_ERROR + 5)
-/** @see APR_STATUS_IS_ENOPROC */
-#define APR_ENOPROC        (APR_OS_START_ERROR + 6)
-/** @see APR_STATUS_IS_ENOTIME */
-#define APR_ENOTIME        (APR_OS_START_ERROR + 7)
-/** @see APR_STATUS_IS_ENODIR */
-#define APR_ENODIR         (APR_OS_START_ERROR + 8)
-/** @see APR_STATUS_IS_ENOLOCK */
-#define APR_ENOLOCK        (APR_OS_START_ERROR + 9)
-/** @see APR_STATUS_IS_ENOPOLL */
-#define APR_ENOPOLL        (APR_OS_START_ERROR + 10)
-/** @see APR_STATUS_IS_ENOSOCKET */
-#define APR_ENOSOCKET      (APR_OS_START_ERROR + 11)
-/** @see APR_STATUS_IS_ENOTHREAD */
-#define APR_ENOTHREAD      (APR_OS_START_ERROR + 12)
-/** @see APR_STATUS_IS_ENOTHDKEY */
-#define APR_ENOTHDKEY      (APR_OS_START_ERROR + 13)
-/** @see APR_STATUS_IS_EGENERAL */
-#define APR_EGENERAL       (APR_OS_START_ERROR + 14)
-/** @see APR_STATUS_IS_ENOSHMAVAIL */
-#define APR_ENOSHMAVAIL    (APR_OS_START_ERROR + 15)
-/** @see APR_STATUS_IS_EBADIP */
-#define APR_EBADIP         (APR_OS_START_ERROR + 16)
-/** @see APR_STATUS_IS_EBADMASK */
-#define APR_EBADMASK       (APR_OS_START_ERROR + 17)
-/* empty slot: +18 */
-/** @see APR_STATUS_IS_EDSOPEN */
-#define APR_EDSOOPEN       (APR_OS_START_ERROR + 19)
-/** @see APR_STATUS_IS_EABSOLUTE */
-#define APR_EABSOLUTE      (APR_OS_START_ERROR + 20)
-/** @see APR_STATUS_IS_ERELATIVE */
-#define APR_ERELATIVE      (APR_OS_START_ERROR + 21)
-/** @see APR_STATUS_IS_EINCOMPLETE */
-#define APR_EINCOMPLETE    (APR_OS_START_ERROR + 22)
-/** @see APR_STATUS_IS_EABOVEROOT */
-#define APR_EABOVEROOT     (APR_OS_START_ERROR + 23)
-/** @see APR_STATUS_IS_EBADPATH */
-#define APR_EBADPATH       (APR_OS_START_ERROR + 24)
-/** @see APR_STATUS_IS_EPATHWILD */
-#define APR_EPATHWILD      (APR_OS_START_ERROR + 25)
-/** @see APR_STATUS_IS_ESYMNOTFOUND */
-#define APR_ESYMNOTFOUND   (APR_OS_START_ERROR + 26)
-/** @see APR_STATUS_IS_EPROC_UNKNOWN */
-#define APR_EPROC_UNKNOWN  (APR_OS_START_ERROR + 27)
-/** @see APR_STATUS_IS_ENOTENOUGHENTROPY */
-#define APR_ENOTENOUGHENTROPY (APR_OS_START_ERROR + 28)
-/** @} */
-
-/**
- * @defgroup APR_STATUS_IS Status Value Tests
- * @warning For any particular error condition, more than one of these tests
- *      may match. This is because platform-specific error codes may not
- *      always match the semantics of the POSIX codes these tests (and the
- *      corresponding APR error codes) are named after. A notable example
- *      are the APR_STATUS_IS_ENOENT and APR_STATUS_IS_ENOTDIR tests on
- *      Win32 platforms. The programmer should always be aware of this and
- *      adjust the order of the tests accordingly.
- * @{
- */
-/**
- * APR was unable to perform a stat on the file
- * @warning always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_ENOSTAT(s)        ((s) == APR_ENOSTAT)
-/**
- * APR was not provided a pool with which to allocate memory
- * @warning always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_ENOPOOL(s)        ((s) == APR_ENOPOOL)
-/** APR was given an invalid date  */
-#define APR_STATUS_IS_EBADDATE(s)       ((s) == APR_EBADDATE)
-/** APR was given an invalid socket */
-#define APR_STATUS_IS_EINVALSOCK(s)     ((s) == APR_EINVALSOCK)
-/** APR was not given a process structure */
-#define APR_STATUS_IS_ENOPROC(s)        ((s) == APR_ENOPROC)
-/** APR was not given a time structure */
-#define APR_STATUS_IS_ENOTIME(s)        ((s) == APR_ENOTIME)
-/** APR was not given a directory structure */
-#define APR_STATUS_IS_ENODIR(s)         ((s) == APR_ENODIR)
-/** APR was not given a lock structure */
-#define APR_STATUS_IS_ENOLOCK(s)        ((s) == APR_ENOLOCK)
-/** APR was not given a poll structure */
-#define APR_STATUS_IS_ENOPOLL(s)        ((s) == APR_ENOPOLL)
-/** APR was not given a socket */
-#define APR_STATUS_IS_ENOSOCKET(s)      ((s) == APR_ENOSOCKET)
-/** APR was not given a thread structure */
-#define APR_STATUS_IS_ENOTHREAD(s)      ((s) == APR_ENOTHREAD)
-/** APR was not given a thread key structure */
-#define APR_STATUS_IS_ENOTHDKEY(s)      ((s) == APR_ENOTHDKEY)
-/** Generic Error which can not be put into another spot */
-#define APR_STATUS_IS_EGENERAL(s)       ((s) == APR_EGENERAL)
-/** There is no more shared memory available */
-#define APR_STATUS_IS_ENOSHMAVAIL(s)    ((s) == APR_ENOSHMAVAIL)
-/** The specified IP address is invalid */
-#define APR_STATUS_IS_EBADIP(s)         ((s) == APR_EBADIP)
-/** The specified netmask is invalid */
-#define APR_STATUS_IS_EBADMASK(s)       ((s) == APR_EBADMASK)
-/* empty slot: +18 */
-/**
- * APR was unable to open the dso object.
- * For more information call apr_dso_error().
- */
-#if defined(WIN32)
-#define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN \
-                       || APR_TO_OS_ERROR(s) == ERROR_MOD_NOT_FOUND)
-#else
-#define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN)
-#endif
-/** The given path was absolute. */
-#define APR_STATUS_IS_EABSOLUTE(s)      ((s) == APR_EABSOLUTE)
-/** The given path was relative. */
-#define APR_STATUS_IS_ERELATIVE(s)      ((s) == APR_ERELATIVE)
-/** The given path was neither relative nor absolute. */
-#define APR_STATUS_IS_EINCOMPLETE(s)    ((s) == APR_EINCOMPLETE)
-/** The given path was above the root path. */
-#define APR_STATUS_IS_EABOVEROOT(s)     ((s) == APR_EABOVEROOT)
-/** The given path was bad. */
-#define APR_STATUS_IS_EBADPATH(s)       ((s) == APR_EBADPATH)
-/** The given path contained wildcards. */
-#define APR_STATUS_IS_EPATHWILD(s)      ((s) == APR_EPATHWILD)
-/** Could not find the requested symbol.
- * For more information call apr_dso_error().
- */
-#if defined(WIN32)
-#define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND \
-                       || APR_TO_OS_ERROR(s) == ERROR_PROC_NOT_FOUND)
-#else
-#define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND)
-#endif
-/** The given process was not recognized by APR. */
-#define APR_STATUS_IS_EPROC_UNKNOWN(s)  ((s) == APR_EPROC_UNKNOWN)
-/** APR could not gather enough entropy to continue. */
-#define APR_STATUS_IS_ENOTENOUGHENTROPY(s) ((s) == APR_ENOTENOUGHENTROPY)
-
-/** @} */
-
-/**
- * @addtogroup APR_Error
- * @{
- */
-/** @see APR_STATUS_IS_INCHILD */
-#define APR_INCHILD        (APR_OS_START_STATUS + 1)
-/** @see APR_STATUS_IS_INPARENT */
-#define APR_INPARENT       (APR_OS_START_STATUS + 2)
-/** @see APR_STATUS_IS_DETACH */
-#define APR_DETACH         (APR_OS_START_STATUS + 3)
-/** @see APR_STATUS_IS_NOTDETACH */
-#define APR_NOTDETACH      (APR_OS_START_STATUS + 4)
-/** @see APR_STATUS_IS_CHILD_DONE */
-#define APR_CHILD_DONE     (APR_OS_START_STATUS + 5)
-/** @see APR_STATUS_IS_CHILD_NOTDONE */
-#define APR_CHILD_NOTDONE  (APR_OS_START_STATUS + 6)
-/** @see APR_STATUS_IS_TIMEUP */
-#define APR_TIMEUP         (APR_OS_START_STATUS + 7)
-/** @see APR_STATUS_IS_INCOMPLETE */
-#define APR_INCOMPLETE     (APR_OS_START_STATUS + 8)
-/* empty slot: +9 */
-/* empty slot: +10 */
-/* empty slot: +11 */
-/** @see APR_STATUS_IS_BADCH */
-#define APR_BADCH          (APR_OS_START_STATUS + 12)
-/** @see APR_STATUS_IS_BADARG */
-#define APR_BADARG         (APR_OS_START_STATUS + 13)
-/** @see APR_STATUS_IS_EOF */
-#define APR_EOF            (APR_OS_START_STATUS + 14)
-/** @see APR_STATUS_IS_NOTFOUND */
-#define APR_NOTFOUND       (APR_OS_START_STATUS + 15)
-/* empty slot: +16 */
-/* empty slot: +17 */
-/* empty slot: +18 */
-/** @see APR_STATUS_IS_ANONYMOUS */
-#define APR_ANONYMOUS      (APR_OS_START_STATUS + 19)
-/** @see APR_STATUS_IS_FILEBASED */
-#define APR_FILEBASED      (APR_OS_START_STATUS + 20)
-/** @see APR_STATUS_IS_KEYBASED */
-#define APR_KEYBASED       (APR_OS_START_STATUS + 21)
-/** @see APR_STATUS_IS_EINIT */
-#define APR_EINIT          (APR_OS_START_STATUS + 22)
-/** @see APR_STATUS_IS_ENOTIMPL */
-#define APR_ENOTIMPL       (APR_OS_START_STATUS + 23)
-/** @see APR_STATUS_IS_EMISMATCH */
-#define APR_EMISMATCH      (APR_OS_START_STATUS + 24)
-/** @see APR_STATUS_IS_EBUSY */
-#define APR_EBUSY          (APR_OS_START_STATUS + 25)
-/** @} */
-
-/**
- * @addtogroup APR_STATUS_IS
- * @{
- */
-/**
- * Program is currently executing in the child
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code */
-#define APR_STATUS_IS_INCHILD(s)        ((s) == APR_INCHILD)
-/**
- * Program is currently executing in the parent
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_INPARENT(s)       ((s) == APR_INPARENT)
-/**
- * The thread is detached
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_DETACH(s)         ((s) == APR_DETACH)
-/**
- * The thread is not detached
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_NOTDETACH(s)      ((s) == APR_NOTDETACH)
-/**
- * The child has finished executing
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_CHILD_DONE(s)     ((s) == APR_CHILD_DONE)
-/**
- * The child has not finished executing
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_CHILD_NOTDONE(s)  ((s) == APR_CHILD_NOTDONE)
-/**
- * The operation did not finish before the timeout
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP)
-/**
- * The operation was incomplete although some processing was performed
- * and the results are partially valid.
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_INCOMPLETE(s)     ((s) == APR_INCOMPLETE)
-/* empty slot: +9 */
-/* empty slot: +10 */
-/* empty slot: +11 */
-/**
- * Getopt found an option not in the option string
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_BADCH(s)          ((s) == APR_BADCH)
-/**
- * Getopt found an option not in the option string and an argument was
- * specified in the option string
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_BADARG(s)         ((s) == APR_BADARG)
-/**
- * APR has encountered the end of the file
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_EOF(s)            ((s) == APR_EOF)
-/**
- * APR was unable to find the socket in the poll structure
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_NOTFOUND(s)       ((s) == APR_NOTFOUND)
-/* empty slot: +16 */
-/* empty slot: +17 */
-/* empty slot: +18 */
-/**
- * APR is using anonymous shared memory
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_ANONYMOUS(s)      ((s) == APR_ANONYMOUS)
-/**
- * APR is using a file name as the key to the shared memory
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_FILEBASED(s)      ((s) == APR_FILEBASED)
-/**
- * APR is using a shared key as the key to the shared memory
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_KEYBASED(s)       ((s) == APR_KEYBASED)
-/**
- * Ininitalizer value.  If no option has been found, but
- * the status variable requires a value, this should be used
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_EINIT(s)          ((s) == APR_EINIT)
-/**
- * The APR function has not been implemented on this
- * platform, either because nobody has gotten to it yet,
- * or the function is impossible on this platform.
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_ENOTIMPL(s)       ((s) == APR_ENOTIMPL)
-/**
- * Two passwords do not match.
- * @warning
- * always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_EMISMATCH(s)      ((s) == APR_EMISMATCH)
-/**
- * The given lock was busy
- * @warning always use this test, as platform-specific variances may meet this
- * more than one error code
- */
-#define APR_STATUS_IS_EBUSY(s)          ((s) == APR_EBUSY)
-
-/** @} */
-
-/**
- * @addtogroup APR_Error APR Error Values
- * @{
- */
-/* APR CANONICAL ERROR VALUES */
-/** @see APR_STATUS_IS_EACCES */
-#ifdef EACCES
-#define APR_EACCES EACCES
-#else
-#define APR_EACCES         (APR_OS_START_CANONERR + 1)
-#endif
-
-/** @see APR_STATUS_IS_EEXIST */
-#ifdef EEXIST
-#define APR_EEXIST EEXIST
-#else
-#define APR_EEXIST         (APR_OS_START_CANONERR + 2)
-#endif
-
-/** @see APR_STATUS_IS_ENAMETOOLONG */
-#ifdef ENAMETOOLONG
-#define APR_ENAMETOOLONG ENAMETOOLONG
-#else
-#define APR_ENAMETOOLONG   (APR_OS_START_CANONERR + 3)
-#endif
-
-/** @see APR_STATUS_IS_ENOENT */
-#ifdef ENOENT
-#define APR_ENOENT ENOENT
-#else
-#define APR_ENOENT         (APR_OS_START_CANONERR + 4)
-#endif
-
-/** @see APR_STATUS_IS_ENOTDIR */
-#ifdef ENOTDIR
-#define APR_ENOTDIR ENOTDIR
-#else
-#define APR_ENOTDIR        (APR_OS_START_CANONERR + 5)
-#endif
-
-/** @see APR_STATUS_IS_ENOSPC */
-#ifdef ENOSPC
-#define APR_ENOSPC ENOSPC
-#else
-#define APR_ENOSPC         (APR_OS_START_CANONERR + 6)
-#endif
-
-/** @see APR_STATUS_IS_ENOMEM */
-#ifdef ENOMEM
-#define APR_ENOMEM ENOMEM
-#else
-#define APR_ENOMEM         (APR_OS_START_CANONERR + 7)
-#endif
-
-/** @see APR_STATUS_IS_EMFILE */
-#ifdef EMFILE
-#define APR_EMFILE EMFILE
-#else
-#define APR_EMFILE         (APR_OS_START_CANONERR + 8)
-#endif
-
-/** @see APR_STATUS_IS_ENFILE */
-#ifdef ENFILE
-#define APR_ENFILE ENFILE
-#else
-#define APR_ENFILE         (APR_OS_START_CANONERR + 9)
-#endif
-
-/** @see APR_STATUS_IS_EBADF */
-#ifdef EBADF
-#define APR_EBADF EBADF
-#else
-#define APR_EBADF          (APR_OS_START_CANONERR + 10)
-#endif
-
-/** @see APR_STATUS_IS_EINVAL */
-#ifdef EINVAL
-#define APR_EINVAL EINVAL
-#else
-#define APR_EINVAL         (APR_OS_START_CANONERR + 11)
-#endif
-
-/** @see APR_STATUS_IS_ESPIPE */
-#ifdef ESPIPE
-#define APR_ESPIPE ESPIPE
-#else
-#define APR_ESPIPE         (APR_OS_START_CANONERR + 12)
-#endif
-
-/**
- * @see APR_STATUS_IS_EAGAIN
- * @warning use APR_STATUS_IS_EAGAIN instead of just testing this value
- */
-#ifdef EAGAIN
-#define APR_EAGAIN EAGAIN
-#elif defined(EWOULDBLOCK)
-#define APR_EAGAIN EWOULDBLOCK
-#else
-#define APR_EAGAIN         (APR_OS_START_CANONERR + 13)
-#endif
-
-/** @see APR_STATUS_IS_EINTR */
-#ifdef EINTR
-#define APR_EINTR EINTR
-#else
-#define APR_EINTR          (APR_OS_START_CANONERR + 14)
-#endif
-
-/** @see APR_STATUS_IS_ENOTSOCK */
-#ifdef ENOTSOCK
-#define APR_ENOTSOCK ENOTSOCK
-#else
-#define APR_ENOTSOCK       (APR_OS_START_CANONERR + 15)
-#endif
-
-/** @see APR_STATUS_IS_ECONNREFUSED */
-#ifdef ECONNREFUSED
-#define APR_ECONNREFUSED ECONNREFUSED
-#else
-#define APR_ECONNREFUSED   (APR_OS_START_CANONERR + 16)
-#endif
-
-/** @see APR_STATUS_IS_EINPROGRESS */
-#ifdef EINPROGRESS
-#define APR_EINPROGRESS EINPROGRESS
-#else
-#define APR_EINPROGRESS    (APR_OS_START_CANONERR + 17)
-#endif
-
-/**
- * @see APR_STATUS_IS_ECONNABORTED
- * @warning use APR_STATUS_IS_ECONNABORTED instead of just testing this value
- */
-
-#ifdef ECONNABORTED
-#define APR_ECONNABORTED ECONNABORTED
-#else
-#define APR_ECONNABORTED   (APR_OS_START_CANONERR + 18)
-#endif
-
-/** @see APR_STATUS_IS_ECONNRESET */
-#ifdef ECONNRESET
-#define APR_ECONNRESET ECONNRESET
-#else
-#define APR_ECONNRESET     (APR_OS_START_CANONERR + 19)
-#endif
-
-/** @see APR_STATUS_IS_ETIMEDOUT
- *  @deprecated */
-#ifdef ETIMEDOUT
-#define APR_ETIMEDOUT ETIMEDOUT
-#else
-#define APR_ETIMEDOUT      (APR_OS_START_CANONERR + 20)
-#endif
-
-/** @see APR_STATUS_IS_EHOSTUNREACH */
-#ifdef EHOSTUNREACH
-#define APR_EHOSTUNREACH EHOSTUNREACH
-#else
-#define APR_EHOSTUNREACH   (APR_OS_START_CANONERR + 21)
-#endif
-
-/** @see APR_STATUS_IS_ENETUNREACH */
-#ifdef ENETUNREACH
-#define APR_ENETUNREACH ENETUNREACH
-#else
-#define APR_ENETUNREACH    (APR_OS_START_CANONERR + 22)
-#endif
-
-/** @see APR_STATUS_IS_EFTYPE */
-#ifdef EFTYPE
-#define APR_EFTYPE EFTYPE
-#else
-#define APR_EFTYPE        (APR_OS_START_CANONERR + 23)
-#endif
-
-/** @see APR_STATUS_IS_EPIPE */
-#ifdef EPIPE
-#define APR_EPIPE EPIPE
-#else
-#define APR_EPIPE         (APR_OS_START_CANONERR + 24)
-#endif
-
-/** @see APR_STATUS_IS_EXDEV */
-#ifdef EXDEV
-#define APR_EXDEV EXDEV
-#else
-#define APR_EXDEV         (APR_OS_START_CANONERR + 25)
-#endif
-
-/** @see APR_STATUS_IS_ENOTEMPTY */
-#ifdef ENOTEMPTY
-#define APR_ENOTEMPTY ENOTEMPTY
-#else
-#define APR_ENOTEMPTY     (APR_OS_START_CANONERR + 26)
-#endif
-
-/** @see APR_STATUS_IS_EAFNOSUPPORT */
-#ifdef EAFNOSUPPORT
-#define APR_EAFNOSUPPORT EAFNOSUPPORT
-#else
-#define APR_EAFNOSUPPORT  (APR_OS_START_CANONERR + 27)
-#endif
-
-/** @} */
-
-#if defined(OS2) && !defined(DOXYGEN)
-
-#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
-#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
-
-#define INCL_DOSERRORS
-#define INCL_DOS
-
-/* Leave these undefined.
- * OS2 doesn't rely on the errno concept.
- * The API calls always return a result codes which
- * should be filtered through APR_FROM_OS_ERROR().
- *
- * #define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))
- * #define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))
- */
-
-/* A special case, only socket calls require this;
- */
-#define apr_get_netos_error()   (APR_FROM_OS_ERROR(errno))
-#define apr_set_netos_error(e)  (errno = APR_TO_OS_ERROR(e))
-
-/* And this needs to be greped away for good:
- */
-#define APR_OS2_STATUS(e) (APR_FROM_OS_ERROR(e))
-
-/* These can't sit in a private header, so in spite of the extra size,
- * they need to be made available here.
- */
-#define SOCBASEERR              10000
-#define SOCEPERM                (SOCBASEERR+1)             /* Not owner */
-#define SOCESRCH                (SOCBASEERR+3)             /* No such process */
-#define SOCEINTR                (SOCBASEERR+4)             /* Interrupted system call */
-#define SOCENXIO                (SOCBASEERR+6)             /* No such device or address */
-#define SOCEBADF                (SOCBASEERR+9)             /* Bad file number */
-#define SOCEACCES               (SOCBASEERR+13)            /* Permission denied */
-#define SOCEFAULT               (SOCBASEERR+14)            /* Bad address */
-#define SOCEINVAL               (SOCBASEERR+22)            /* Invalid argument */
-#define SOCEMFILE               (SOCBASEERR+24)            /* Too many open files */
-#define SOCEPIPE                (SOCBASEERR+32)            /* Broken pipe */
-#define SOCEOS2ERR              (SOCBASEERR+100)           /* OS/2 Error */
-#define SOCEWOULDBLOCK          (SOCBASEERR+35)            /* Operation would block */
-#define SOCEINPROGRESS          (SOCBASEERR+36)            /* Operation now in progress */
-#define SOCEALREADY             (SOCBASEERR+37)            /* Operation already in progress */
-#define SOCENOTSOCK             (SOCBASEERR+38)            /* Socket operation on non-socket */
-#define SOCEDESTADDRREQ         (SOCBASEERR+39)            /* Destination address required */
-#define SOCEMSGSIZE             (SOCBASEERR+40)            /* Message too long */
-#define SOCEPROTOTYPE           (SOCBASEERR+41)            /* Protocol wrong type for socket */
-#define SOCENOPROTOOPT          (SOCBASEERR+42)            /* Protocol not available */
-#define SOCEPROTONOSUPPORT      (SOCBASEERR+43)            /* Protocol not supported */
-#define SOCESOCKTNOSUPPORT      (SOCBASEERR+44)            /* Socket type not supported */
-#define SOCEOPNOTSUPP           (SOCBASEERR+45)            /* Operation not supported on socket */
-#define SOCEPFNOSUPPORT         (SOCBASEERR+46)            /* Protocol family not supported */
-#define SOCEAFNOSUPPORT         (SOCBASEERR+47)            /* Address family not supported by protocol family */
-#define SOCEADDRINUSE           (SOCBASEERR+48)            /* Address already in use */
-#define SOCEADDRNOTAVAIL        (SOCBASEERR+49)            /* Can't assign requested address */
-#define SOCENETDOWN             (SOCBASEERR+50)            /* Network is down */
-#define SOCENETUNREACH          (SOCBASEERR+51)            /* Network is unreachable */
-#define SOCENETRESET            (SOCBASEERR+52)            /* Network dropped connection on reset */
-#define SOCECONNABORTED         (SOCBASEERR+53)            /* Software caused connection abort */
-#define SOCECONNRESET           (SOCBASEERR+54)            /* Connection reset by peer */
-#define SOCENOBUFS              (SOCBASEERR+55)            /* No buffer space available */
-#define SOCEISCONN              (SOCBASEERR+56)            /* Socket is already connected */
-#define SOCENOTCONN             (SOCBASEERR+57)            /* Socket is not connected */
-#define SOCESHUTDOWN            (SOCBASEERR+58)            /* Can't send after socket shutdown */
-#define SOCETOOMANYREFS         (SOCBASEERR+59)            /* Too many references: can't splice */
-#define SOCETIMEDOUT            (SOCBASEERR+60)            /* Connection timed out */
-#define SOCECONNREFUSED         (SOCBASEERR+61)            /* Connection refused */
-#define SOCELOOP                (SOCBASEERR+62)            /* Too many levels of symbolic links */
-#define SOCENAMETOOLONG         (SOCBASEERR+63)            /* File name too long */
-#define SOCEHOSTDOWN            (SOCBASEERR+64)            /* Host is down */
-#define SOCEHOSTUNREACH         (SOCBASEERR+65)            /* No route to host */
-#define SOCENOTEMPTY            (SOCBASEERR+66)            /* Directory not empty */
-
-/* APR CANONICAL ERROR TESTS */
-#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \
-                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \
-                || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)
-#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \
-                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \
-                || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \
-                || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS \
-                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)
-#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \
-                || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \
-                || (s) == APR_OS_START_SYSERR + SOCENAMETOOLONG)
-#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
-                || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \
-                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
-                || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES \
-                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED)
-#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
-#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
-                || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)
-#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
-#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \
-                || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)
-#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
-#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE)
-#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION)
-#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \
-                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
-#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
-                || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \
-                || (s) == APR_OS_START_SYSERR + SOCEWOULDBLOCK \
-                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION)
-#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
-                || (s) == APR_OS_START_SYSERR + SOCEINTR)
-#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
-                || (s) == APR_OS_START_SYSERR + SOCENOTSOCK)
-#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
-                || (s) == APR_OS_START_SYSERR + SOCECONNREFUSED)
-#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
-                || (s) == APR_OS_START_SYSERR + SOCEINPROGRESS)
-#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
-                || (s) == APR_OS_START_SYSERR + SOCECONNABORTED)
-#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
-                || (s) == APR_OS_START_SYSERR + SOCECONNRESET)
-/* XXX deprecated */
-#define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \
-                || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)
-#undef APR_STATUS_IS_TIMEUP
-#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
-                || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)
-#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
-                || (s) == APR_OS_START_SYSERR + SOCEHOSTUNREACH)
-#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
-                || (s) == APR_OS_START_SYSERR + SOCENETUNREACH)
-#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)
-#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \
-                || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE \
-                || (s) == APR_OS_START_SYSERR + SOCEPIPE)
-#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \
-                || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)
-#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \
-                || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY \
-                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)
-#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_AFNOSUPPORT \
-                || (s) == APR_OS_START_SYSERR + SOCEAFNOSUPPORT)
-
-/*
-    Sorry, too tired to wrap this up for OS2... feel free to
-    fit the following into their best matches.
-
-    { ERROR_NO_SIGNAL_SENT,     ESRCH           },
-    { SOCEALREADY,              EALREADY        },
-    { SOCEDESTADDRREQ,          EDESTADDRREQ    },
-    { SOCEMSGSIZE,              EMSGSIZE        },
-    { SOCEPROTOTYPE,            EPROTOTYPE      },
-    { SOCENOPROTOOPT,           ENOPROTOOPT     },
-    { SOCEPROTONOSUPPORT,       EPROTONOSUPPORT },
-    { SOCESOCKTNOSUPPORT,       ESOCKTNOSUPPORT },
-    { SOCEOPNOTSUPP,            EOPNOTSUPP      },
-    { SOCEPFNOSUPPORT,          EPFNOSUPPORT    },
-    { SOCEADDRINUSE,            EADDRINUSE      },
-    { SOCEADDRNOTAVAIL,         EADDRNOTAVAIL   },
-    { SOCENETDOWN,              ENETDOWN        },
-    { SOCENETRESET,             ENETRESET       },
-    { SOCENOBUFS,               ENOBUFS         },
-    { SOCEISCONN,               EISCONN         },
-    { SOCENOTCONN,              ENOTCONN        },
-    { SOCESHUTDOWN,             ESHUTDOWN       },
-    { SOCETOOMANYREFS,          ETOOMANYREFS    },
-    { SOCELOOP,                 ELOOP           },
-    { SOCEHOSTDOWN,             EHOSTDOWN       },
-    { SOCENOTEMPTY,             ENOTEMPTY       },
-    { SOCEPIPE,                 EPIPE           }
-*/
-
-#elif defined(WIN32) && !defined(DOXYGEN) /* !defined(OS2) */
-
-#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
-#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
-
-#define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))
-#define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))
-
-/* A special case, only socket calls require this:
- */
-#define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))
-#define apr_set_netos_error(e)   (WSASetLastError(APR_TO_OS_ERROR(e)))
-
-/* APR CANONICAL ERROR TESTS */
-#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \
-                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \
-                || (s) == APR_OS_START_SYSERR + ERROR_CANNOT_MAKE \
-                || (s) == APR_OS_START_SYSERR + ERROR_CURRENT_DIRECTORY \
-                || (s) == APR_OS_START_SYSERR + ERROR_DRIVE_LOCKED \
-                || (s) == APR_OS_START_SYSERR + ERROR_FAIL_I24 \
-                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \
-                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_FAILED \
-                || (s) == APR_OS_START_SYSERR + ERROR_NOT_LOCKED \
-                || (s) == APR_OS_START_SYSERR + ERROR_NETWORK_ACCESS_DENIED \
-                || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)
-#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \
-                || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \
-                || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS)
-#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \
-                || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \
-                || (s) == APR_OS_START_SYSERR + WSAENAMETOOLONG)
-#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
-                || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \
-                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
-                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \
-                || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES)
-#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR \
-                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
-                || (s) == APR_OS_START_SYSERR + ERROR_BAD_NETPATH \
-                || (s) == APR_OS_START_SYSERR + ERROR_BAD_NET_NAME \
-                || (s) == APR_OS_START_SYSERR + ERROR_BAD_PATHNAME \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DRIVE \
-                || (s) == APR_OS_START_SYSERR + ERROR_DIRECTORY)
-#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
-                || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)
-#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM \
-                || (s) == APR_OS_START_SYSERR + ERROR_ARENA_TRASHED \
-                || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_MEMORY \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_BLOCK \
-                || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_QUOTA \
-                || (s) == APR_OS_START_SYSERR + ERROR_OUTOFMEMORY)
-#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \
-                || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)
-#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
-#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_TARGET_HANDLE)
-#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_ACCESS \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DATA \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \
-                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
-#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \
-                || (s) == APR_OS_START_SYSERR + ERROR_SEEK_ON_DEVICE \
-                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
-#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
-                || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \
-                || (s) == APR_OS_START_SYSERR + ERROR_NO_PROC_SLOTS \
-                || (s) == APR_OS_START_SYSERR + ERROR_NESTING_NOT_ALLOWED \
-                || (s) == APR_OS_START_SYSERR + ERROR_MAX_THRDS_REACHED \
-                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \
-                || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)
-#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
-                || (s) == APR_OS_START_SYSERR + WSAEINTR)
-#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
-                || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)
-#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
-                || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)
-#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
-                || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)
-#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
-                || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)
-#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
-                || (s) == APR_OS_START_SYSERR + ERROR_NETNAME_DELETED \
-                || (s) == APR_OS_START_SYSERR + WSAECONNRESET)
-/* XXX deprecated */
-#define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \
-                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
-                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
-#undef APR_STATUS_IS_TIMEUP
-#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
-                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
-                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
-#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
-                || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)
-#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
-                || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)
-#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE \
-                || (s) == APR_OS_START_SYSERR + ERROR_EXE_MACHINE_TYPE_MISMATCH \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DLL \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_MODULETYPE \
-                || (s) == APR_OS_START_SYSERR + ERROR_BAD_EXE_FORMAT \
-                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_EXE_SIGNATURE \
-                || (s) == APR_OS_START_SYSERR + ERROR_FILE_CORRUPT \
-                || (s) == APR_OS_START_SYSERR + ERROR_BAD_FORMAT)
-#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \
-                || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE)
-#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \
-                || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)
-#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \
-                || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY)
-#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \
-                || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)
-
-#elif defined(NETWARE) && defined(USE_WINSOCK) && !defined(DOXYGEN) /* !defined(OS2) && !defined(WIN32) */
-
-#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
-#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
-
-#define apr_get_os_error()    (errno)
-#define apr_set_os_error(e)   (errno = (e))
-
-/* A special case, only socket calls require this: */
-#define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))
-#define apr_set_netos_error(e)  (WSASetLastError(APR_TO_OS_ERROR(e)))
-
-/* APR CANONICAL ERROR TESTS */
-#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)
-#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)
-#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)
-#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)
-#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
-#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)
-#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
-#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)
-#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
-#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)
-#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)
-#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)
-
-#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
-                || (s) ==                       EWOULDBLOCK \
-                || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)
-#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
-                || (s) == APR_OS_START_SYSERR + WSAEINTR)
-#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
-                || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)
-#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
-                || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)
-#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
-                || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)
-#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
-                || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)
-#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
-                || (s) == APR_OS_START_SYSERR + WSAECONNRESET)
-/* XXX deprecated */
-#define APR_STATUS_IS_ETIMEDOUT(s)       ((s) == APR_ETIMEDOUT \
-                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
-                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
-#undef APR_STATUS_IS_TIMEUP
-#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
-                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
-                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
-#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
-                || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)
-#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
-                || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)
-#define APR_STATUS_IS_ENETDOWN(s)       ((s) == APR_OS_START_SYSERR + WSAENETDOWN)
-#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)
-#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE)
-#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV)
-#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY)
-#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \
-                || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)
-
-#else /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */
-
-/*
- *  os error codes are clib error codes
- */
-#define APR_FROM_OS_ERROR(e)  (e)
-#define APR_TO_OS_ERROR(e)    (e)
-
-#define apr_get_os_error()    (errno)
-#define apr_set_os_error(e)   (errno = (e))
-
-/* A special case, only socket calls require this:
- */
-#define apr_get_netos_error() (errno)
-#define apr_set_netos_error(e) (errno = (e))
-
-/**
- * @addtogroup APR_STATUS_IS
- * @{
- */
-
-/** permission denied */
-#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)
-/** file exists */
-#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)
-/** path name is too long */
-#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)
-/**
- * no such file or directory
- * @remark
- * EMVSCATLG can be returned by the automounter on z/OS for
- * paths which do not exist.
- */
-#ifdef EMVSCATLG
-#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
-                                      || (s) == EMVSCATLG)
-#else
-#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)
-#endif
-/** not a directory */
-#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
-/** no space left on device */
-#ifdef EDQUOT
-#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
-                                      || (s) == EDQUOT)
-#else
-#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)
-#endif
-/** not enough memory */
-#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
-/** too many open files */
-#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)
-/** file table overflow */
-#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
-/** bad file # */
-#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)
-/** invalid argument */
-#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)
-/** illegal seek */
-#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)
-
-/** operation would block */
-#if !defined(EWOULDBLOCK) || !defined(EAGAIN)
-#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
-#elif (EWOULDBLOCK == EAGAIN)
-#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
-#else
-#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
-                                      || (s) == EWOULDBLOCK)
-#endif
-
-/** interrupted system call */
-#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR)
-/** socket operation on a non-socket */
-#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK)
-/** Connection Refused */
-#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED)
-/** operation now in progress */
-#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS)
-
-/**
- * Software caused connection abort
- * @remark
- * EPROTO on certain older kernels really means ECONNABORTED, so we need to
- * ignore it for them.  See discussion in new-httpd archives nh.9701 & nh.9603
- *
- * There is potentially a bug in Solaris 2.x x<6, and other boxes that
- * implement tcp sockets in userland (i.e. on top of STREAMS).  On these
- * systems, EPROTO can actually result in a fatal loop.  See PR#981 for
- * example.  It's hard to handle both uses of EPROTO.
- */
-#ifdef EPROTO
-#define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED \
-                                       || (s) == EPROTO)
-#else
-#define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED)
-#endif
-
-/** Connection Reset by peer */
-#define APR_STATUS_IS_ECONNRESET(s)      ((s) == APR_ECONNRESET)
-/** Operation timed out
- *  @deprecated */
-#define APR_STATUS_IS_ETIMEDOUT(s)      ((s) == APR_ETIMEDOUT)
-/** no route to host */
-#define APR_STATUS_IS_EHOSTUNREACH(s)    ((s) == APR_EHOSTUNREACH)
-/** network is unreachable */
-#define APR_STATUS_IS_ENETUNREACH(s)     ((s) == APR_ENETUNREACH)
-/** inappropiate file type or format */
-#define APR_STATUS_IS_EFTYPE(s)          ((s) == APR_EFTYPE)
-/** broken pipe */
-#define APR_STATUS_IS_EPIPE(s)           ((s) == APR_EPIPE)
-/** cross device link */
-#define APR_STATUS_IS_EXDEV(s)           ((s) == APR_EXDEV)
-/** Directory Not Empty */
-#define APR_STATUS_IS_ENOTEMPTY(s)       ((s) == APR_ENOTEMPTY || \
-                                          (s) == APR_EEXIST)
-/** Address Family not supported */
-#define APR_STATUS_IS_EAFNOSUPPORT(s)    ((s) == APR_EAFNOSUPPORT)
-/** @} */
-
-#endif /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_ERRNO_H */

Copied: vendor/apache/apr/1.5.2/include/apr_errno.h (from rev 9273, vendor/apache/apr/dist/include/apr_errno.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_errno.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_errno.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1315 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_ERRNO_H
+#define APR_ERRNO_H
+
+/**
+ * @file apr_errno.h
+ * @brief APR Error Codes
+ */
+
+#include "apr.h"
+
+#if APR_HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_errno Error Codes
+ * @ingroup APR
+ * @{
+ */
+
+/**
+ * Type for specifying an error or status code.
+ */
+typedef int apr_status_t;
+
+/**
+ * Return a human readable string describing the specified error.
+ * @param statcode The error code to get a string for.
+ * @param buf A buffer to hold the error string.
+ * @param bufsize Size of the buffer to hold the string.
+ */
+APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf,
+                                 apr_size_t bufsize);
+
+#if defined(DOXYGEN)
+/**
+ * @def APR_FROM_OS_ERROR(os_err_type syserr)
+ * Fold a platform specific error into an apr_status_t code.
+ * @return apr_status_t
+ * @param e The platform os error code.
+ * @warning  macro implementation; the syserr argument may be evaluated
+ *      multiple times.
+ */
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
+
+/**
+ * @def APR_TO_OS_ERROR(apr_status_t statcode)
+ * @return os_err_type
+ * Fold an apr_status_t code back to the native platform defined error.
+ * @param e The apr_status_t folded platform os error code.
+ * @warning  macro implementation; the statcode argument may be evaluated
+ *      multiple times.  If the statcode was not created by apr_get_os_error
+ *      or APR_FROM_OS_ERROR, the results are undefined.
+ */
+#define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
+
+/** @def apr_get_os_error()
+ * @return apr_status_t the last platform error, folded into apr_status_t, on most platforms
+ * @remark This retrieves errno, or calls a GetLastError() style function, and
+ *      folds it with APR_FROM_OS_ERROR.  Some platforms (such as OS2) have no
+ *      such mechanism, so this call may be unsupported.  Do NOT use this
+ *      call for socket errors from socket, send, recv etc!
+ */
+
+/** @def apr_set_os_error(e)
+ * Reset the last platform error, unfolded from an apr_status_t, on some platforms
+ * @param e The OS error folded in a prior call to APR_FROM_OS_ERROR()
+ * @warning This is a macro implementation; the statcode argument may be evaluated
+ *      multiple times.  If the statcode was not created by apr_get_os_error
+ *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets
+ *      errno, or calls a SetLastError() style function, unfolding statcode
+ *      with APR_TO_OS_ERROR.  Some platforms (such as OS2) have no such
+ *      mechanism, so this call may be unsupported.
+ */
+
+/** @def apr_get_netos_error()
+ * Return the last socket error, folded into apr_status_t, on all platforms
+ * @remark This retrieves errno or calls a GetLastSocketError() style function,
+ *      and folds it with APR_FROM_OS_ERROR.
+ */
+
+/** @def apr_set_netos_error(e)
+ * Reset the last socket error, unfolded from an apr_status_t
+ * @param e The socket error folded in a prior call to APR_FROM_OS_ERROR()
+ * @warning This is a macro implementation; the statcode argument may be evaluated
+ *      multiple times.  If the statcode was not created by apr_get_os_error
+ *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets
+ *      errno, or calls a WSASetLastError() style function, unfolding
+ *      socketcode with APR_TO_OS_ERROR.
+ */
+
+#endif /* defined(DOXYGEN) */
+
+/**
+ * APR_OS_START_ERROR is where the APR specific error values start.
+ */
+#define APR_OS_START_ERROR     20000
+/**
+ * APR_OS_ERRSPACE_SIZE is the maximum number of errors you can fit
+ *    into one of the error/status ranges below -- except for
+ *    APR_OS_START_USERERR, which see.
+ */
+#define APR_OS_ERRSPACE_SIZE 50000
+/**
+ * APR_UTIL_ERRSPACE_SIZE is the size of the space that is reserved for
+ * use within apr-util. This space is reserved above that used by APR
+ * internally.
+ * @note This number MUST be smaller than APR_OS_ERRSPACE_SIZE by a
+ *       large enough amount that APR has sufficient room for its
+ *       codes.
+ */
+#define APR_UTIL_ERRSPACE_SIZE 20000
+/**
+ * APR_OS_START_STATUS is where the APR specific status codes start.
+ */
+#define APR_OS_START_STATUS    (APR_OS_START_ERROR + APR_OS_ERRSPACE_SIZE)
+/**
+ * APR_UTIL_START_STATUS is where APR-Util starts defining its
+ * status codes.
+ */
+#define APR_UTIL_START_STATUS   (APR_OS_START_STATUS + \
+                           (APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE))
+/**
+ * APR_OS_START_USERERR are reserved for applications that use APR that
+ *     layer their own error codes along with APR's.  Note that the
+ *     error immediately following this one is set ten times farther
+ *     away than usual, so that users of apr have a lot of room in
+ *     which to declare custom error codes.
+ *
+ * In general applications should try and create unique error codes. To try
+ * and assist in finding suitable ranges of numbers to use, the following
+ * ranges are known to be used by the listed applications. If your
+ * application defines error codes please advise the range of numbers it
+ * uses to dev at apr.apache.org for inclusion in this list.
+ *
+ * Ranges shown are in relation to APR_OS_START_USERERR
+ *
+ * Subversion - Defined ranges, of less than 100, at intervals of 5000
+ *              starting at an offset of 5000, e.g.
+ *               +5000 to 5100,  +10000 to 10100
+ *
+ * Apache HTTPD - +2000 to 2999
+ */
+#define APR_OS_START_USERERR    (APR_OS_START_STATUS + APR_OS_ERRSPACE_SIZE)
+/**
+ * APR_OS_START_USEERR is obsolete, defined for compatibility only.
+ * Use APR_OS_START_USERERR instead.
+ */
+#define APR_OS_START_USEERR     APR_OS_START_USERERR
+/**
+ * APR_OS_START_CANONERR is where APR versions of errno values are defined
+ *     on systems which don't have the corresponding errno.
+ */
+#define APR_OS_START_CANONERR  (APR_OS_START_USERERR \
+                                 + (APR_OS_ERRSPACE_SIZE * 10))
+/**
+ * APR_OS_START_EAIERR folds EAI_ error codes from getaddrinfo() into
+ *     apr_status_t values.
+ */
+#define APR_OS_START_EAIERR    (APR_OS_START_CANONERR + APR_OS_ERRSPACE_SIZE)
+/**
+ * APR_OS_START_SYSERR folds platform-specific system error values into
+ *     apr_status_t values.
+ */
+#define APR_OS_START_SYSERR    (APR_OS_START_EAIERR + APR_OS_ERRSPACE_SIZE)
+
+/**
+ * @defgroup APR_ERROR_map APR Error Space
+ * <PRE>
+ * The following attempts to show the relation of the various constants
+ * used for mapping APR Status codes.
+ *
+ *       0
+ *
+ *  20,000     APR_OS_START_ERROR
+ *
+ *         + APR_OS_ERRSPACE_SIZE (50,000)
+ *
+ *  70,000      APR_OS_START_STATUS
+ *
+ *         + APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE (30,000)
+ *
+ * 100,000      APR_UTIL_START_STATUS
+ *
+ *         + APR_UTIL_ERRSPACE_SIZE (20,000)
+ *
+ * 120,000      APR_OS_START_USERERR
+ *
+ *         + 10 x APR_OS_ERRSPACE_SIZE (50,000 * 10)
+ *
+ * 620,000      APR_OS_START_CANONERR
+ *
+ *         + APR_OS_ERRSPACE_SIZE (50,000)
+ *
+ * 670,000      APR_OS_START_EAIERR
+ *
+ *         + APR_OS_ERRSPACE_SIZE (50,000)
+ *
+ * 720,000      APR_OS_START_SYSERR
+ *
+ * </PRE>
+ */
+
+/** no error. */
+#define APR_SUCCESS 0
+
+/**
+ * @defgroup APR_Error APR Error Values
+ * <PRE>
+ * <b>APR ERROR VALUES</b>
+ * APR_ENOSTAT      APR was unable to perform a stat on the file
+ * APR_ENOPOOL      APR was not provided a pool with which to allocate memory
+ * APR_EBADDATE     APR was given an invalid date
+ * APR_EINVALSOCK   APR was given an invalid socket
+ * APR_ENOPROC      APR was not given a process structure
+ * APR_ENOTIME      APR was not given a time structure
+ * APR_ENODIR       APR was not given a directory structure
+ * APR_ENOLOCK      APR was not given a lock structure
+ * APR_ENOPOLL      APR was not given a poll structure
+ * APR_ENOSOCKET    APR was not given a socket
+ * APR_ENOTHREAD    APR was not given a thread structure
+ * APR_ENOTHDKEY    APR was not given a thread key structure
+ * APR_ENOSHMAVAIL  There is no more shared memory available
+ * APR_EDSOOPEN     APR was unable to open the dso object.  For more
+ *                  information call apr_dso_error().
+ * APR_EGENERAL     General failure (specific information not available)
+ * APR_EBADIP       The specified IP address is invalid
+ * APR_EBADMASK     The specified netmask is invalid
+ * APR_ESYMNOTFOUND Could not find the requested symbol
+ * APR_ENOTENOUGHENTROPY Not enough entropy to continue
+ * </PRE>
+ *
+ * <PRE>
+ * <b>APR STATUS VALUES</b>
+ * APR_INCHILD        Program is currently executing in the child
+ * APR_INPARENT       Program is currently executing in the parent
+ * APR_DETACH         The thread is detached
+ * APR_NOTDETACH      The thread is not detached
+ * APR_CHILD_DONE     The child has finished executing
+ * APR_CHILD_NOTDONE  The child has not finished executing
+ * APR_TIMEUP         The operation did not finish before the timeout
+ * APR_INCOMPLETE     The operation was incomplete although some processing
+ *                    was performed and the results are partially valid
+ * APR_BADCH          Getopt found an option not in the option string
+ * APR_BADARG         Getopt found an option that is missing an argument
+ *                    and an argument was specified in the option string
+ * APR_EOF            APR has encountered the end of the file
+ * APR_NOTFOUND       APR was unable to find the socket in the poll structure
+ * APR_ANONYMOUS      APR is using anonymous shared memory
+ * APR_FILEBASED      APR is using a file name as the key to the shared memory
+ * APR_KEYBASED       APR is using a shared key as the key to the shared memory
+ * APR_EINIT          Ininitalizer value.  If no option has been found, but
+ *                    the status variable requires a value, this should be used
+ * APR_ENOTIMPL       The APR function has not been implemented on this
+ *                    platform, either because nobody has gotten to it yet,
+ *                    or the function is impossible on this platform.
+ * APR_EMISMATCH      Two passwords do not match.
+ * APR_EABSOLUTE      The given path was absolute.
+ * APR_ERELATIVE      The given path was relative.
+ * APR_EINCOMPLETE    The given path was neither relative nor absolute.
+ * APR_EABOVEROOT     The given path was above the root path.
+ * APR_EBUSY          The given lock was busy.
+ * APR_EPROC_UNKNOWN  The given process wasn't recognized by APR
+ * </PRE>
+ * @{
+ */
+/** @see APR_STATUS_IS_ENOSTAT */
+#define APR_ENOSTAT        (APR_OS_START_ERROR + 1)
+/** @see APR_STATUS_IS_ENOPOOL */
+#define APR_ENOPOOL        (APR_OS_START_ERROR + 2)
+/* empty slot: +3 */
+/** @see APR_STATUS_IS_EBADDATE */
+#define APR_EBADDATE       (APR_OS_START_ERROR + 4)
+/** @see APR_STATUS_IS_EINVALSOCK */
+#define APR_EINVALSOCK     (APR_OS_START_ERROR + 5)
+/** @see APR_STATUS_IS_ENOPROC */
+#define APR_ENOPROC        (APR_OS_START_ERROR + 6)
+/** @see APR_STATUS_IS_ENOTIME */
+#define APR_ENOTIME        (APR_OS_START_ERROR + 7)
+/** @see APR_STATUS_IS_ENODIR */
+#define APR_ENODIR         (APR_OS_START_ERROR + 8)
+/** @see APR_STATUS_IS_ENOLOCK */
+#define APR_ENOLOCK        (APR_OS_START_ERROR + 9)
+/** @see APR_STATUS_IS_ENOPOLL */
+#define APR_ENOPOLL        (APR_OS_START_ERROR + 10)
+/** @see APR_STATUS_IS_ENOSOCKET */
+#define APR_ENOSOCKET      (APR_OS_START_ERROR + 11)
+/** @see APR_STATUS_IS_ENOTHREAD */
+#define APR_ENOTHREAD      (APR_OS_START_ERROR + 12)
+/** @see APR_STATUS_IS_ENOTHDKEY */
+#define APR_ENOTHDKEY      (APR_OS_START_ERROR + 13)
+/** @see APR_STATUS_IS_EGENERAL */
+#define APR_EGENERAL       (APR_OS_START_ERROR + 14)
+/** @see APR_STATUS_IS_ENOSHMAVAIL */
+#define APR_ENOSHMAVAIL    (APR_OS_START_ERROR + 15)
+/** @see APR_STATUS_IS_EBADIP */
+#define APR_EBADIP         (APR_OS_START_ERROR + 16)
+/** @see APR_STATUS_IS_EBADMASK */
+#define APR_EBADMASK       (APR_OS_START_ERROR + 17)
+/* empty slot: +18 */
+/** @see APR_STATUS_IS_EDSOPEN */
+#define APR_EDSOOPEN       (APR_OS_START_ERROR + 19)
+/** @see APR_STATUS_IS_EABSOLUTE */
+#define APR_EABSOLUTE      (APR_OS_START_ERROR + 20)
+/** @see APR_STATUS_IS_ERELATIVE */
+#define APR_ERELATIVE      (APR_OS_START_ERROR + 21)
+/** @see APR_STATUS_IS_EINCOMPLETE */
+#define APR_EINCOMPLETE    (APR_OS_START_ERROR + 22)
+/** @see APR_STATUS_IS_EABOVEROOT */
+#define APR_EABOVEROOT     (APR_OS_START_ERROR + 23)
+/** @see APR_STATUS_IS_EBADPATH */
+#define APR_EBADPATH       (APR_OS_START_ERROR + 24)
+/** @see APR_STATUS_IS_EPATHWILD */
+#define APR_EPATHWILD      (APR_OS_START_ERROR + 25)
+/** @see APR_STATUS_IS_ESYMNOTFOUND */
+#define APR_ESYMNOTFOUND   (APR_OS_START_ERROR + 26)
+/** @see APR_STATUS_IS_EPROC_UNKNOWN */
+#define APR_EPROC_UNKNOWN  (APR_OS_START_ERROR + 27)
+/** @see APR_STATUS_IS_ENOTENOUGHENTROPY */
+#define APR_ENOTENOUGHENTROPY (APR_OS_START_ERROR + 28)
+/** @} */
+
+/**
+ * @defgroup APR_STATUS_IS Status Value Tests
+ * @warning For any particular error condition, more than one of these tests
+ *      may match. This is because platform-specific error codes may not
+ *      always match the semantics of the POSIX codes these tests (and the
+ *      corresponding APR error codes) are named after. A notable example
+ *      are the APR_STATUS_IS_ENOENT and APR_STATUS_IS_ENOTDIR tests on
+ *      Win32 platforms. The programmer should always be aware of this and
+ *      adjust the order of the tests accordingly.
+ * @{
+ */
+/**
+ * APR was unable to perform a stat on the file
+ * @warning always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_ENOSTAT(s)        ((s) == APR_ENOSTAT)
+/**
+ * APR was not provided a pool with which to allocate memory
+ * @warning always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_ENOPOOL(s)        ((s) == APR_ENOPOOL)
+/** APR was given an invalid date  */
+#define APR_STATUS_IS_EBADDATE(s)       ((s) == APR_EBADDATE)
+/** APR was given an invalid socket */
+#define APR_STATUS_IS_EINVALSOCK(s)     ((s) == APR_EINVALSOCK)
+/** APR was not given a process structure */
+#define APR_STATUS_IS_ENOPROC(s)        ((s) == APR_ENOPROC)
+/** APR was not given a time structure */
+#define APR_STATUS_IS_ENOTIME(s)        ((s) == APR_ENOTIME)
+/** APR was not given a directory structure */
+#define APR_STATUS_IS_ENODIR(s)         ((s) == APR_ENODIR)
+/** APR was not given a lock structure */
+#define APR_STATUS_IS_ENOLOCK(s)        ((s) == APR_ENOLOCK)
+/** APR was not given a poll structure */
+#define APR_STATUS_IS_ENOPOLL(s)        ((s) == APR_ENOPOLL)
+/** APR was not given a socket */
+#define APR_STATUS_IS_ENOSOCKET(s)      ((s) == APR_ENOSOCKET)
+/** APR was not given a thread structure */
+#define APR_STATUS_IS_ENOTHREAD(s)      ((s) == APR_ENOTHREAD)
+/** APR was not given a thread key structure */
+#define APR_STATUS_IS_ENOTHDKEY(s)      ((s) == APR_ENOTHDKEY)
+/** Generic Error which can not be put into another spot */
+#define APR_STATUS_IS_EGENERAL(s)       ((s) == APR_EGENERAL)
+/** There is no more shared memory available */
+#define APR_STATUS_IS_ENOSHMAVAIL(s)    ((s) == APR_ENOSHMAVAIL)
+/** The specified IP address is invalid */
+#define APR_STATUS_IS_EBADIP(s)         ((s) == APR_EBADIP)
+/** The specified netmask is invalid */
+#define APR_STATUS_IS_EBADMASK(s)       ((s) == APR_EBADMASK)
+/* empty slot: +18 */
+/**
+ * APR was unable to open the dso object.
+ * For more information call apr_dso_error().
+ */
+#if defined(WIN32)
+#define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN \
+                       || APR_TO_OS_ERROR(s) == ERROR_MOD_NOT_FOUND)
+#else
+#define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN)
+#endif
+/** The given path was absolute. */
+#define APR_STATUS_IS_EABSOLUTE(s)      ((s) == APR_EABSOLUTE)
+/** The given path was relative. */
+#define APR_STATUS_IS_ERELATIVE(s)      ((s) == APR_ERELATIVE)
+/** The given path was neither relative nor absolute. */
+#define APR_STATUS_IS_EINCOMPLETE(s)    ((s) == APR_EINCOMPLETE)
+/** The given path was above the root path. */
+#define APR_STATUS_IS_EABOVEROOT(s)     ((s) == APR_EABOVEROOT)
+/** The given path was bad. */
+#define APR_STATUS_IS_EBADPATH(s)       ((s) == APR_EBADPATH)
+/** The given path contained wildcards. */
+#define APR_STATUS_IS_EPATHWILD(s)      ((s) == APR_EPATHWILD)
+/** Could not find the requested symbol.
+ * For more information call apr_dso_error().
+ */
+#if defined(WIN32)
+#define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND \
+                       || APR_TO_OS_ERROR(s) == ERROR_PROC_NOT_FOUND)
+#else
+#define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND)
+#endif
+/** The given process was not recognized by APR. */
+#define APR_STATUS_IS_EPROC_UNKNOWN(s)  ((s) == APR_EPROC_UNKNOWN)
+/** APR could not gather enough entropy to continue. */
+#define APR_STATUS_IS_ENOTENOUGHENTROPY(s) ((s) == APR_ENOTENOUGHENTROPY)
+
+/** @} */
+
+/**
+ * @addtogroup APR_Error
+ * @{
+ */
+/** @see APR_STATUS_IS_INCHILD */
+#define APR_INCHILD        (APR_OS_START_STATUS + 1)
+/** @see APR_STATUS_IS_INPARENT */
+#define APR_INPARENT       (APR_OS_START_STATUS + 2)
+/** @see APR_STATUS_IS_DETACH */
+#define APR_DETACH         (APR_OS_START_STATUS + 3)
+/** @see APR_STATUS_IS_NOTDETACH */
+#define APR_NOTDETACH      (APR_OS_START_STATUS + 4)
+/** @see APR_STATUS_IS_CHILD_DONE */
+#define APR_CHILD_DONE     (APR_OS_START_STATUS + 5)
+/** @see APR_STATUS_IS_CHILD_NOTDONE */
+#define APR_CHILD_NOTDONE  (APR_OS_START_STATUS + 6)
+/** @see APR_STATUS_IS_TIMEUP */
+#define APR_TIMEUP         (APR_OS_START_STATUS + 7)
+/** @see APR_STATUS_IS_INCOMPLETE */
+#define APR_INCOMPLETE     (APR_OS_START_STATUS + 8)
+/* empty slot: +9 */
+/* empty slot: +10 */
+/* empty slot: +11 */
+/** @see APR_STATUS_IS_BADCH */
+#define APR_BADCH          (APR_OS_START_STATUS + 12)
+/** @see APR_STATUS_IS_BADARG */
+#define APR_BADARG         (APR_OS_START_STATUS + 13)
+/** @see APR_STATUS_IS_EOF */
+#define APR_EOF            (APR_OS_START_STATUS + 14)
+/** @see APR_STATUS_IS_NOTFOUND */
+#define APR_NOTFOUND       (APR_OS_START_STATUS + 15)
+/* empty slot: +16 */
+/* empty slot: +17 */
+/* empty slot: +18 */
+/** @see APR_STATUS_IS_ANONYMOUS */
+#define APR_ANONYMOUS      (APR_OS_START_STATUS + 19)
+/** @see APR_STATUS_IS_FILEBASED */
+#define APR_FILEBASED      (APR_OS_START_STATUS + 20)
+/** @see APR_STATUS_IS_KEYBASED */
+#define APR_KEYBASED       (APR_OS_START_STATUS + 21)
+/** @see APR_STATUS_IS_EINIT */
+#define APR_EINIT          (APR_OS_START_STATUS + 22)
+/** @see APR_STATUS_IS_ENOTIMPL */
+#define APR_ENOTIMPL       (APR_OS_START_STATUS + 23)
+/** @see APR_STATUS_IS_EMISMATCH */
+#define APR_EMISMATCH      (APR_OS_START_STATUS + 24)
+/** @see APR_STATUS_IS_EBUSY */
+#define APR_EBUSY          (APR_OS_START_STATUS + 25)
+/** @} */
+
+/**
+ * @addtogroup APR_STATUS_IS
+ * @{
+ */
+/**
+ * Program is currently executing in the child
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code */
+#define APR_STATUS_IS_INCHILD(s)        ((s) == APR_INCHILD)
+/**
+ * Program is currently executing in the parent
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_INPARENT(s)       ((s) == APR_INPARENT)
+/**
+ * The thread is detached
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_DETACH(s)         ((s) == APR_DETACH)
+/**
+ * The thread is not detached
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_NOTDETACH(s)      ((s) == APR_NOTDETACH)
+/**
+ * The child has finished executing
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_CHILD_DONE(s)     ((s) == APR_CHILD_DONE)
+/**
+ * The child has not finished executing
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_CHILD_NOTDONE(s)  ((s) == APR_CHILD_NOTDONE)
+/**
+ * The operation did not finish before the timeout
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP)
+/**
+ * The operation was incomplete although some processing was performed
+ * and the results are partially valid.
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_INCOMPLETE(s)     ((s) == APR_INCOMPLETE)
+/* empty slot: +9 */
+/* empty slot: +10 */
+/* empty slot: +11 */
+/**
+ * Getopt found an option not in the option string
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_BADCH(s)          ((s) == APR_BADCH)
+/**
+ * Getopt found an option not in the option string and an argument was
+ * specified in the option string
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_BADARG(s)         ((s) == APR_BADARG)
+/**
+ * APR has encountered the end of the file
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_EOF(s)            ((s) == APR_EOF)
+/**
+ * APR was unable to find the socket in the poll structure
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_NOTFOUND(s)       ((s) == APR_NOTFOUND)
+/* empty slot: +16 */
+/* empty slot: +17 */
+/* empty slot: +18 */
+/**
+ * APR is using anonymous shared memory
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_ANONYMOUS(s)      ((s) == APR_ANONYMOUS)
+/**
+ * APR is using a file name as the key to the shared memory
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_FILEBASED(s)      ((s) == APR_FILEBASED)
+/**
+ * APR is using a shared key as the key to the shared memory
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_KEYBASED(s)       ((s) == APR_KEYBASED)
+/**
+ * Ininitalizer value.  If no option has been found, but
+ * the status variable requires a value, this should be used
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_EINIT(s)          ((s) == APR_EINIT)
+/**
+ * The APR function has not been implemented on this
+ * platform, either because nobody has gotten to it yet,
+ * or the function is impossible on this platform.
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_ENOTIMPL(s)       ((s) == APR_ENOTIMPL)
+/**
+ * Two passwords do not match.
+ * @warning
+ * always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_EMISMATCH(s)      ((s) == APR_EMISMATCH)
+/**
+ * The given lock was busy
+ * @warning always use this test, as platform-specific variances may meet this
+ * more than one error code
+ */
+#define APR_STATUS_IS_EBUSY(s)          ((s) == APR_EBUSY)
+
+/** @} */
+
+/**
+ * @addtogroup APR_Error APR Error Values
+ * @{
+ */
+/* APR CANONICAL ERROR VALUES */
+/** @see APR_STATUS_IS_EACCES */
+#ifdef EACCES
+#define APR_EACCES EACCES
+#else
+#define APR_EACCES         (APR_OS_START_CANONERR + 1)
+#endif
+
+/** @see APR_STATUS_IS_EEXIST */
+#ifdef EEXIST
+#define APR_EEXIST EEXIST
+#else
+#define APR_EEXIST         (APR_OS_START_CANONERR + 2)
+#endif
+
+/** @see APR_STATUS_IS_ENAMETOOLONG */
+#ifdef ENAMETOOLONG
+#define APR_ENAMETOOLONG ENAMETOOLONG
+#else
+#define APR_ENAMETOOLONG   (APR_OS_START_CANONERR + 3)
+#endif
+
+/** @see APR_STATUS_IS_ENOENT */
+#ifdef ENOENT
+#define APR_ENOENT ENOENT
+#else
+#define APR_ENOENT         (APR_OS_START_CANONERR + 4)
+#endif
+
+/** @see APR_STATUS_IS_ENOTDIR */
+#ifdef ENOTDIR
+#define APR_ENOTDIR ENOTDIR
+#else
+#define APR_ENOTDIR        (APR_OS_START_CANONERR + 5)
+#endif
+
+/** @see APR_STATUS_IS_ENOSPC */
+#ifdef ENOSPC
+#define APR_ENOSPC ENOSPC
+#else
+#define APR_ENOSPC         (APR_OS_START_CANONERR + 6)
+#endif
+
+/** @see APR_STATUS_IS_ENOMEM */
+#ifdef ENOMEM
+#define APR_ENOMEM ENOMEM
+#else
+#define APR_ENOMEM         (APR_OS_START_CANONERR + 7)
+#endif
+
+/** @see APR_STATUS_IS_EMFILE */
+#ifdef EMFILE
+#define APR_EMFILE EMFILE
+#else
+#define APR_EMFILE         (APR_OS_START_CANONERR + 8)
+#endif
+
+/** @see APR_STATUS_IS_ENFILE */
+#ifdef ENFILE
+#define APR_ENFILE ENFILE
+#else
+#define APR_ENFILE         (APR_OS_START_CANONERR + 9)
+#endif
+
+/** @see APR_STATUS_IS_EBADF */
+#ifdef EBADF
+#define APR_EBADF EBADF
+#else
+#define APR_EBADF          (APR_OS_START_CANONERR + 10)
+#endif
+
+/** @see APR_STATUS_IS_EINVAL */
+#ifdef EINVAL
+#define APR_EINVAL EINVAL
+#else
+#define APR_EINVAL         (APR_OS_START_CANONERR + 11)
+#endif
+
+/** @see APR_STATUS_IS_ESPIPE */
+#ifdef ESPIPE
+#define APR_ESPIPE ESPIPE
+#else
+#define APR_ESPIPE         (APR_OS_START_CANONERR + 12)
+#endif
+
+/**
+ * @see APR_STATUS_IS_EAGAIN
+ * @warning use APR_STATUS_IS_EAGAIN instead of just testing this value
+ */
+#ifdef EAGAIN
+#define APR_EAGAIN EAGAIN
+#elif defined(EWOULDBLOCK)
+#define APR_EAGAIN EWOULDBLOCK
+#else
+#define APR_EAGAIN         (APR_OS_START_CANONERR + 13)
+#endif
+
+/** @see APR_STATUS_IS_EINTR */
+#ifdef EINTR
+#define APR_EINTR EINTR
+#else
+#define APR_EINTR          (APR_OS_START_CANONERR + 14)
+#endif
+
+/** @see APR_STATUS_IS_ENOTSOCK */
+#ifdef ENOTSOCK
+#define APR_ENOTSOCK ENOTSOCK
+#else
+#define APR_ENOTSOCK       (APR_OS_START_CANONERR + 15)
+#endif
+
+/** @see APR_STATUS_IS_ECONNREFUSED */
+#ifdef ECONNREFUSED
+#define APR_ECONNREFUSED ECONNREFUSED
+#else
+#define APR_ECONNREFUSED   (APR_OS_START_CANONERR + 16)
+#endif
+
+/** @see APR_STATUS_IS_EINPROGRESS */
+#ifdef EINPROGRESS
+#define APR_EINPROGRESS EINPROGRESS
+#else
+#define APR_EINPROGRESS    (APR_OS_START_CANONERR + 17)
+#endif
+
+/**
+ * @see APR_STATUS_IS_ECONNABORTED
+ * @warning use APR_STATUS_IS_ECONNABORTED instead of just testing this value
+ */
+
+#ifdef ECONNABORTED
+#define APR_ECONNABORTED ECONNABORTED
+#else
+#define APR_ECONNABORTED   (APR_OS_START_CANONERR + 18)
+#endif
+
+/** @see APR_STATUS_IS_ECONNRESET */
+#ifdef ECONNRESET
+#define APR_ECONNRESET ECONNRESET
+#else
+#define APR_ECONNRESET     (APR_OS_START_CANONERR + 19)
+#endif
+
+/** @see APR_STATUS_IS_ETIMEDOUT
+ *  @deprecated */
+#ifdef ETIMEDOUT
+#define APR_ETIMEDOUT ETIMEDOUT
+#else
+#define APR_ETIMEDOUT      (APR_OS_START_CANONERR + 20)
+#endif
+
+/** @see APR_STATUS_IS_EHOSTUNREACH */
+#ifdef EHOSTUNREACH
+#define APR_EHOSTUNREACH EHOSTUNREACH
+#else
+#define APR_EHOSTUNREACH   (APR_OS_START_CANONERR + 21)
+#endif
+
+/** @see APR_STATUS_IS_ENETUNREACH */
+#ifdef ENETUNREACH
+#define APR_ENETUNREACH ENETUNREACH
+#else
+#define APR_ENETUNREACH    (APR_OS_START_CANONERR + 22)
+#endif
+
+/** @see APR_STATUS_IS_EFTYPE */
+#ifdef EFTYPE
+#define APR_EFTYPE EFTYPE
+#else
+#define APR_EFTYPE        (APR_OS_START_CANONERR + 23)
+#endif
+
+/** @see APR_STATUS_IS_EPIPE */
+#ifdef EPIPE
+#define APR_EPIPE EPIPE
+#else
+#define APR_EPIPE         (APR_OS_START_CANONERR + 24)
+#endif
+
+/** @see APR_STATUS_IS_EXDEV */
+#ifdef EXDEV
+#define APR_EXDEV EXDEV
+#else
+#define APR_EXDEV         (APR_OS_START_CANONERR + 25)
+#endif
+
+/** @see APR_STATUS_IS_ENOTEMPTY */
+#ifdef ENOTEMPTY
+#define APR_ENOTEMPTY ENOTEMPTY
+#else
+#define APR_ENOTEMPTY     (APR_OS_START_CANONERR + 26)
+#endif
+
+/** @see APR_STATUS_IS_EAFNOSUPPORT */
+#ifdef EAFNOSUPPORT
+#define APR_EAFNOSUPPORT EAFNOSUPPORT
+#else
+#define APR_EAFNOSUPPORT  (APR_OS_START_CANONERR + 27)
+#endif
+
+/** @} */
+
+#if defined(OS2) && !defined(DOXYGEN)
+
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
+#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
+
+#define INCL_DOSERRORS
+#define INCL_DOS
+
+/* Leave these undefined.
+ * OS2 doesn't rely on the errno concept.
+ * The API calls always return a result codes which
+ * should be filtered through APR_FROM_OS_ERROR().
+ *
+ * #define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))
+ * #define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))
+ */
+
+/* A special case, only socket calls require this;
+ */
+#define apr_get_netos_error()   (APR_FROM_OS_ERROR(errno))
+#define apr_set_netos_error(e)  (errno = APR_TO_OS_ERROR(e))
+
+/* And this needs to be greped away for good:
+ */
+#define APR_OS2_STATUS(e) (APR_FROM_OS_ERROR(e))
+
+/* These can't sit in a private header, so in spite of the extra size,
+ * they need to be made available here.
+ */
+#define SOCBASEERR              10000
+#define SOCEPERM                (SOCBASEERR+1)             /* Not owner */
+#define SOCESRCH                (SOCBASEERR+3)             /* No such process */
+#define SOCEINTR                (SOCBASEERR+4)             /* Interrupted system call */
+#define SOCENXIO                (SOCBASEERR+6)             /* No such device or address */
+#define SOCEBADF                (SOCBASEERR+9)             /* Bad file number */
+#define SOCEACCES               (SOCBASEERR+13)            /* Permission denied */
+#define SOCEFAULT               (SOCBASEERR+14)            /* Bad address */
+#define SOCEINVAL               (SOCBASEERR+22)            /* Invalid argument */
+#define SOCEMFILE               (SOCBASEERR+24)            /* Too many open files */
+#define SOCEPIPE                (SOCBASEERR+32)            /* Broken pipe */
+#define SOCEOS2ERR              (SOCBASEERR+100)           /* OS/2 Error */
+#define SOCEWOULDBLOCK          (SOCBASEERR+35)            /* Operation would block */
+#define SOCEINPROGRESS          (SOCBASEERR+36)            /* Operation now in progress */
+#define SOCEALREADY             (SOCBASEERR+37)            /* Operation already in progress */
+#define SOCENOTSOCK             (SOCBASEERR+38)            /* Socket operation on non-socket */
+#define SOCEDESTADDRREQ         (SOCBASEERR+39)            /* Destination address required */
+#define SOCEMSGSIZE             (SOCBASEERR+40)            /* Message too long */
+#define SOCEPROTOTYPE           (SOCBASEERR+41)            /* Protocol wrong type for socket */
+#define SOCENOPROTOOPT          (SOCBASEERR+42)            /* Protocol not available */
+#define SOCEPROTONOSUPPORT      (SOCBASEERR+43)            /* Protocol not supported */
+#define SOCESOCKTNOSUPPORT      (SOCBASEERR+44)            /* Socket type not supported */
+#define SOCEOPNOTSUPP           (SOCBASEERR+45)            /* Operation not supported on socket */
+#define SOCEPFNOSUPPORT         (SOCBASEERR+46)            /* Protocol family not supported */
+#define SOCEAFNOSUPPORT         (SOCBASEERR+47)            /* Address family not supported by protocol family */
+#define SOCEADDRINUSE           (SOCBASEERR+48)            /* Address already in use */
+#define SOCEADDRNOTAVAIL        (SOCBASEERR+49)            /* Can't assign requested address */
+#define SOCENETDOWN             (SOCBASEERR+50)            /* Network is down */
+#define SOCENETUNREACH          (SOCBASEERR+51)            /* Network is unreachable */
+#define SOCENETRESET            (SOCBASEERR+52)            /* Network dropped connection on reset */
+#define SOCECONNABORTED         (SOCBASEERR+53)            /* Software caused connection abort */
+#define SOCECONNRESET           (SOCBASEERR+54)            /* Connection reset by peer */
+#define SOCENOBUFS              (SOCBASEERR+55)            /* No buffer space available */
+#define SOCEISCONN              (SOCBASEERR+56)            /* Socket is already connected */
+#define SOCENOTCONN             (SOCBASEERR+57)            /* Socket is not connected */
+#define SOCESHUTDOWN            (SOCBASEERR+58)            /* Can't send after socket shutdown */
+#define SOCETOOMANYREFS         (SOCBASEERR+59)            /* Too many references: can't splice */
+#define SOCETIMEDOUT            (SOCBASEERR+60)            /* Connection timed out */
+#define SOCECONNREFUSED         (SOCBASEERR+61)            /* Connection refused */
+#define SOCELOOP                (SOCBASEERR+62)            /* Too many levels of symbolic links */
+#define SOCENAMETOOLONG         (SOCBASEERR+63)            /* File name too long */
+#define SOCEHOSTDOWN            (SOCBASEERR+64)            /* Host is down */
+#define SOCEHOSTUNREACH         (SOCBASEERR+65)            /* No route to host */
+#define SOCENOTEMPTY            (SOCBASEERR+66)            /* Directory not empty */
+
+/* APR CANONICAL ERROR TESTS */
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \
+                || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \
+                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \
+                || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS \
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \
+                || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \
+                || (s) == APR_OS_START_SYSERR + SOCENAMETOOLONG)
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \
+                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES \
+                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED)
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
+                || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \
+                || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE)
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION)
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \
+                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \
+                || (s) == APR_OS_START_SYSERR + SOCEWOULDBLOCK \
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION)
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
+                || (s) == APR_OS_START_SYSERR + SOCEINTR)
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
+                || (s) == APR_OS_START_SYSERR + SOCENOTSOCK)
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
+                || (s) == APR_OS_START_SYSERR + SOCECONNREFUSED)
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
+                || (s) == APR_OS_START_SYSERR + SOCEINPROGRESS)
+#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
+                || (s) == APR_OS_START_SYSERR + SOCECONNABORTED)
+#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
+                || (s) == APR_OS_START_SYSERR + SOCECONNRESET)
+/* XXX deprecated */
+#define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \
+                || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)
+#undef APR_STATUS_IS_TIMEUP
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
+                || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)
+#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
+                || (s) == APR_OS_START_SYSERR + SOCEHOSTUNREACH)
+#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
+                || (s) == APR_OS_START_SYSERR + SOCENETUNREACH)
+#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)
+#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \
+                || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE \
+                || (s) == APR_OS_START_SYSERR + SOCEPIPE)
+#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)
+#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \
+                || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY \
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)
+#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_AFNOSUPPORT \
+                || (s) == APR_OS_START_SYSERR + SOCEAFNOSUPPORT)
+
+/*
+    Sorry, too tired to wrap this up for OS2... feel free to
+    fit the following into their best matches.
+
+    { ERROR_NO_SIGNAL_SENT,     ESRCH           },
+    { SOCEALREADY,              EALREADY        },
+    { SOCEDESTADDRREQ,          EDESTADDRREQ    },
+    { SOCEMSGSIZE,              EMSGSIZE        },
+    { SOCEPROTOTYPE,            EPROTOTYPE      },
+    { SOCENOPROTOOPT,           ENOPROTOOPT     },
+    { SOCEPROTONOSUPPORT,       EPROTONOSUPPORT },
+    { SOCESOCKTNOSUPPORT,       ESOCKTNOSUPPORT },
+    { SOCEOPNOTSUPP,            EOPNOTSUPP      },
+    { SOCEPFNOSUPPORT,          EPFNOSUPPORT    },
+    { SOCEADDRINUSE,            EADDRINUSE      },
+    { SOCEADDRNOTAVAIL,         EADDRNOTAVAIL   },
+    { SOCENETDOWN,              ENETDOWN        },
+    { SOCENETRESET,             ENETRESET       },
+    { SOCENOBUFS,               ENOBUFS         },
+    { SOCEISCONN,               EISCONN         },
+    { SOCENOTCONN,              ENOTCONN        },
+    { SOCESHUTDOWN,             ESHUTDOWN       },
+    { SOCETOOMANYREFS,          ETOOMANYREFS    },
+    { SOCELOOP,                 ELOOP           },
+    { SOCEHOSTDOWN,             EHOSTDOWN       },
+    { SOCENOTEMPTY,             ENOTEMPTY       },
+    { SOCEPIPE,                 EPIPE           }
+*/
+
+#elif defined(WIN32) && !defined(DOXYGEN) /* !defined(OS2) */
+
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
+#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
+
+#define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))
+#define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))
+
+/* A special case, only socket calls require this:
+ */
+#define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))
+#define apr_set_netos_error(e)   (WSASetLastError(APR_TO_OS_ERROR(e)))
+
+/* APR CANONICAL ERROR TESTS */
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \
+                || (s) == APR_OS_START_SYSERR + ERROR_CANNOT_MAKE \
+                || (s) == APR_OS_START_SYSERR + ERROR_CURRENT_DIRECTORY \
+                || (s) == APR_OS_START_SYSERR + ERROR_DRIVE_LOCKED \
+                || (s) == APR_OS_START_SYSERR + ERROR_FAIL_I24 \
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_FAILED \
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_LOCKED \
+                || (s) == APR_OS_START_SYSERR + ERROR_NETWORK_ACCESS_DENIED \
+                || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \
+                || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS)
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \
+                || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \
+                || (s) == APR_OS_START_SYSERR + WSAENAMETOOLONG)
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \
+                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
+                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES)
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR \
+                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_NETPATH \
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_NET_NAME \
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_PATHNAME \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DRIVE \
+                || (s) == APR_OS_START_SYSERR + ERROR_DIRECTORY)
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
+                || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM \
+                || (s) == APR_OS_START_SYSERR + ERROR_ARENA_TRASHED \
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_MEMORY \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_BLOCK \
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_QUOTA \
+                || (s) == APR_OS_START_SYSERR + ERROR_OUTOFMEMORY)
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \
+                || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_TARGET_HANDLE)
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_ACCESS \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DATA \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \
+                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \
+                || (s) == APR_OS_START_SYSERR + ERROR_SEEK_ON_DEVICE \
+                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_PROC_SLOTS \
+                || (s) == APR_OS_START_SYSERR + ERROR_NESTING_NOT_ALLOWED \
+                || (s) == APR_OS_START_SYSERR + ERROR_MAX_THRDS_REACHED \
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \
+                || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
+                || (s) == APR_OS_START_SYSERR + WSAEINTR)
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
+                || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
+                || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
+                || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)
+#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
+                || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)
+#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
+                || (s) == APR_OS_START_SYSERR + ERROR_NETNAME_DELETED \
+                || (s) == APR_OS_START_SYSERR + WSAECONNRESET)
+/* XXX deprecated */
+#define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
+#undef APR_STATUS_IS_TIMEUP
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
+#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
+                || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)
+#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
+                || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)
+#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE \
+                || (s) == APR_OS_START_SYSERR + ERROR_EXE_MACHINE_TYPE_MISMATCH \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DLL \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_MODULETYPE \
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_EXE_FORMAT \
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_EXE_SIGNATURE \
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_CORRUPT \
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_FORMAT)
+#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \
+                || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE)
+#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)
+#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \
+                || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY)
+#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \
+                || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)
+
+#elif defined(NETWARE) && defined(USE_WINSOCK) && !defined(DOXYGEN) /* !defined(OS2) && !defined(WIN32) */
+
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
+#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
+
+#define apr_get_os_error()    (errno)
+#define apr_set_os_error(e)   (errno = (e))
+
+/* A special case, only socket calls require this: */
+#define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))
+#define apr_set_netos_error(e)  (WSASetLastError(APR_TO_OS_ERROR(e)))
+
+/* APR CANONICAL ERROR TESTS */
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)
+
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
+                || (s) ==                       EWOULDBLOCK \
+                || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
+                || (s) == APR_OS_START_SYSERR + WSAEINTR)
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
+                || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
+                || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
+                || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)
+#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
+                || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)
+#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
+                || (s) == APR_OS_START_SYSERR + WSAECONNRESET)
+/* XXX deprecated */
+#define APR_STATUS_IS_ETIMEDOUT(s)       ((s) == APR_ETIMEDOUT \
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
+#undef APR_STATUS_IS_TIMEUP
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
+#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
+                || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)
+#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
+                || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)
+#define APR_STATUS_IS_ENETDOWN(s)       ((s) == APR_OS_START_SYSERR + WSAENETDOWN)
+#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)
+#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE)
+#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV)
+#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY)
+#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \
+                || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)
+
+#else /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */
+
+/*
+ *  os error codes are clib error codes
+ */
+#define APR_FROM_OS_ERROR(e)  (e)
+#define APR_TO_OS_ERROR(e)    (e)
+
+#define apr_get_os_error()    (errno)
+#define apr_set_os_error(e)   (errno = (e))
+
+/* A special case, only socket calls require this:
+ */
+#define apr_get_netos_error() (errno)
+#define apr_set_netos_error(e) (errno = (e))
+
+/**
+ * @addtogroup APR_STATUS_IS
+ * @{
+ */
+
+/** permission denied */
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)
+/** file exists */
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)
+/** path name is too long */
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)
+/**
+ * no such file or directory
+ * @remark
+ * EMVSCATLG can be returned by the automounter on z/OS for
+ * paths which do not exist.
+ */
+#ifdef EMVSCATLG
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
+                                      || (s) == EMVSCATLG)
+#else
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)
+#endif
+/** not a directory */
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
+/** no space left on device */
+#ifdef EDQUOT
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
+                                      || (s) == EDQUOT)
+#else
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)
+#endif
+/** not enough memory */
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
+/** too many open files */
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)
+/** file table overflow */
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
+/** bad file # */
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)
+/** invalid argument */
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)
+/** illegal seek */
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)
+
+/** operation would block */
+#if !defined(EWOULDBLOCK) || !defined(EAGAIN)
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
+#elif (EWOULDBLOCK == EAGAIN)
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
+#else
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
+                                      || (s) == EWOULDBLOCK)
+#endif
+
+/** interrupted system call */
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR)
+/** socket operation on a non-socket */
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK)
+/** Connection Refused */
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED)
+/** operation now in progress */
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS)
+
+/**
+ * Software caused connection abort
+ * @remark
+ * EPROTO on certain older kernels really means ECONNABORTED, so we need to
+ * ignore it for them.  See discussion in new-httpd archives nh.9701 & nh.9603
+ *
+ * There is potentially a bug in Solaris 2.x x<6, and other boxes that
+ * implement tcp sockets in userland (i.e. on top of STREAMS).  On these
+ * systems, EPROTO can actually result in a fatal loop.  See PR#981 for
+ * example.  It's hard to handle both uses of EPROTO.
+ */
+#ifdef EPROTO
+#define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED \
+                                       || (s) == EPROTO)
+#else
+#define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED)
+#endif
+
+/** Connection Reset by peer */
+#define APR_STATUS_IS_ECONNRESET(s)      ((s) == APR_ECONNRESET)
+/** Operation timed out
+ *  @deprecated */
+#define APR_STATUS_IS_ETIMEDOUT(s)      ((s) == APR_ETIMEDOUT)
+/** no route to host */
+#define APR_STATUS_IS_EHOSTUNREACH(s)    ((s) == APR_EHOSTUNREACH)
+/** network is unreachable */
+#define APR_STATUS_IS_ENETUNREACH(s)     ((s) == APR_ENETUNREACH)
+/** inappropiate file type or format */
+#define APR_STATUS_IS_EFTYPE(s)          ((s) == APR_EFTYPE)
+/** broken pipe */
+#define APR_STATUS_IS_EPIPE(s)           ((s) == APR_EPIPE)
+/** cross device link */
+#define APR_STATUS_IS_EXDEV(s)           ((s) == APR_EXDEV)
+/** Directory Not Empty */
+#define APR_STATUS_IS_ENOTEMPTY(s)       ((s) == APR_ENOTEMPTY || \
+                                          (s) == APR_EEXIST)
+/** Address Family not supported */
+#define APR_STATUS_IS_EAFNOSUPPORT(s)    ((s) == APR_EAFNOSUPPORT)
+/** @} */
+
+#endif /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_ERRNO_H */

Copied: vendor/apache/apr/1.5.2/include/apr_escape.h (from rev 9273, vendor/apache/apr/dist/include/apr_escape.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_escape.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_escape.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,374 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @file apr_escape.h
+ * @brief APR-UTIL Escaping
+ */
+#ifndef APR_ESCAPE_H
+#define APR_ESCAPE_H
+#include "apr.h"
+#include "apr_general.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup APR_Util_Escaping Escape functions
+ * @ingroup APR
+ * @{
+ */
+
+/* Simple escape/unescape functions.
+ *
+ */
+
+/**
+ * When passing a string to one of the escape functions, this value can be
+ * passed to indicate a string-valued key, and have the length computed
+ * automatically.
+ */
+#define APR_ESCAPE_STRING     (-1)
+
+/**
+ * Perform shell escaping on the provided string.
+ * 
+ * Shell escaping causes characters to be prefixed with a '\' character.
+ * @param escaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param str The original string
+ * @param slen The length of the original string, or APR_ESCAPE_STRING
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if no changes to the string were
+ * detected or the string was NULL
+ */
+APR_DECLARE(apr_status_t) apr_escape_shell(char *escaped, const char *str,
+        apr_ssize_t slen, apr_size_t *len);
+
+/**
+ * Perform shell escaping on the provided string, returning the result
+ * from the pool.
+ *
+ * Shell escaping causes characters to be prefixed with a '\' character.
+ *
+ * If no characters were escaped, the original string is returned.
+ * @param p Pool to allocate from
+ * @param str The original string
+ * @return the encoded string, allocated from the pool, or the original
+ * string if no escaping took place or the string was NULL.
+ */
+APR_DECLARE(const char *) apr_pescape_shell(apr_pool_t *p, const char *str)
+        __attribute__((nonnull(1)));
+
+/**
+ * Unescapes a URL, leaving reserved characters intact.
+ * @param escaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param url String to be unescaped
+ * @param slen The length of the original url, or APR_ESCAPE_STRING
+ * @param forbid Optional list of forbidden characters, in addition to
+ * 0x00
+ * @param reserved Optional list of reserved characters that will be
+ * left unescaped
+ * @param plus If non zero, '+' is converted to ' ' as per
+ * application/x-www-form-urlencoded encoding
+ * @param len If set, the length of the escaped string will be returned
+ * @return APR_SUCCESS on success, APR_NOTFOUND if no characters are
+ * decoded or the string is NULL, APR_EINVAL if a bad escape sequence is
+ * found, APR_BADCH if a character on the forbid list is found.
+ */
+APR_DECLARE(apr_status_t) apr_unescape_url(char *escaped, const char *url,
+        apr_ssize_t slen, const char *forbid, const char *reserved, int plus,
+        apr_size_t *len);
+
+/**
+ * Unescapes a URL, leaving reserved characters intact, returning the
+ * result from a pool.
+ * @param p Pool to allocate from
+ * @param url String to be unescaped in place
+ * @param forbid Optional list of forbidden characters, in addition to
+ * 0x00
+ * @param reserved Optional list of reserved characters that will be
+ * left unescaped
+ * @param plus If non zero, '+' is converted to ' ' as per
+ * application/x-www-form-urlencoded encoding
+ * @return A string allocated from the pool on success, the original string
+ * if no characters are decoded, or NULL if a bad escape sequence is found
+ * or if a character on the forbid list is found, or if the original string
+ * was NULL.
+ */
+APR_DECLARE(const char *) apr_punescape_url(apr_pool_t *p, const char *url,
+        const char *forbid, const char *reserved, int plus)
+        __attribute__((nonnull(1)));
+
+/**
+ * Escape a path segment, as defined in RFC1808.
+ * @param escaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param str The original string
+ * @param slen The length of the original string, or APR_ESCAPE_STRING
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if no changes to the string were
+ * detected or the string was NULL
+ */
+APR_DECLARE(apr_status_t) apr_escape_path_segment(char *escaped,
+        const char *str, apr_ssize_t slen, apr_size_t *len);
+
+/**
+ * Escape a path segment, as defined in RFC1808, returning the result from a
+ * pool.
+ * @param p Pool to allocate from
+ * @param str String to be escaped
+ * @return A string allocated from the pool on success, the original string
+ * if no characters are encoded or the string is NULL.
+ */
+APR_DECLARE(const char *) apr_pescape_path_segment(apr_pool_t *p,
+        const char *str) __attribute__((nonnull(1)));
+
+/**
+ * Converts an OS path to a URL, in an OS dependent way, as defined in RFC1808.
+ * In all cases if a ':' occurs before the first '/' in the URL, the URL should
+ * be prefixed with "./" (or the ':' escaped). In the case of Unix, this means
+ * leaving '/' alone, but otherwise doing what escape_path_segment() does. For
+ * efficiency reasons, we don't use escape_path_segment(), which is provided for
+ * reference. Again, RFC 1808 is where this stuff is defined.
+ *
+ * If partial is set, os_escape_path() assumes that the path will be appended to
+ * something with a '/' in it (and thus does not prefix "./").
+ * @param escaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param path The original string
+ * @param slen The length of the original string, or APR_ESCAPE_STRING
+ * @param partial If non zero, suppresses the prepending of "./"
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if no changes to the string were
+ * detected or if the string was NULL
+ */
+APR_DECLARE(apr_status_t) apr_escape_path(char *escaped, const char *path,
+        apr_ssize_t slen, int partial, apr_size_t *len);
+
+/**
+ * Converts an OS path to a URL, in an OS dependent way, as defined in RFC1808,
+ * returning the result from a pool.
+ *
+ * In all cases if a ':' occurs before the first '/' in the URL, the URL should
+ * be prefixed with "./" (or the ':' escaped). In the case of Unix, this means
+ * leaving '/' alone, but otherwise doing what escape_path_segment() does. For
+ * efficiency reasons, we don't use escape_path_segment(), which is provided for
+ * reference. Again, RFC 1808 is where this stuff is defined.
+ *
+ * If partial is set, os_escape_path() assumes that the path will be appended to
+ * something with a '/' in it (and thus does not prefix "./").
+ * @param p Pool to allocate from
+ * @param str The original string
+ * @param partial If non zero, suppresses the prepending of "./"
+ * @return A string allocated from the pool on success, the original string
+ * if no characters are encoded or if the string was NULL.
+ */
+APR_DECLARE(const char *) apr_pescape_path(apr_pool_t *p, const char *str,
+        int partial) __attribute__((nonnull(1)));
+
+/**
+ * Urlencode a string, as defined in
+ * http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1.
+ * @param escaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param str The original string
+ * @param slen The length of the original string, or APR_ESCAPE_STRING
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if no changes to the string were
+ * detected or if the stirng was NULL
+ */
+APR_DECLARE(apr_status_t) apr_escape_urlencoded(char *escaped, const char *str,
+        apr_ssize_t slen, apr_size_t *len);
+
+/**
+ * Urlencode a string, as defined in
+ * http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1, returning
+ * the result from a pool.
+ * @param p Pool to allocate from
+ * @param str String to be escaped
+ * @return A string allocated from the pool on success, the original string
+ * if no characters are encoded or if the string was NULL.
+ */
+APR_DECLARE(const char *) apr_pescape_urlencoded(apr_pool_t *p,
+        const char *str) __attribute__((nonnull(1)));
+
+/**
+ * Apply entity encoding to a string. Characters are replaced as follows:
+ * '<' becomes '<', '>' becomes '>', '&' becomes '&', the
+ * double quote becomes '"" and the single quote becomes '''.
+ *
+ * If toasc is not zero, any non ascii character will be encoded as
+ * '%\#ddd;', where ddd is the decimal code of the character.
+ * @param escaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param str The original string
+ * @param slen The length of the original string, or APR_ESCAPE_STRING
+ * @param toasc If non zero, encode non ascii characters
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if no changes to the string were
+ * detected or the string was NULL
+ */
+APR_DECLARE(apr_status_t) apr_escape_entity(char *escaped, const char *str,
+        apr_ssize_t slen, int toasc, apr_size_t *len);
+
+/**
+ * Apply entity encoding to a string, returning the result from a pool.
+ * Characters are replaced as follows: '<' becomes '<', '>' becomes
+ * '>', '&' becomes '&', the double quote becomes '"" and the
+ * single quote becomes '''.
+ * @param p Pool to allocate from
+ * @param str The original string
+ * @param toasc If non zero, encode non ascii characters
+ * @return A string allocated from the pool on success, the original string
+ * if no characters are encoded or the string is NULL.
+ */
+APR_DECLARE(const char *) apr_pescape_entity(apr_pool_t *p, const char *str,
+        int toasc) __attribute__((nonnull(1)));
+
+/**
+ * Decodes html entities or numeric character references in a string. If
+ * the string to be unescaped is syntactically incorrect, then the
+ * following fixups will be made:
+ * unknown entities will be left undecoded;
+ * references to unused numeric characters will be deleted.
+ * In particular, � will not be decoded, but will be deleted.
+ * @param unescaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param str The original string
+ * @param slen The length of the original string, or APR_ESCAPE_STRING
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if no changes to the string were
+ * detected or the string was NULL
+ */
+APR_DECLARE(apr_status_t) apr_unescape_entity(char *unescaped, const char *str,
+        apr_ssize_t slen, apr_size_t *len);
+
+/**
+ * Decodes html entities or numeric character references in a string. If
+ * the string to be unescaped is syntactically incorrect, then the
+ * following fixups will be made:
+ * unknown entities will be left undecoded;
+ * references to unused numeric characters will be deleted.
+ * In particular, � will not be decoded, but will be deleted.
+ * @param p Pool to allocate from
+ * @param str The original string
+ * @return A string allocated from the pool on success, the original string
+ * if no characters are encoded or the string is NULL.
+ */
+APR_DECLARE(const char *) apr_punescape_entity(apr_pool_t *p, const char *str)
+        __attribute__((nonnull(1)));
+
+/**
+ * Escape control characters in a string, as performed by the shell's
+ * 'echo' command. Characters are replaced as follows:
+ * \\a alert (bell), \\b backspace, \\f form feed, \\n new line, \\r carriage
+ * return, \\t horizontal tab, \\v vertical tab, \\ backslash.
+ *
+ * Any non ascii character will be encoded as '\\xHH', where HH is the hex
+ * code of the character.
+ *
+ * If quote is not zero, the double quote character will also be escaped.
+ * @param escaped Optional buffer to write the encoded string, can be
+ * NULL
+ * @param str The original string
+ * @param slen The length of the original string, or APR_ESCAPE_STRING
+ * @param quote If non zero, encode double quotes
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if no changes to the string were
+ * detected or the string was NULL
+ */
+APR_DECLARE(apr_status_t) apr_escape_echo(char *escaped, const char *str,
+        apr_ssize_t slen, int quote, apr_size_t *len);
+
+/**
+ * Escape control characters in a string, as performed by the shell's
+ * 'echo' command, and return the results from a pool. Characters are
+ * replaced as follows: \\a alert (bell), \\b backspace, \\f form feed,
+ * \\n new line, \\r carriage return, \\t horizontal tab, \\v vertical tab,
+ * \\ backslash.
+ *
+ * Any non ascii character will be encoded as '\\xHH', where HH is the hex
+ * code of the character.
+ *
+ * If quote is not zero, the double quote character will also be escaped.
+ * @param p Pool to allocate from
+ * @param str The original string
+ * @param quote If non zero, encode double quotes
+ * @return A string allocated from the pool on success, the original string
+ * if no characters are encoded or the string is NULL.
+ */
+APR_DECLARE(const char *) apr_pescape_echo(apr_pool_t *p, const char *str,
+        int quote);
+
+/**
+ * Convert binary data to a hex encoding.
+ * @param dest The destination buffer, can be NULL
+ * @param src The original buffer
+ * @param srclen The length of the original buffer
+ * @param colon If not zero, insert colon characters between hex digits.
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if the string was NULL
+ */
+APR_DECLARE(apr_status_t) apr_escape_hex(char *dest, const void *src,
+        apr_size_t srclen, int colon, apr_size_t *len);
+
+/**
+ * Convert binary data to a hex encoding, and return the results from a
+ * pool.
+ * @param p Pool to allocate from
+ * @param src The original buffer
+ * @param slen The length of the original buffer
+ * @param colon If not zero, insert colon characters between hex digits.
+ * @return A zero padded buffer allocated from the pool on success, or
+ * NULL if src was NULL.
+ */
+APR_DECLARE(const char *) apr_pescape_hex(apr_pool_t *p, const void *src,
+        apr_size_t slen, int colon) __attribute__((nonnull(1)));
+
+/**
+ * Convert hex encoded string to binary data.
+ * @param dest The destination buffer, can be NULL
+ * @param str The original buffer
+ * @param slen The length of the original buffer
+ * @param colon If not zero, ignore colon characters between hex digits.
+ * @param len If present, returns the length of the string
+ * @return APR_SUCCESS, or APR_NOTFOUND if the string was NULL, or APR_BADCH
+ * if a non hex character is present.
+ */
+APR_DECLARE(apr_status_t) apr_unescape_hex(void *dest, const char *str,
+        apr_ssize_t slen, int colon, apr_size_t *len);
+
+/**
+ * Convert hex encoding to binary data, and return the results from a pool.
+ * If the colon character appears between pairs of hex digits, it will be
+ * ignored.
+ * @param p Pool to allocate from
+ * @param str The original string
+ * @param colon If not zero, ignore colon characters between hex digits.
+ * @param len If present, returns the length of the final buffer
+ * @return A buffer allocated from the pool on success, or NULL if src was
+ * NULL, or a bad character was present.
+ */
+APR_DECLARE(const void *) apr_punescape_hex(apr_pool_t *p, const char *str,
+        int colon, apr_size_t *len);
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* !APR_ESCAPE_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_file_info.h
===================================================================
--- vendor/apache/apr/dist/include/apr_file_info.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_file_info.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,428 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_FILE_INFO_H
-#define APR_FILE_INFO_H
-
-/**
- * @file apr_file_info.h
- * @brief APR File Information
- */
-
-#include "apr.h"
-#include "apr_user.h"
-#include "apr_pools.h"
-#include "apr_tables.h"
-#include "apr_time.h"
-#include "apr_errno.h"
-
-#if APR_HAVE_SYS_UIO_H
-#include <sys/uio.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_file_info File Information
- * @ingroup APR 
- * @{
- */
-
-/* Many applications use the type member to determine the
- * existance of a file or initialization of the file info,
- * so the APR_NOFILE value must be distinct from APR_UNKFILE.
- */
-
-/** apr_filetype_e values for the filetype member of the 
- * apr_file_info_t structure
- * @warning: Not all of the filetypes below can be determined.
- * For example, a given platform might not correctly report 
- * a socket descriptor as APR_SOCK if that type isn't 
- * well-identified on that platform.  In such cases where
- * a filetype exists but cannot be described by the recognized
- * flags below, the filetype will be APR_UNKFILE.  If the
- * filetype member is not determined, the type will be APR_NOFILE.
- */
-
-typedef enum {
-    APR_NOFILE = 0,     /**< no file type determined */
-    APR_REG,            /**< a regular file */
-    APR_DIR,            /**< a directory */
-    APR_CHR,            /**< a character device */
-    APR_BLK,            /**< a block device */
-    APR_PIPE,           /**< a FIFO / pipe */
-    APR_LNK,            /**< a symbolic link */
-    APR_SOCK,           /**< a [unix domain] socket */
-    APR_UNKFILE = 127   /**< a file of some other unknown type */
-} apr_filetype_e; 
-
-/**
- * @defgroup apr_file_permissions File Permissions flags 
- * @{
- */
-
-#define APR_FPROT_USETID      0x8000 /**< Set user id */
-#define APR_FPROT_UREAD       0x0400 /**< Read by user */
-#define APR_FPROT_UWRITE      0x0200 /**< Write by user */
-#define APR_FPROT_UEXECUTE    0x0100 /**< Execute by user */
-
-#define APR_FPROT_GSETID      0x4000 /**< Set group id */
-#define APR_FPROT_GREAD       0x0040 /**< Read by group */
-#define APR_FPROT_GWRITE      0x0020 /**< Write by group */
-#define APR_FPROT_GEXECUTE    0x0010 /**< Execute by group */
-
-#define APR_FPROT_WSTICKY     0x2000 /**< Sticky bit */
-#define APR_FPROT_WREAD       0x0004 /**< Read by others */
-#define APR_FPROT_WWRITE      0x0002 /**< Write by others */
-#define APR_FPROT_WEXECUTE    0x0001 /**< Execute by others */
-
-#define APR_FPROT_OS_DEFAULT  0x0FFF /**< use OS's default permissions */
-
-/* additional permission flags for apr_file_copy  and apr_file_append */
-#define APR_FPROT_FILE_SOURCE_PERMS 0x1000 /**< Copy source file's permissions */
-    
-/* backcompat */
-#define APR_USETID     APR_FPROT_USETID     /**< @deprecated @see APR_FPROT_USETID     */
-#define APR_UREAD      APR_FPROT_UREAD      /**< @deprecated @see APR_FPROT_UREAD      */
-#define APR_UWRITE     APR_FPROT_UWRITE     /**< @deprecated @see APR_FPROT_UWRITE     */
-#define APR_UEXECUTE   APR_FPROT_UEXECUTE   /**< @deprecated @see APR_FPROT_UEXECUTE   */
-#define APR_GSETID     APR_FPROT_GSETID     /**< @deprecated @see APR_FPROT_GSETID     */
-#define APR_GREAD      APR_FPROT_GREAD      /**< @deprecated @see APR_FPROT_GREAD      */
-#define APR_GWRITE     APR_FPROT_GWRITE     /**< @deprecated @see APR_FPROT_GWRITE     */
-#define APR_GEXECUTE   APR_FPROT_GEXECUTE   /**< @deprecated @see APR_FPROT_GEXECUTE   */
-#define APR_WSTICKY    APR_FPROT_WSTICKY    /**< @deprecated @see APR_FPROT_WSTICKY    */
-#define APR_WREAD      APR_FPROT_WREAD      /**< @deprecated @see APR_FPROT_WREAD      */
-#define APR_WWRITE     APR_FPROT_WWRITE     /**< @deprecated @see APR_FPROT_WWRITE     */
-#define APR_WEXECUTE   APR_FPROT_WEXECUTE   /**< @deprecated @see APR_FPROT_WEXECUTE   */
-#define APR_OS_DEFAULT APR_FPROT_OS_DEFAULT /**< @deprecated @see APR_FPROT_OS_DEFAULT */
-#define APR_FILE_SOURCE_PERMS APR_FPROT_FILE_SOURCE_PERMS /**< @deprecated @see APR_FPROT_FILE_SOURCE_PERMS */
-    
-/** @} */
-
-
-/**
- * Structure for referencing directories.
- */
-typedef struct apr_dir_t          apr_dir_t;
-/**
- * Structure for determining file permissions.
- */
-typedef apr_int32_t               apr_fileperms_t;
-#if (defined WIN32) || (defined NETWARE)
-/**
- * Structure for determining the device the file is on.
- */
-typedef apr_uint32_t              apr_dev_t;
-#else
-/**
- * Structure for determining the device the file is on.
- */
-typedef dev_t                     apr_dev_t;
-#endif
-
-/**
- * @defgroup apr_file_stat Stat Functions
- * @{
- */
-/** file info structure */
-typedef struct apr_finfo_t        apr_finfo_t;
-
-#define APR_FINFO_LINK   0x00000001 /**< Stat the link not the file itself if it is a link */
-#define APR_FINFO_MTIME  0x00000010 /**< Modification Time */
-#define APR_FINFO_CTIME  0x00000020 /**< Creation or inode-changed time */
-#define APR_FINFO_ATIME  0x00000040 /**< Access Time */
-#define APR_FINFO_SIZE   0x00000100 /**< Size of the file */
-#define APR_FINFO_CSIZE  0x00000200 /**< Storage size consumed by the file */
-#define APR_FINFO_DEV    0x00001000 /**< Device */
-#define APR_FINFO_INODE  0x00002000 /**< Inode */
-#define APR_FINFO_NLINK  0x00004000 /**< Number of links */
-#define APR_FINFO_TYPE   0x00008000 /**< Type */
-#define APR_FINFO_USER   0x00010000 /**< User */
-#define APR_FINFO_GROUP  0x00020000 /**< Group */
-#define APR_FINFO_UPROT  0x00100000 /**< User protection bits */
-#define APR_FINFO_GPROT  0x00200000 /**< Group protection bits */
-#define APR_FINFO_WPROT  0x00400000 /**< World protection bits */
-#define APR_FINFO_ICASE  0x01000000 /**< if dev is case insensitive */
-#define APR_FINFO_NAME   0x02000000 /**< ->name in proper case */
-
-#define APR_FINFO_MIN    0x00008170 /**< type, mtime, ctime, atime, size */
-#define APR_FINFO_IDENT  0x00003000 /**< dev and inode */
-#define APR_FINFO_OWNER  0x00030000 /**< user and group */
-#define APR_FINFO_PROT   0x00700000 /**<  all protections */
-#define APR_FINFO_NORM   0x0073b170 /**<  an atomic unix apr_stat() */
-#define APR_FINFO_DIRENT 0x02000000 /**<  an atomic unix apr_dir_read() */
-
-/**
- * The file information structure.  This is analogous to the POSIX
- * stat structure.
- */
-struct apr_finfo_t {
-    /** Allocates memory and closes lingering handles in the specified pool */
-    apr_pool_t *pool;
-    /** The bitmask describing valid fields of this apr_finfo_t structure 
-     *  including all available 'wanted' fields and potentially more */
-    apr_int32_t valid;
-    /** The access permissions of the file.  Mimics Unix access rights. */
-    apr_fileperms_t protection;
-    /** The type of file.  One of APR_REG, APR_DIR, APR_CHR, APR_BLK, APR_PIPE, 
-     * APR_LNK or APR_SOCK.  If the type is undetermined, the value is APR_NOFILE.
-     * If the type cannot be determined, the value is APR_UNKFILE.
-     */
-    apr_filetype_e filetype;
-    /** The user id that owns the file */
-    apr_uid_t user;
-    /** The group id that owns the file */
-    apr_gid_t group;
-    /** The inode of the file. */
-    apr_ino_t inode;
-    /** The id of the device the file is on. */
-    apr_dev_t device;
-    /** The number of hard links to the file. */
-    apr_int32_t nlink;
-    /** The size of the file */
-    apr_off_t size;
-    /** The storage size consumed by the file */
-    apr_off_t csize;
-    /** The time the file was last accessed */
-    apr_time_t atime;
-    /** The time the file was last modified */
-    apr_time_t mtime;
-    /** The time the file was created, or the inode was last changed */
-    apr_time_t ctime;
-    /** The pathname of the file (possibly unrooted) */
-    const char *fname;
-    /** The file's name (no path) in filesystem case */
-    const char *name;
-    /** The file's handle, if accessed (can be submitted to apr_duphandle) */
-    struct apr_file_t *filehand;
-};
-
-/**
- * get the specified file's stats.  The file is specified by filename, 
- * instead of using a pre-opened file.
- * @param finfo Where to store the information about the file, which is
- * never touched if the call fails.
- * @param fname The name of the file to stat.
- * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_
-                 values 
- * @param pool the pool to use to allocate the new file. 
- *
- * @note If @c APR_INCOMPLETE is returned all the fields in @a finfo may
- *       not be filled in, and you need to check the @c finfo->valid bitmask
- *       to verify that what you're looking for is there.
- */ 
-APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname,
-                                   apr_int32_t wanted, apr_pool_t *pool);
-
-/** @} */
-/**
- * @defgroup apr_dir Directory Manipulation Functions
- * @{
- */
-
-/**
- * Open the specified directory.
- * @param new_dir The opened directory descriptor.
- * @param dirname The full path to the directory (use / on all systems)
- * @param pool The pool to use.
- */                        
-APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new_dir, 
-                                       const char *dirname, 
-                                       apr_pool_t *pool);
-
-/**
- * close the specified directory. 
- * @param thedir the directory descriptor to close.
- */                        
-APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *thedir);
-
-/**
- * Read the next entry from the specified directory. 
- * @param finfo the file info structure and filled in by apr_dir_read
- * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_
-                 values 
- * @param thedir the directory descriptor returned from apr_dir_open
- * @remark No ordering is guaranteed for the entries read.
- *
- * @note If @c APR_INCOMPLETE is returned all the fields in @a finfo may
- *       not be filled in, and you need to check the @c finfo->valid bitmask
- *       to verify that what you're looking for is there. When no more
- *       entries are available, APR_ENOENT is returned.
- */                        
-APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
-                                       apr_dir_t *thedir);
-
-/**
- * Rewind the directory to the first entry.
- * @param thedir the directory descriptor to rewind.
- */                        
-APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *thedir);
-/** @} */
-
-/**
- * @defgroup apr_filepath Filepath Manipulation Functions
- * @{
- */
-
-/** Cause apr_filepath_merge to fail if addpath is above rootpath 
- * @bug in APR 0.9 and 1.x, this flag's behavior is undefined
- * if the rootpath is NULL or empty.  In APR 2.0 this should be
- * changed to imply NOTABSOLUTE if the rootpath is NULL or empty.
- */
-#define APR_FILEPATH_NOTABOVEROOT   0x01
-
-/** internal: Only meaningful with APR_FILEPATH_NOTABOVEROOT */
-#define APR_FILEPATH_SECUREROOTTEST 0x02
-
-/** Cause apr_filepath_merge to fail if addpath is above rootpath,
- * even given a rootpath /foo/bar and an addpath ../bar/bash
- */
-#define APR_FILEPATH_SECUREROOT     0x03
-
-/** Fail apr_filepath_merge if the merged path is relative */
-#define APR_FILEPATH_NOTRELATIVE    0x04
-
-/** Fail apr_filepath_merge if the merged path is absolute */
-#define APR_FILEPATH_NOTABSOLUTE    0x08
-
-/** Return the file system's native path format (e.g. path delimiters
- * of ':' on MacOS9, '\' on Win32, etc.) */
-#define APR_FILEPATH_NATIVE         0x10
-
-/** Resolve the true case of existing directories and file elements
- * of addpath, (resolving any aliases on Win32) and append a proper 
- * trailing slash if a directory
- */
-#define APR_FILEPATH_TRUENAME       0x20
-
-/**
- * Extract the rootpath from the given filepath
- * @param rootpath the root file path returned with APR_SUCCESS or APR_EINCOMPLETE
- * @param filepath the pathname to parse for its root component
- * @param flags the desired rules to apply, from
- * <PRE>
- *      APR_FILEPATH_NATIVE    Use native path seperators (e.g. '\' on Win32)
- *      APR_FILEPATH_TRUENAME  Tests that the root exists, and makes it proper
- * </PRE>
- * @param p the pool to allocate the new path string from
- * @remark on return, filepath points to the first non-root character in the
- * given filepath.  In the simplest example, given a filepath of "/foo", 
- * returns the rootpath of "/" and filepath points at "foo".  This is far 
- * more complex on other platforms, which will canonicalize the root form
- * to a consistant format, given the APR_FILEPATH_TRUENAME flag, and also
- * test for the validity of that root (e.g., that a drive d:/ or network 
- * share //machine/foovol/). 
- * The function returns APR_ERELATIVE if filepath isn't rooted (an
- * error), APR_EINCOMPLETE if the root path is ambigious (but potentially
- * legitimate, e.g. "/" on Windows is incomplete because it doesn't specify
- * the drive letter), or APR_EBADPATH if the root is simply invalid.
- * APR_SUCCESS is returned if filepath is an absolute path.
- */
-APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, 
-                                            const char **filepath, 
-                                            apr_int32_t flags,
-                                            apr_pool_t *p);
-
-/**
- * Merge additional file path onto the previously processed rootpath
- * @param newpath the merged paths returned
- * @param rootpath the root file path (NULL uses the current working path)
- * @param addpath the path to add to the root path
- * @param flags the desired APR_FILEPATH_ rules to apply when merging
- * @param p the pool to allocate the new path string from
- * @remark if the flag APR_FILEPATH_TRUENAME is given, and the addpath 
- * contains wildcard characters ('*', '?') on platforms that don't support 
- * such characters within filenames, the paths will be merged, but the 
- * result code will be APR_EPATHWILD, and all further segments will not
- * reflect the true filenames including the wildcard and following segments.
- */                        
-APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, 
-                                             const char *rootpath,
-                                             const char *addpath, 
-                                             apr_int32_t flags,
-                                             apr_pool_t *p);
-
-/**
- * Split a search path into separate components
- * @param pathelts the returned components of the search path
- * @param liststr the search path (e.g., <tt>getenv("PATH")</tt>)
- * @param p the pool to allocate the array and path components from
- * @remark empty path componenta do not become part of @a pathelts.
- * @remark the path separator in @a liststr is system specific;
- * e.g., ':' on Unix, ';' on Windows, etc.
- */
-APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts,
-                                                  const char *liststr,
-                                                  apr_pool_t *p);
-
-/**
- * Merge a list of search path components into a single search path
- * @param liststr the returned search path; may be NULL if @a pathelts is empty
- * @param pathelts the components of the search path
- * @param p the pool to allocate the search path from
- * @remark emtpy strings in the source array are ignored.
- * @remark the path separator in @a liststr is system specific;
- * e.g., ':' on Unix, ';' on Windows, etc.
- */
-APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr,
-                                                  apr_array_header_t *pathelts,
-                                                  apr_pool_t *p);
-
-/**
- * Return the default file path (for relative file names)
- * @param path the default path string returned
- * @param flags optional flag APR_FILEPATH_NATIVE to retrieve the
- *              default file path in os-native format.
- * @param p the pool to allocate the default path string from
- */
-APR_DECLARE(apr_status_t) apr_filepath_get(char **path, apr_int32_t flags,
-                                           apr_pool_t *p);
-
-/**
- * Set the default file path (for relative file names)
- * @param path the default path returned
- * @param p the pool to allocate any working storage
- */
-APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p);
-
-/** The FilePath character encoding is unknown */
-#define APR_FILEPATH_ENCODING_UNKNOWN  0
-
-/** The FilePath character encoding is locale-dependent */
-#define APR_FILEPATH_ENCODING_LOCALE   1
-
-/** The FilePath character encoding is UTF-8 */
-#define APR_FILEPATH_ENCODING_UTF8     2
-
-/**
- * Determine the encoding used internally by the FilePath functions
- * @param style points to a variable which receives the encoding style flag
- * @param p the pool to allocate any working storage
- * @remark Use @c apr_os_locale_encoding and/or @c apr_os_default_encoding
- * to get the name of the path encoding if it's not UTF-8.
- */
-APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p);
-/** @} */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_FILE_INFO_H */

Copied: vendor/apache/apr/1.5.2/include/apr_file_info.h (from rev 9273, vendor/apache/apr/dist/include/apr_file_info.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_file_info.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_file_info.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,428 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_FILE_INFO_H
+#define APR_FILE_INFO_H
+
+/**
+ * @file apr_file_info.h
+ * @brief APR File Information
+ */
+
+#include "apr.h"
+#include "apr_user.h"
+#include "apr_pools.h"
+#include "apr_tables.h"
+#include "apr_time.h"
+#include "apr_errno.h"
+
+#if APR_HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_file_info File Information
+ * @ingroup APR 
+ * @{
+ */
+
+/* Many applications use the type member to determine the
+ * existance of a file or initialization of the file info,
+ * so the APR_NOFILE value must be distinct from APR_UNKFILE.
+ */
+
+/** apr_filetype_e values for the filetype member of the 
+ * apr_file_info_t structure
+ * @warning: Not all of the filetypes below can be determined.
+ * For example, a given platform might not correctly report 
+ * a socket descriptor as APR_SOCK if that type isn't 
+ * well-identified on that platform.  In such cases where
+ * a filetype exists but cannot be described by the recognized
+ * flags below, the filetype will be APR_UNKFILE.  If the
+ * filetype member is not determined, the type will be APR_NOFILE.
+ */
+
+typedef enum {
+    APR_NOFILE = 0,     /**< no file type determined */
+    APR_REG,            /**< a regular file */
+    APR_DIR,            /**< a directory */
+    APR_CHR,            /**< a character device */
+    APR_BLK,            /**< a block device */
+    APR_PIPE,           /**< a FIFO / pipe */
+    APR_LNK,            /**< a symbolic link */
+    APR_SOCK,           /**< a [unix domain] socket */
+    APR_UNKFILE = 127   /**< a file of some other unknown type */
+} apr_filetype_e; 
+
+/**
+ * @defgroup apr_file_permissions File Permissions flags 
+ * @{
+ */
+
+#define APR_FPROT_USETID      0x8000 /**< Set user id */
+#define APR_FPROT_UREAD       0x0400 /**< Read by user */
+#define APR_FPROT_UWRITE      0x0200 /**< Write by user */
+#define APR_FPROT_UEXECUTE    0x0100 /**< Execute by user */
+
+#define APR_FPROT_GSETID      0x4000 /**< Set group id */
+#define APR_FPROT_GREAD       0x0040 /**< Read by group */
+#define APR_FPROT_GWRITE      0x0020 /**< Write by group */
+#define APR_FPROT_GEXECUTE    0x0010 /**< Execute by group */
+
+#define APR_FPROT_WSTICKY     0x2000 /**< Sticky bit */
+#define APR_FPROT_WREAD       0x0004 /**< Read by others */
+#define APR_FPROT_WWRITE      0x0002 /**< Write by others */
+#define APR_FPROT_WEXECUTE    0x0001 /**< Execute by others */
+
+#define APR_FPROT_OS_DEFAULT  0x0FFF /**< use OS's default permissions */
+
+/* additional permission flags for apr_file_copy  and apr_file_append */
+#define APR_FPROT_FILE_SOURCE_PERMS 0x1000 /**< Copy source file's permissions */
+    
+/* backcompat */
+#define APR_USETID     APR_FPROT_USETID     /**< @deprecated @see APR_FPROT_USETID     */
+#define APR_UREAD      APR_FPROT_UREAD      /**< @deprecated @see APR_FPROT_UREAD      */
+#define APR_UWRITE     APR_FPROT_UWRITE     /**< @deprecated @see APR_FPROT_UWRITE     */
+#define APR_UEXECUTE   APR_FPROT_UEXECUTE   /**< @deprecated @see APR_FPROT_UEXECUTE   */
+#define APR_GSETID     APR_FPROT_GSETID     /**< @deprecated @see APR_FPROT_GSETID     */
+#define APR_GREAD      APR_FPROT_GREAD      /**< @deprecated @see APR_FPROT_GREAD      */
+#define APR_GWRITE     APR_FPROT_GWRITE     /**< @deprecated @see APR_FPROT_GWRITE     */
+#define APR_GEXECUTE   APR_FPROT_GEXECUTE   /**< @deprecated @see APR_FPROT_GEXECUTE   */
+#define APR_WSTICKY    APR_FPROT_WSTICKY    /**< @deprecated @see APR_FPROT_WSTICKY    */
+#define APR_WREAD      APR_FPROT_WREAD      /**< @deprecated @see APR_FPROT_WREAD      */
+#define APR_WWRITE     APR_FPROT_WWRITE     /**< @deprecated @see APR_FPROT_WWRITE     */
+#define APR_WEXECUTE   APR_FPROT_WEXECUTE   /**< @deprecated @see APR_FPROT_WEXECUTE   */
+#define APR_OS_DEFAULT APR_FPROT_OS_DEFAULT /**< @deprecated @see APR_FPROT_OS_DEFAULT */
+#define APR_FILE_SOURCE_PERMS APR_FPROT_FILE_SOURCE_PERMS /**< @deprecated @see APR_FPROT_FILE_SOURCE_PERMS */
+    
+/** @} */
+
+
+/**
+ * Structure for referencing directories.
+ */
+typedef struct apr_dir_t          apr_dir_t;
+/**
+ * Structure for determining file permissions.
+ */
+typedef apr_int32_t               apr_fileperms_t;
+#if (defined WIN32) || (defined NETWARE)
+/**
+ * Structure for determining the device the file is on.
+ */
+typedef apr_uint32_t              apr_dev_t;
+#else
+/**
+ * Structure for determining the device the file is on.
+ */
+typedef dev_t                     apr_dev_t;
+#endif
+
+/**
+ * @defgroup apr_file_stat Stat Functions
+ * @{
+ */
+/** file info structure */
+typedef struct apr_finfo_t        apr_finfo_t;
+
+#define APR_FINFO_LINK   0x00000001 /**< Stat the link not the file itself if it is a link */
+#define APR_FINFO_MTIME  0x00000010 /**< Modification Time */
+#define APR_FINFO_CTIME  0x00000020 /**< Creation or inode-changed time */
+#define APR_FINFO_ATIME  0x00000040 /**< Access Time */
+#define APR_FINFO_SIZE   0x00000100 /**< Size of the file */
+#define APR_FINFO_CSIZE  0x00000200 /**< Storage size consumed by the file */
+#define APR_FINFO_DEV    0x00001000 /**< Device */
+#define APR_FINFO_INODE  0x00002000 /**< Inode */
+#define APR_FINFO_NLINK  0x00004000 /**< Number of links */
+#define APR_FINFO_TYPE   0x00008000 /**< Type */
+#define APR_FINFO_USER   0x00010000 /**< User */
+#define APR_FINFO_GROUP  0x00020000 /**< Group */
+#define APR_FINFO_UPROT  0x00100000 /**< User protection bits */
+#define APR_FINFO_GPROT  0x00200000 /**< Group protection bits */
+#define APR_FINFO_WPROT  0x00400000 /**< World protection bits */
+#define APR_FINFO_ICASE  0x01000000 /**< if dev is case insensitive */
+#define APR_FINFO_NAME   0x02000000 /**< ->name in proper case */
+
+#define APR_FINFO_MIN    0x00008170 /**< type, mtime, ctime, atime, size */
+#define APR_FINFO_IDENT  0x00003000 /**< dev and inode */
+#define APR_FINFO_OWNER  0x00030000 /**< user and group */
+#define APR_FINFO_PROT   0x00700000 /**<  all protections */
+#define APR_FINFO_NORM   0x0073b170 /**<  an atomic unix apr_stat() */
+#define APR_FINFO_DIRENT 0x02000000 /**<  an atomic unix apr_dir_read() */
+
+/**
+ * The file information structure.  This is analogous to the POSIX
+ * stat structure.
+ */
+struct apr_finfo_t {
+    /** Allocates memory and closes lingering handles in the specified pool */
+    apr_pool_t *pool;
+    /** The bitmask describing valid fields of this apr_finfo_t structure 
+     *  including all available 'wanted' fields and potentially more */
+    apr_int32_t valid;
+    /** The access permissions of the file.  Mimics Unix access rights. */
+    apr_fileperms_t protection;
+    /** The type of file.  One of APR_REG, APR_DIR, APR_CHR, APR_BLK, APR_PIPE, 
+     * APR_LNK or APR_SOCK.  If the type is undetermined, the value is APR_NOFILE.
+     * If the type cannot be determined, the value is APR_UNKFILE.
+     */
+    apr_filetype_e filetype;
+    /** The user id that owns the file */
+    apr_uid_t user;
+    /** The group id that owns the file */
+    apr_gid_t group;
+    /** The inode of the file. */
+    apr_ino_t inode;
+    /** The id of the device the file is on. */
+    apr_dev_t device;
+    /** The number of hard links to the file. */
+    apr_int32_t nlink;
+    /** The size of the file */
+    apr_off_t size;
+    /** The storage size consumed by the file */
+    apr_off_t csize;
+    /** The time the file was last accessed */
+    apr_time_t atime;
+    /** The time the file was last modified */
+    apr_time_t mtime;
+    /** The time the file was created, or the inode was last changed */
+    apr_time_t ctime;
+    /** The pathname of the file (possibly unrooted) */
+    const char *fname;
+    /** The file's name (no path) in filesystem case */
+    const char *name;
+    /** Unused */
+    struct apr_file_t *filehand;
+};
+
+/**
+ * get the specified file's stats.  The file is specified by filename, 
+ * instead of using a pre-opened file.
+ * @param finfo Where to store the information about the file, which is
+ * never touched if the call fails.
+ * @param fname The name of the file to stat.
+ * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_
+                 values 
+ * @param pool the pool to use to allocate the new file. 
+ *
+ * @note If @c APR_INCOMPLETE is returned all the fields in @a finfo may
+ *       not be filled in, and you need to check the @c finfo->valid bitmask
+ *       to verify that what you're looking for is there.
+ */ 
+APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname,
+                                   apr_int32_t wanted, apr_pool_t *pool);
+
+/** @} */
+/**
+ * @defgroup apr_dir Directory Manipulation Functions
+ * @{
+ */
+
+/**
+ * Open the specified directory.
+ * @param new_dir The opened directory descriptor.
+ * @param dirname The full path to the directory (use / on all systems)
+ * @param pool The pool to use.
+ */                        
+APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new_dir, 
+                                       const char *dirname, 
+                                       apr_pool_t *pool);
+
+/**
+ * close the specified directory. 
+ * @param thedir the directory descriptor to close.
+ */                        
+APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *thedir);
+
+/**
+ * Read the next entry from the specified directory. 
+ * @param finfo the file info structure and filled in by apr_dir_read
+ * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_
+                 values 
+ * @param thedir the directory descriptor returned from apr_dir_open
+ * @remark No ordering is guaranteed for the entries read.
+ *
+ * @note If @c APR_INCOMPLETE is returned all the fields in @a finfo may
+ *       not be filled in, and you need to check the @c finfo->valid bitmask
+ *       to verify that what you're looking for is there. When no more
+ *       entries are available, APR_ENOENT is returned.
+ */                        
+APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
+                                       apr_dir_t *thedir);
+
+/**
+ * Rewind the directory to the first entry.
+ * @param thedir the directory descriptor to rewind.
+ */                        
+APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *thedir);
+/** @} */
+
+/**
+ * @defgroup apr_filepath Filepath Manipulation Functions
+ * @{
+ */
+
+/** Cause apr_filepath_merge to fail if addpath is above rootpath 
+ * @bug in APR 0.9 and 1.x, this flag's behavior is undefined
+ * if the rootpath is NULL or empty.  In APR 2.0 this should be
+ * changed to imply NOTABSOLUTE if the rootpath is NULL or empty.
+ */
+#define APR_FILEPATH_NOTABOVEROOT   0x01
+
+/** internal: Only meaningful with APR_FILEPATH_NOTABOVEROOT */
+#define APR_FILEPATH_SECUREROOTTEST 0x02
+
+/** Cause apr_filepath_merge to fail if addpath is above rootpath,
+ * even given a rootpath /foo/bar and an addpath ../bar/bash
+ */
+#define APR_FILEPATH_SECUREROOT     0x03
+
+/** Fail apr_filepath_merge if the merged path is relative */
+#define APR_FILEPATH_NOTRELATIVE    0x04
+
+/** Fail apr_filepath_merge if the merged path is absolute */
+#define APR_FILEPATH_NOTABSOLUTE    0x08
+
+/** Return the file system's native path format (e.g. path delimiters
+ * of ':' on MacOS9, '\' on Win32, etc.) */
+#define APR_FILEPATH_NATIVE         0x10
+
+/** Resolve the true case of existing directories and file elements
+ * of addpath, (resolving any aliases on Win32) and append a proper 
+ * trailing slash if a directory
+ */
+#define APR_FILEPATH_TRUENAME       0x20
+
+/**
+ * Extract the rootpath from the given filepath
+ * @param rootpath the root file path returned with APR_SUCCESS or APR_EINCOMPLETE
+ * @param filepath the pathname to parse for its root component
+ * @param flags the desired rules to apply, from
+ * <PRE>
+ *      APR_FILEPATH_NATIVE    Use native path separators (e.g. '\' on Win32)
+ *      APR_FILEPATH_TRUENAME  Tests that the root exists, and makes it proper
+ * </PRE>
+ * @param p the pool to allocate the new path string from
+ * @remark on return, filepath points to the first non-root character in the
+ * given filepath.  In the simplest example, given a filepath of "/foo", 
+ * returns the rootpath of "/" and filepath points at "foo".  This is far 
+ * more complex on other platforms, which will canonicalize the root form
+ * to a consistant format, given the APR_FILEPATH_TRUENAME flag, and also
+ * test for the validity of that root (e.g., that a drive d:/ or network 
+ * share //machine/foovol/). 
+ * The function returns APR_ERELATIVE if filepath isn't rooted (an
+ * error), APR_EINCOMPLETE if the root path is ambiguous (but potentially
+ * legitimate, e.g. "/" on Windows is incomplete because it doesn't specify
+ * the drive letter), or APR_EBADPATH if the root is simply invalid.
+ * APR_SUCCESS is returned if filepath is an absolute path.
+ */
+APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, 
+                                            const char **filepath, 
+                                            apr_int32_t flags,
+                                            apr_pool_t *p);
+
+/**
+ * Merge additional file path onto the previously processed rootpath
+ * @param newpath the merged paths returned
+ * @param rootpath the root file path (NULL uses the current working path)
+ * @param addpath the path to add to the root path
+ * @param flags the desired APR_FILEPATH_ rules to apply when merging
+ * @param p the pool to allocate the new path string from
+ * @remark if the flag APR_FILEPATH_TRUENAME is given, and the addpath 
+ * contains wildcard characters ('*', '?') on platforms that don't support 
+ * such characters within filenames, the paths will be merged, but the 
+ * result code will be APR_EPATHWILD, and all further segments will not
+ * reflect the true filenames including the wildcard and following segments.
+ */                        
+APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, 
+                                             const char *rootpath,
+                                             const char *addpath, 
+                                             apr_int32_t flags,
+                                             apr_pool_t *p);
+
+/**
+ * Split a search path into separate components
+ * @param pathelts the returned components of the search path
+ * @param liststr the search path (e.g., <tt>getenv("PATH")</tt>)
+ * @param p the pool to allocate the array and path components from
+ * @remark empty path components do not become part of @a pathelts.
+ * @remark the path separator in @a liststr is system specific;
+ * e.g., ':' on Unix, ';' on Windows, etc.
+ */
+APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts,
+                                                  const char *liststr,
+                                                  apr_pool_t *p);
+
+/**
+ * Merge a list of search path components into a single search path
+ * @param liststr the returned search path; may be NULL if @a pathelts is empty
+ * @param pathelts the components of the search path
+ * @param p the pool to allocate the search path from
+ * @remark emtpy strings in the source array are ignored.
+ * @remark the path separator in @a liststr is system specific;
+ * e.g., ':' on Unix, ';' on Windows, etc.
+ */
+APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr,
+                                                  apr_array_header_t *pathelts,
+                                                  apr_pool_t *p);
+
+/**
+ * Return the default file path (for relative file names)
+ * @param path the default path string returned
+ * @param flags optional flag APR_FILEPATH_NATIVE to retrieve the
+ *              default file path in os-native format.
+ * @param p the pool to allocate the default path string from
+ */
+APR_DECLARE(apr_status_t) apr_filepath_get(char **path, apr_int32_t flags,
+                                           apr_pool_t *p);
+
+/**
+ * Set the default file path (for relative file names)
+ * @param path the default path returned
+ * @param p the pool to allocate any working storage
+ */
+APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p);
+
+/** The FilePath character encoding is unknown */
+#define APR_FILEPATH_ENCODING_UNKNOWN  0
+
+/** The FilePath character encoding is locale-dependent */
+#define APR_FILEPATH_ENCODING_LOCALE   1
+
+/** The FilePath character encoding is UTF-8 */
+#define APR_FILEPATH_ENCODING_UTF8     2
+
+/**
+ * Determine the encoding used internally by the FilePath functions
+ * @param style points to a variable which receives the encoding style flag
+ * @param p the pool to allocate any working storage
+ * @remark Use @c apr_os_locale_encoding and/or @c apr_os_default_encoding
+ * to get the name of the path encoding if it's not UTF-8.
+ */
+APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p);
+/** @} */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_FILE_INFO_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_file_io.h
===================================================================
--- vendor/apache/apr/dist/include/apr_file_io.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_file_io.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,945 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_FILE_IO_H
-#define APR_FILE_IO_H
-
-/**
- * @file apr_file_io.h
- * @brief APR File I/O Handling
- */
-
-#include "apr.h"
-#include "apr_pools.h"
-#include "apr_time.h"
-#include "apr_errno.h"
-#include "apr_file_info.h"
-#include "apr_inherit.h"
-
-#define APR_WANT_STDIO          /**< for SEEK_* */
-#define APR_WANT_IOVEC          /**< for apr_file_writev */
-#include "apr_want.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_file_io File I/O Handling Functions
- * @ingroup APR 
- * @{
- */
-
-/**
- * @defgroup apr_file_open_flags File Open Flags/Routines
- * @{
- */
-
-/* Note to implementors: Values in the range 0x00100000--0x80000000
-   are reserved for platform-specific values. */
-
-#define APR_FOPEN_READ       0x00001  /**< Open the file for reading */
-#define APR_FOPEN_WRITE      0x00002  /**< Open the file for writing */
-#define APR_FOPEN_CREATE     0x00004  /**< Create the file if not there */
-#define APR_FOPEN_APPEND     0x00008  /**< Append to the end of the file */
-#define APR_FOPEN_TRUNCATE   0x00010  /**< Open the file and truncate
-                                         to 0 length */
-#define APR_FOPEN_BINARY     0x00020  /**< Open the file in binary mode */
-#define APR_FOPEN_EXCL       0x00040  /**< Open should fail if APR_CREATE
-                                         and file exists. */
-#define APR_FOPEN_BUFFERED   0x00080  /**< Open the file for buffered I/O */
-#define APR_FOPEN_DELONCLOSE 0x00100  /**< Delete the file after close */
-#define APR_FOPEN_XTHREAD    0x00200  /**< Platform dependent tag to open
-                                         the file for use across multiple
-                                         threads */
-#define APR_FOPEN_SHARELOCK  0x00400  /**< Platform dependent support for
-                                         higher level locked read/write
-                                         access to support writes across
-                                         process/machines */
-#define APR_FOPEN_NOCLEANUP  0x00800  /**< Do not register a cleanup
-                                         when the file is opened */
-#define APR_FOPEN_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this
-                                             file should support
-                                             apr_socket_sendfile operation */
-#define APR_FOPEN_LARGEFILE   0x04000 /**< Platform dependent flag to enable
-                                       * large file support, see WARNING below
-                                       */
-#define APR_FOPEN_SPARSE      0x08000 /**< Platform dependent flag to enable
-                                       * sparse file support, see WARNING below
-                                       */
-
-/* backcompat */
-#define APR_READ             APR_FOPEN_READ       /**< @deprecated @see APR_FOPEN_READ */
-#define APR_WRITE            APR_FOPEN_WRITE      /**< @deprecated @see APR_FOPEN_WRITE */   
-#define APR_CREATE           APR_FOPEN_CREATE     /**< @deprecated @see APR_FOPEN_CREATE */   
-#define APR_APPEND           APR_FOPEN_APPEND     /**< @deprecated @see APR_FOPEN_APPEND */   
-#define APR_TRUNCATE         APR_FOPEN_TRUNCATE   /**< @deprecated @see APR_FOPEN_TRUNCATE */   
-#define APR_BINARY           APR_FOPEN_BINARY     /**< @deprecated @see APR_FOPEN_BINARY */   
-#define APR_EXCL             APR_FOPEN_EXCL       /**< @deprecated @see APR_FOPEN_EXCL */   
-#define APR_BUFFERED         APR_FOPEN_BUFFERED   /**< @deprecated @see APR_FOPEN_BUFFERED */   
-#define APR_DELONCLOSE       APR_FOPEN_DELONCLOSE /**< @deprecated @see APR_FOPEN_DELONCLOSE */   
-#define APR_XTHREAD          APR_FOPEN_XTHREAD    /**< @deprecated @see APR_FOPEN_XTHREAD */   
-#define APR_SHARELOCK        APR_FOPEN_SHARELOCK  /**< @deprecated @see APR_FOPEN_SHARELOCK */   
-#define APR_FILE_NOCLEANUP   APR_FOPEN_NOCLEANUP  /**< @deprecated @see APR_FOPEN_NOCLEANUP */   
-#define APR_SENDFILE_ENABLED APR_FOPEN_SENDFILE_ENABLED /**< @deprecated @see APR_FOPEN_SENDFILE_ENABLED */   
-#define APR_LARGEFILE        APR_FOPEN_LARGEFILE  /**< @deprecated @see APR_FOPEN_LARGEFILE */   
-
-/** @warning APR_FOPEN_LARGEFILE flag only has effect on some
- * platforms where sizeof(apr_off_t) == 4.  Where implemented, it
- * allows opening and writing to a file which exceeds the size which
- * can be represented by apr_off_t (2 gigabytes).  When a file's size
- * does exceed 2Gb, apr_file_info_get() will fail with an error on the
- * descriptor, likewise apr_stat()/apr_lstat() will fail on the
- * filename.  apr_dir_read() will fail with APR_INCOMPLETE on a
- * directory entry for a large file depending on the particular
- * APR_FINFO_* flags.  Generally, it is not recommended to use this
- * flag.
- *
- * @warning APR_FOPEN_SPARSE may, depending on platform, convert a
- * normal file to a sparse file.  Some applications may be unable
- * to decipher a sparse file, so it's critical that the sparse file
- * flag should only be used for files accessed only by APR or other
- * applications known to be able to decipher them.  APR does not
- * guarantee that it will compress the file into sparse segments
- * if it was previously created and written without the sparse flag.
- * On platforms which do not understand, or on file systems which
- * cannot handle sparse files, the flag is ignored by apr_file_open().
- */
-
-/** @} */
-
-/**
- * @defgroup apr_file_seek_flags File Seek Flags
- * @{
- */
-
-/* flags for apr_file_seek */
-/** Set the file position */
-#define APR_SET SEEK_SET
-/** Current */
-#define APR_CUR SEEK_CUR
-/** Go to end of file */
-#define APR_END SEEK_END
-/** @} */
-
-/**
- * @defgroup apr_file_attrs_set_flags File Attribute Flags
- * @{
- */
-
-/* flags for apr_file_attrs_set */
-#define APR_FILE_ATTR_READONLY   0x01          /**< File is read-only */
-#define APR_FILE_ATTR_EXECUTABLE 0x02          /**< File is executable */
-#define APR_FILE_ATTR_HIDDEN     0x04          /**< File is hidden */
-/** @} */
-
-/**
- * @defgroup apr_file_writev{_full} max iovec size
- * @{
- */
-#if defined(DOXYGEN)
-#define APR_MAX_IOVEC_SIZE 1024                /**< System dependent maximum 
-                                                    size of an iovec array */
-#elif defined(IOV_MAX)
-#define APR_MAX_IOVEC_SIZE IOV_MAX
-#elif defined(MAX_IOVEC)
-#define APR_MAX_IOVEC_SIZE MAX_IOVEC
-#else
-#define APR_MAX_IOVEC_SIZE 1024
-#endif
-/** @} */
-
-/** File attributes */
-typedef apr_uint32_t apr_fileattrs_t;
-
-/** Type to pass as whence argument to apr_file_seek. */
-typedef int       apr_seek_where_t;
-
-/**
- * Structure for referencing files.
- */
-typedef struct apr_file_t         apr_file_t;
-
-/* File lock types/flags */
-/**
- * @defgroup apr_file_lock_types File Lock Types
- * @{
- */
-
-#define APR_FLOCK_SHARED        1       /**< Shared lock. More than one process
-                                           or thread can hold a shared lock
-                                           at any given time. Essentially,
-                                           this is a "read lock", preventing
-                                           writers from establishing an
-                                           exclusive lock. */
-#define APR_FLOCK_EXCLUSIVE     2       /**< Exclusive lock. Only one process
-                                           may hold an exclusive lock at any
-                                           given time. This is analogous to
-                                           a "write lock". */
-
-#define APR_FLOCK_TYPEMASK      0x000F  /**< mask to extract lock type */
-#define APR_FLOCK_NONBLOCK      0x0010  /**< do not block while acquiring the
-                                           file lock */
-/** @} */
-
-/**
- * Open the specified file.
- * @param newf The opened file descriptor.
- * @param fname The full path to the file (using / on all systems)
- * @param flag Or'ed value of:
- * <PRE>
- *         APR_READ              open for reading
- *         APR_WRITE             open for writing
- *         APR_CREATE            create the file if not there
- *         APR_APPEND            file ptr is set to end prior to all writes
- *         APR_TRUNCATE          set length to zero if file exists
- *         APR_BINARY            not a text file (This flag is ignored on 
- *                               UNIX because it has no meaning)
- *         APR_BUFFERED          buffer the data.  Default is non-buffered
- *         APR_EXCL              return error if APR_CREATE and file exists
- *         APR_DELONCLOSE        delete the file after closing.
- *         APR_XTHREAD           Platform dependent tag to open the file
- *                               for use across multiple threads
- *         APR_SHARELOCK         Platform dependent support for higher
- *                               level locked read/write access to support
- *                               writes across process/machines
- *         APR_FILE_NOCLEANUP    Do not register a cleanup with the pool 
- *                               passed in on the <EM>pool</EM> argument (see below).
- *                               The apr_os_file_t handle in apr_file_t will not
- *                               be closed when the pool is destroyed.
- *         APR_SENDFILE_ENABLED  Open with appropriate platform semantics
- *                               for sendfile operations.  Advisory only,
- *                               apr_socket_sendfile does not check this flag.
- * </PRE>
- * @param perm Access permissions for file.
- * @param pool The pool to use.
- * @remark If perm is APR_OS_DEFAULT and the file is being created,
- * appropriate default permissions will be used.
- * @remark By default, the returned file descriptor will not be
- * inherited by child processes created by apr_proc_create().  This
- * can be changed using apr_file_inherit_set().
- */
-APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **newf, const char *fname,
-                                        apr_int32_t flag, apr_fileperms_t perm,
-                                        apr_pool_t *pool);
-
-/**
- * Close the specified file.
- * @param file The file descriptor to close.
- */
-APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file);
-
-/**
- * Delete the specified file.
- * @param path The full path to the file (using / on all systems)
- * @param pool The pool to use.
- * @remark If the file is open, it won't be removed until all
- * instances are closed.
- */
-APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool);
-
-/**
- * Rename the specified file.
- * @param from_path The full path to the original file (using / on all systems)
- * @param to_path The full path to the new file (using / on all systems)
- * @param pool The pool to use.
- * @warning If a file exists at the new location, then it will be
- * overwritten.  Moving files or directories across devices may not be
- * possible.
- */
-APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, 
-                                          const char *to_path,
-                                          apr_pool_t *pool);
-
-/**
- * Create a hard link to the specified file.
- * @param from_path The full path to the original file (using / on all systems)
- * @param to_path The full path to the new file (using / on all systems)
- * @remark Both files must reside on the same device.
- */
-APR_DECLARE(apr_status_t) apr_file_link(const char *from_path, 
-                                          const char *to_path);
-
-/**
- * Copy the specified file to another file.
- * @param from_path The full path to the original file (using / on all systems)
- * @param to_path The full path to the new file (using / on all systems)
- * @param perms Access permissions for the new file if it is created.
- *     In place of the usual or'd combination of file permissions, the
- *     value APR_FILE_SOURCE_PERMS may be given, in which case the source
- *     file's permissions are copied.
- * @param pool The pool to use.
- * @remark The new file does not need to exist, it will be created if required.
- * @warning If the new file already exists, its contents will be overwritten.
- */
-APR_DECLARE(apr_status_t) apr_file_copy(const char *from_path, 
-                                        const char *to_path,
-                                        apr_fileperms_t perms,
-                                        apr_pool_t *pool);
-
-/**
- * Append the specified file to another file.
- * @param from_path The full path to the source file (use / on all systems)
- * @param to_path The full path to the destination file (use / on all systems)
- * @param perms Access permissions for the destination file if it is created.
- *     In place of the usual or'd combination of file permissions, the
- *     value APR_FILE_SOURCE_PERMS may be given, in which case the source
- *     file's permissions are copied.
- * @param pool The pool to use.
- * @remark The new file does not need to exist, it will be created if required.
- */
-APR_DECLARE(apr_status_t) apr_file_append(const char *from_path, 
-                                          const char *to_path,
-                                          apr_fileperms_t perms,
-                                          apr_pool_t *pool);
-
-/**
- * Are we at the end of the file
- * @param fptr The apr file we are testing.
- * @remark Returns APR_EOF if we are at the end of file, APR_SUCCESS otherwise.
- */
-APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr);
-
-/**
- * Open standard error as an apr file pointer.
- * @param thefile The apr file to use as stderr.
- * @param pool The pool to allocate the file out of.
- * 
- * @remark The only reason that the apr_file_open_std* functions exist
- * is that you may not always have a stderr/out/in on Windows.  This
- * is generally a problem with newer versions of Windows and services.
- * 
- * @remark The other problem is that the C library functions generally work
- * differently on Windows and Unix.  So, by using apr_file_open_std*
- * functions, you can get a handle to an APR struct that works with
- * the APR functions which are supposed to work identically on all
- * platforms.
- */
-APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile,
-                                               apr_pool_t *pool);
-
-/**
- * open standard output as an apr file pointer.
- * @param thefile The apr file to use as stdout.
- * @param pool The pool to allocate the file out of.
- * 
- * @remark See remarks for apr_file_open_stderr.
- */
-APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile,
-                                               apr_pool_t *pool);
-
-/**
- * open standard input as an apr file pointer.
- * @param thefile The apr file to use as stdin.
- * @param pool The pool to allocate the file out of.
- * 
- * @remark See remarks for apr_file_open_stderr.
- */
-APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile,
-                                              apr_pool_t *pool);
-
-/**
- * open standard error as an apr file pointer, with flags.
- * @param thefile The apr file to use as stderr.
- * @param flags The flags to open the file with. Only the APR_EXCL,
- *              APR_BUFFERED, APR_XTHREAD, APR_SHARELOCK, 
- *              APR_SENDFILE_ENABLED and APR_LARGEFILE flags should
- *              be used. The APR_WRITE flag will be set unconditionally.
- * @param pool The pool to allocate the file out of.
- * 
- * @remark See remarks for apr_file_open_stderr.
- */
-APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile,
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool);
-
-/**
- * open standard output as an apr file pointer, with flags.
- * @param thefile The apr file to use as stdout.
- * @param flags The flags to open the file with. Only the APR_EXCL,
- *              APR_BUFFERED, APR_XTHREAD, APR_SHARELOCK, 
- *              APR_SENDFILE_ENABLED and APR_LARGEFILE flags should
- *              be used. The APR_WRITE flag will be set unconditionally.
- * @param pool The pool to allocate the file out of.
- * 
- * @remark See remarks for apr_file_open_stderr.
- */
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile,
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool);
-
-/**
- * open standard input as an apr file pointer, with flags.
- * @param thefile The apr file to use as stdin.
- * @param flags The flags to open the file with. Only the APR_EXCL,
- *              APR_BUFFERED, APR_XTHREAD, APR_SHARELOCK, 
- *              APR_SENDFILE_ENABLED and APR_LARGEFILE flags should
- *              be used. The APR_READ flag will be set unconditionally.
- * @param pool The pool to allocate the file out of.
- * 
- * @remark See remarks for apr_file_open_stderr.
- */
-APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile,
-                                                     apr_int32_t flags,
-                                                     apr_pool_t *pool);
-
-/**
- * Read data from the specified file.
- * @param thefile The file descriptor to read from.
- * @param buf The buffer to store the data to.
- * @param nbytes On entry, the number of bytes to read; on exit, the number
- * of bytes read.
- *
- * @remark apr_file_read will read up to the specified number of
- * bytes, but never more.  If there isn't enough data to fill that
- * number of bytes, all of the available data is read.  The third
- * argument is modified to reflect the number of bytes read.  If a
- * char was put back into the stream via ungetc, it will be the first
- * character returned.
- *
- * @remark It is not possible for both bytes to be read and an APR_EOF
- * or other error to be returned.  APR_EINTR is never returned.
- */
-APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf,
-                                        apr_size_t *nbytes);
-
-/**
- * Write data to the specified file.
- * @param thefile The file descriptor to write to.
- * @param buf The buffer which contains the data.
- * @param nbytes On entry, the number of bytes to write; on exit, the number 
- *               of bytes written.
- *
- * @remark apr_file_write will write up to the specified number of
- * bytes, but never more.  If the OS cannot write that many bytes, it
- * will write as many as it can.  The third argument is modified to
- * reflect the * number of bytes written.
- *
- * @remark It is possible for both bytes to be written and an error to
- * be returned.  APR_EINTR is never returned.
- */
-APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf,
-                                         apr_size_t *nbytes);
-
-/**
- * Write data from iovec array to the specified file.
- * @param thefile The file descriptor to write to.
- * @param vec The array from which to get the data to write to the file.
- * @param nvec The number of elements in the struct iovec array. This must 
- *             be smaller than APR_MAX_IOVEC_SIZE.  If it isn't, the function 
- *             will fail with APR_EINVAL.
- * @param nbytes The number of bytes written.
- *
- * @remark It is possible for both bytes to be written and an error to
- * be returned.  APR_EINTR is never returned.
- *
- * @remark apr_file_writev is available even if the underlying
- * operating system doesn't provide writev().
- */
-APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile,
-                                          const struct iovec *vec,
-                                          apr_size_t nvec, apr_size_t *nbytes);
-
-/**
- * Read data from the specified file, ensuring that the buffer is filled
- * before returning.
- * @param thefile The file descriptor to read from.
- * @param buf The buffer to store the data to.
- * @param nbytes The number of bytes to read.
- * @param bytes_read If non-NULL, this will contain the number of bytes read.
- *
- * @remark apr_file_read will read up to the specified number of
- * bytes, but never more.  If there isn't enough data to fill that
- * number of bytes, then the process/thread will block until it is
- * available or EOF is reached.  If a char was put back into the
- * stream via ungetc, it will be the first character returned.
- *
- * @remark It is possible for both bytes to be read and an error to be
- * returned.  And if *bytes_read is less than nbytes, an accompanying
- * error is _always_ returned.
- *
- * @remark APR_EINTR is never returned.
- */
-APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf,
-                                             apr_size_t nbytes,
-                                             apr_size_t *bytes_read);
-
-/**
- * Write data to the specified file, ensuring that all of the data is
- * written before returning.
- * @param thefile The file descriptor to write to.
- * @param buf The buffer which contains the data.
- * @param nbytes The number of bytes to write.
- * @param bytes_written If non-NULL, set to the number of bytes written.
- * 
- * @remark apr_file_write will write up to the specified number of
- * bytes, but never more.  If the OS cannot write that many bytes, the
- * process/thread will block until they can be written. Exceptional
- * error such as "out of space" or "pipe closed" will terminate with
- * an error.
- *
- * @remark It is possible for both bytes to be written and an error to
- * be returned.  And if *bytes_written is less than nbytes, an
- * accompanying error is _always_ returned.
- *
- * @remark APR_EINTR is never returned.
- */
-APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, 
-                                              const void *buf,
-                                              apr_size_t nbytes, 
-                                              apr_size_t *bytes_written);
-
-
-/**
- * Write data from iovec array to the specified file, ensuring that all of the
- * data is written before returning.
- * @param thefile The file descriptor to write to.
- * @param vec The array from which to get the data to write to the file.
- * @param nvec The number of elements in the struct iovec array. This must 
- *             be smaller than APR_MAX_IOVEC_SIZE.  If it isn't, the function 
- *             will fail with APR_EINVAL.
- * @param nbytes The number of bytes written.
- *
- * @remark apr_file_writev_full is available even if the underlying
- * operating system doesn't provide writev().
- */
-APR_DECLARE(apr_status_t) apr_file_writev_full(apr_file_t *thefile,
-                                               const struct iovec *vec,
-                                               apr_size_t nvec,
-                                               apr_size_t *nbytes);
-/**
- * Write a character into the specified file.
- * @param ch The character to write.
- * @param thefile The file descriptor to write to
- */
-APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile);
-
-/**
- * Read a character from the specified file.
- * @param ch The character to read into
- * @param thefile The file descriptor to read from
- */
-APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile);
-
-/**
- * Put a character back onto a specified stream.
- * @param ch The character to write.
- * @param thefile The file descriptor to write to
- */
-APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile);
-
-/**
- * Read a line from the specified file
- * @param str The buffer to store the string in. 
- * @param len The length of the string
- * @param thefile The file descriptor to read from
- * @remark The buffer will be NUL-terminated if any characters are stored.
- *         The newline at the end of the line will not be stripped.
- */
-APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, 
-                                        apr_file_t *thefile);
-
-/**
- * Write the string into the specified file.
- * @param str The string to write. 
- * @param thefile The file descriptor to write to
- */
-APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile);
-
-/**
- * Flush the file's buffer.
- * @param thefile The file descriptor to flush
- */
-APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile);
-
-/**
- * Transfer all file modified data and metadata to disk.
- * @param thefile The file descriptor to sync
- */
-APR_DECLARE(apr_status_t) apr_file_sync(apr_file_t *thefile);
-
-/**
- * Transfer all file modified data to disk.
- * @param thefile The file descriptor to sync
- */
-APR_DECLARE(apr_status_t) apr_file_datasync(apr_file_t *thefile);
-
-/**
- * Duplicate the specified file descriptor.
- * @param new_file The structure to duplicate into. 
- * @param old_file The file to duplicate.
- * @param p The pool to use for the new file.
- * @remark *new_file must point to a valid apr_file_t, or point to NULL.
- */         
-APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
-                                       apr_file_t *old_file,
-                                       apr_pool_t *p);
-
-/**
- * Duplicate the specified file descriptor and close the original
- * @param new_file The old file that is to be closed and reused
- * @param old_file The file to duplicate
- * @param p        The pool to use for the new file
- *
- * @remark new_file MUST point at a valid apr_file_t. It cannot be NULL.
- */
-APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
-                                        apr_file_t *old_file,
-                                        apr_pool_t *p);
-
-/**
- * Move the specified file descriptor to a new pool
- * @param new_file Pointer in which to return the new apr_file_t
- * @param old_file The file to move
- * @param p        The pool to which the descriptor is to be moved
- * @remark Unlike apr_file_dup2(), this function doesn't do an
- *         OS dup() operation on the underlying descriptor; it just
- *         moves the descriptor's apr_file_t wrapper to a new pool.
- * @remark The new pool need not be an ancestor of old_file's pool.
- * @remark After calling this function, old_file may not be used
- */
-APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
-                                            apr_file_t *old_file,
-                                            apr_pool_t *p);
-
-/**
- * Give the specified apr file handle a new buffer 
- * @param thefile  The file handle that is to be modified
- * @param buffer   The buffer
- * @param bufsize  The size of the buffer
- * @remark It is possible to add a buffer to previously unbuffered
- *         file handles, the APR_BUFFERED flag will be added to
- *         the file handle's flags. Likewise, with buffer=NULL and
- *         bufsize=0 arguments it is possible to make a previously
- *         buffered file handle unbuffered.
- */
-APR_DECLARE(apr_status_t) apr_file_buffer_set(apr_file_t *thefile,
-                                              char * buffer,
-                                              apr_size_t bufsize);
-
-/**
- * Get the size of any buffer for the specified apr file handle 
- * @param thefile  The file handle 
- */
-APR_DECLARE(apr_size_t) apr_file_buffer_size_get(apr_file_t *thefile);
-
-/**
- * Move the read/write file offset to a specified byte within a file.
- * @param thefile The file descriptor
- * @param where How to move the pointer, one of:
- * <PRE>
- *            APR_SET  --  set the offset to offset
- *            APR_CUR  --  add the offset to the current position 
- *            APR_END  --  add the offset to the current file size 
- * </PRE>
- * @param offset The offset to move the pointer to.
- * @remark The third argument is modified to be the offset the pointer
-          was actually moved to.
- */
-APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, 
-                                   apr_seek_where_t where,
-                                   apr_off_t *offset);
-
-/**
- * Create an anonymous pipe.
- * @param in The newly created pipe's file for reading.
- * @param out The newly created pipe's file for writing.
- * @param pool The pool to operate on.
- * @remark By default, the returned file descriptors will be inherited
- * by child processes created using apr_proc_create().  This can be
- * changed using apr_file_inherit_unset().
- * @bug  Some platforms cannot toggle between blocking and nonblocking,
- * and when passing a pipe as a standard handle to an application which
- * does not expect it, a non-blocking stream will fluxor the client app.
- * @deprecated @see apr_file_pipe_create_ex
- */
-APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, 
-                                               apr_file_t **out,
-                                               apr_pool_t *pool);
-
-/**
- * Create an anonymous pipe which portably supports async timeout options.
- * @param in The newly created pipe's file for reading.
- * @param out The newly created pipe's file for writing.
- * @param blocking one of these values defined in apr_thread_proc.h;
- * @param pool The pool to operate on.
- * <pre>
- *       APR_FULL_BLOCK
- *       APR_READ_BLOCK
- *       APR_WRITE_BLOCK
- *       APR_FULL_NONBLOCK
- * </pre>
- * @remark By default, the returned file descriptors will be inherited
- * by child processes created using apr_proc_create().  This can be
- * changed using apr_file_inherit_unset().
- * @remark Some platforms cannot toggle between blocking and nonblocking,
- * and when passing a pipe as a standard handle to an application which
- * does not expect it, a non-blocking stream will fluxor the client app.
- * Use this function rather than apr_file_pipe_create to create pipes 
- * where one or both ends require non-blocking semantics.
- */
-APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in, 
-                                                  apr_file_t **out, 
-                                                  apr_int32_t blocking, 
-                                                  apr_pool_t *pool);
-
-/**
- * Create a named pipe.
- * @param filename The filename of the named pipe
- * @param perm The permissions for the newly created pipe.
- * @param pool The pool to operate on.
- */
-APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, 
-                                                    apr_fileperms_t perm, 
-                                                    apr_pool_t *pool);
-
-/**
- * Get the timeout value for a pipe or manipulate the blocking state.
- * @param thepipe The pipe we are getting a timeout for.
- * @param timeout The current timeout value in microseconds. 
- */
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, 
-                                               apr_interval_time_t *timeout);
-
-/**
- * Set the timeout value for a pipe or manipulate the blocking state.
- * @param thepipe The pipe we are setting a timeout on.
- * @param timeout The timeout value in microseconds.  Values < 0 mean wait 
- *        forever, 0 means do not wait at all.
- */
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, 
-                                                  apr_interval_time_t timeout);
-
-/** file (un)locking functions. */
-
-/**
- * Establish a lock on the specified, open file. The lock may be advisory
- * or mandatory, at the discretion of the platform. The lock applies to
- * the file as a whole, rather than a specific range. Locks are established
- * on a per-thread/process basis; a second lock by the same thread will not
- * block.
- * @param thefile The file to lock.
- * @param type The type of lock to establish on the file.
- */
-APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type);
-
-/**
- * Remove any outstanding locks on the file.
- * @param thefile The file to unlock.
- */
-APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile);
-
-/**accessor and general file_io functions. */
-
-/**
- * return the file name of the current file.
- * @param new_path The path of the file.  
- * @param thefile The currently open file.
- */                     
-APR_DECLARE(apr_status_t) apr_file_name_get(const char **new_path, 
-                                            apr_file_t *thefile);
-    
-/**
- * Return the data associated with the current file.
- * @param data The user data associated with the file.  
- * @param key The key to use for retrieving data associated with this file.
- * @param file The currently open file.
- */                     
-APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key, 
-                                            apr_file_t *file);
-
-/**
- * Set the data associated with the current file.
- * @param file The currently open file.
- * @param data The user data to associate with the file.  
- * @param key The key to use for associating data with the file.
- * @param cleanup The cleanup routine to use when the file is destroyed.
- */                     
-APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data,
-                                            const char *key,
-                                            apr_status_t (*cleanup)(void *));
-
-/**
- * Write a string to a file using a printf format.
- * @param fptr The file to write to.
- * @param format The format string
- * @param ... The values to substitute in the format string
- * @return The number of bytes written
- */ 
-APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, 
-                                        const char *format, ...)
-        __attribute__((format(printf,2,3)));
-
-/**
- * set the specified file's permission bits.
- * @param fname The file (name) to apply the permissions to.
- * @param perms The permission bits to apply to the file.
- *
- * @warning Some platforms may not be able to apply all of the
- * available permission bits; APR_INCOMPLETE will be returned if some
- * permissions are specified which could not be set.
- *
- * @warning Platforms which do not implement this feature will return
- * APR_ENOTIMPL.
- */
-APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname,
-                                             apr_fileperms_t perms);
-
-/**
- * Set attributes of the specified file.
- * @param fname The full path to the file (using / on all systems)
- * @param attributes Or'd combination of
- * <PRE>
- *            APR_FILE_ATTR_READONLY   - make the file readonly
- *            APR_FILE_ATTR_EXECUTABLE - make the file executable
- *            APR_FILE_ATTR_HIDDEN     - make the file hidden
- * </PRE>
- * @param attr_mask Mask of valid bits in attributes.
- * @param pool the pool to use.
- * @remark This function should be used in preference to explicit manipulation
- *      of the file permissions, because the operations to provide these
- *      attributes are platform specific and may involve more than simply
- *      setting permission bits.
- * @warning Platforms which do not implement this feature will return
- *      APR_ENOTIMPL.
- */
-APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
-                                             apr_fileattrs_t attributes,
-                                             apr_fileattrs_t attr_mask,
-                                             apr_pool_t *pool);
-
-/**
- * Set the mtime of the specified file.
- * @param fname The full path to the file (using / on all systems)
- * @param mtime The mtime to apply to the file.
- * @param pool The pool to use.
- * @warning Platforms which do not implement this feature will return
- *      APR_ENOTIMPL.
- */
-APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
-                                             apr_time_t mtime,
-                                             apr_pool_t *pool);
-
-/**
- * Create a new directory on the file system.
- * @param path the path for the directory to be created. (use / on all systems)
- * @param perm Permissions for the new directory.
- * @param pool the pool to use.
- */                        
-APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, 
-                                       apr_pool_t *pool);
-
-/** Creates a new directory on the file system, but behaves like
- * 'mkdir -p'. Creates intermediate directories as required. No error
- * will be reported if PATH already exists.
- * @param path the path for the directory to be created. (use / on all systems)
- * @param perm Permissions for the new directory.
- * @param pool the pool to use.
- */
-APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path,
-                                                 apr_fileperms_t perm,
-                                                 apr_pool_t *pool);
-
-/**
- * Remove directory from the file system.
- * @param path the path for the directory to be removed. (use / on all systems)
- * @param pool the pool to use.
- * @remark Removing a directory which is in-use (e.g., the current working
- * directory, or during apr_dir_read, or with an open file) is not portable.
- */                        
-APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool);
-
-/**
- * get the specified file's stats.
- * @param finfo Where to store the information about the file.
- * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values 
- * @param thefile The file to get information about.
- */ 
-APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, 
-                                            apr_int32_t wanted,
-                                            apr_file_t *thefile);
-    
-
-/**
- * Truncate the file's length to the specified offset
- * @param fp The file to truncate
- * @param offset The offset to truncate to.
- * @remark The read/write file offset is repositioned to offset.
- */
-APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *fp, apr_off_t offset);
-
-/**
- * Retrieve the flags that were passed into apr_file_open()
- * when the file was opened.
- * @return apr_int32_t the flags
- */
-APR_DECLARE(apr_int32_t) apr_file_flags_get(apr_file_t *f);
-
-/**
- * Get the pool used by the file.
- */
-APR_POOL_DECLARE_ACCESSOR(file);
-
-/**
- * Set a file to be inherited by child processes.
- *
- */
-APR_DECLARE_INHERIT_SET(file);
-
-/**
- * Unset a file from being inherited by child processes.
- */
-APR_DECLARE_INHERIT_UNSET(file);
-
-/**
- * Open a temporary file
- * @param fp The apr file to use as a temporary file.
- * @param templ The template to use when creating a temp file.
- * @param flags The flags to open the file with. If this is zero,
- *              the file is opened with 
- *              APR_CREATE | APR_READ | APR_WRITE | APR_EXCL | APR_DELONCLOSE
- * @param p The pool to allocate the file out of.
- * @remark   
- * This function  generates  a unique temporary file name from template.  
- * The last six characters of template must be XXXXXX and these are replaced 
- * with a string that makes the filename unique. Since it will  be  modified,
- * template must not be a string constant, but should be declared as a character
- * array.  
- *
- */
-APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *templ,
-                                          apr_int32_t flags, apr_pool_t *p);
-
-
-/**
- * Find an existing directory suitable as a temporary storage location.
- * @param temp_dir The temp directory.
- * @param p The pool to use for any necessary allocations.
- * @remark   
- * This function uses an algorithm to search for a directory that an
- * an application can use for temporary storage.
- *
- */
-APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, 
-                                           apr_pool_t *p);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_FILE_IO_H */

Copied: vendor/apache/apr/1.5.2/include/apr_file_io.h (from rev 9273, vendor/apache/apr/dist/include/apr_file_io.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_file_io.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_file_io.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,973 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_FILE_IO_H
+#define APR_FILE_IO_H
+
+/**
+ * @file apr_file_io.h
+ * @brief APR File I/O Handling
+ */
+
+#include "apr.h"
+#include "apr_pools.h"
+#include "apr_time.h"
+#include "apr_errno.h"
+#include "apr_file_info.h"
+#include "apr_inherit.h"
+
+#define APR_WANT_STDIO          /**< for SEEK_* */
+#define APR_WANT_IOVEC          /**< for apr_file_writev */
+#include "apr_want.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_file_io File I/O Handling Functions
+ * @ingroup APR 
+ * @{
+ */
+
+/**
+ * @defgroup apr_file_open_flags File Open Flags/Routines
+ * @{
+ */
+
+/* Note to implementors: Values in the range 0x00100000--0x80000000
+   are reserved for platform-specific values. */
+
+#define APR_FOPEN_READ       0x00001  /**< Open the file for reading */
+#define APR_FOPEN_WRITE      0x00002  /**< Open the file for writing */
+#define APR_FOPEN_CREATE     0x00004  /**< Create the file if not there */
+#define APR_FOPEN_APPEND     0x00008  /**< Append to the end of the file */
+#define APR_FOPEN_TRUNCATE   0x00010  /**< Open the file and truncate
+                                         to 0 length */
+#define APR_FOPEN_BINARY     0x00020  /**< Open the file in binary mode
+				         (This flag is ignored on UNIX 
+					 because it has no meaning)*/
+#define APR_FOPEN_EXCL       0x00040  /**< Open should fail if #APR_FOPEN_CREATE
+                                         and file exists. */
+#define APR_FOPEN_BUFFERED   0x00080  /**< Open the file for buffered I/O */
+#define APR_FOPEN_DELONCLOSE 0x00100  /**< Delete the file after close */
+#define APR_FOPEN_XTHREAD    0x00200  /**< Platform dependent tag to open
+                                         the file for use across multiple
+                                         threads */
+#define APR_FOPEN_SHARELOCK  0x00400  /**< Platform dependent support for
+                                         higher level locked read/write
+                                         access to support writes across
+                                         process/machines */
+#define APR_FOPEN_NOCLEANUP  0x00800  /**< Do not register a cleanup
+                                         when the file is opened. The
+					 apr_os_file_t handle in apr_file_t
+					 will not be closed when the pool
+					 is destroyed. */
+#define APR_FOPEN_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this
+                                             file should support
+                                             apr_socket_sendfile operation */
+#define APR_FOPEN_LARGEFILE   0x04000 /**< Platform dependent flag to enable
+                                       * large file support, see WARNING below
+                                       */
+#define APR_FOPEN_SPARSE      0x08000 /**< Platform dependent flag to enable
+                                       * sparse file support, see WARNING below
+                                       */
+#define APR_FOPEN_NONBLOCK    0x40000 /**< Platform dependent flag to enable
+                                       * non blocking file io */
+
+
+/* backcompat */
+#define APR_READ             APR_FOPEN_READ       /**< @deprecated @see APR_FOPEN_READ */
+#define APR_WRITE            APR_FOPEN_WRITE      /**< @deprecated @see APR_FOPEN_WRITE */   
+#define APR_CREATE           APR_FOPEN_CREATE     /**< @deprecated @see APR_FOPEN_CREATE */   
+#define APR_APPEND           APR_FOPEN_APPEND     /**< @deprecated @see APR_FOPEN_APPEND */   
+#define APR_TRUNCATE         APR_FOPEN_TRUNCATE   /**< @deprecated @see APR_FOPEN_TRUNCATE */   
+#define APR_BINARY           APR_FOPEN_BINARY     /**< @deprecated @see APR_FOPEN_BINARY */   
+#define APR_EXCL             APR_FOPEN_EXCL       /**< @deprecated @see APR_FOPEN_EXCL */   
+#define APR_BUFFERED         APR_FOPEN_BUFFERED   /**< @deprecated @see APR_FOPEN_BUFFERED */   
+#define APR_DELONCLOSE       APR_FOPEN_DELONCLOSE /**< @deprecated @see APR_FOPEN_DELONCLOSE */   
+#define APR_XTHREAD          APR_FOPEN_XTHREAD    /**< @deprecated @see APR_FOPEN_XTHREAD */   
+#define APR_SHARELOCK        APR_FOPEN_SHARELOCK  /**< @deprecated @see APR_FOPEN_SHARELOCK */   
+#define APR_FILE_NOCLEANUP   APR_FOPEN_NOCLEANUP  /**< @deprecated @see APR_FOPEN_NOCLEANUP */   
+#define APR_SENDFILE_ENABLED APR_FOPEN_SENDFILE_ENABLED /**< @deprecated @see APR_FOPEN_SENDFILE_ENABLED */   
+#define APR_LARGEFILE        APR_FOPEN_LARGEFILE  /**< @deprecated @see APR_FOPEN_LARGEFILE */   
+
+/** @def APR_FOPEN_LARGEFILE 
+ * @warning APR_FOPEN_LARGEFILE flag only has effect on some
+ * platforms where sizeof(apr_off_t) == 4.  Where implemented, it
+ * allows opening and writing to a file which exceeds the size which
+ * can be represented by apr_off_t (2 gigabytes).  When a file's size
+ * does exceed 2Gb, apr_file_info_get() will fail with an error on the
+ * descriptor, likewise apr_stat()/apr_lstat() will fail on the
+ * filename.  apr_dir_read() will fail with #APR_INCOMPLETE on a
+ * directory entry for a large file depending on the particular
+ * APR_FINFO_* flags.  Generally, it is not recommended to use this
+ * flag.
+ *
+ * @def APR_FOPEN_SPARSE
+ * @warning APR_FOPEN_SPARSE may, depending on platform, convert a
+ * normal file to a sparse file.  Some applications may be unable
+ * to decipher a sparse file, so it's critical that the sparse file
+ * flag should only be used for files accessed only by APR or other
+ * applications known to be able to decipher them.  APR does not
+ * guarantee that it will compress the file into sparse segments
+ * if it was previously created and written without the sparse flag.
+ * On platforms which do not understand, or on file systems which
+ * cannot handle sparse files, the flag is ignored by apr_file_open().
+ *
+ * @def APR_FOPEN_NONBLOCK
+ * @warning APR_FOPEN_NONBLOCK is not implemented on all platforms.
+ * Callers should be prepared for it to fail with #APR_ENOTIMPL.
+ */
+
+/** @} */
+
+/**
+ * @defgroup apr_file_seek_flags File Seek Flags
+ * @{
+ */
+
+/* flags for apr_file_seek */
+/** Set the file position */
+#define APR_SET SEEK_SET
+/** Current */
+#define APR_CUR SEEK_CUR
+/** Go to end of file */
+#define APR_END SEEK_END
+/** @} */
+
+/**
+ * @defgroup apr_file_attrs_set_flags File Attribute Flags
+ * @{
+ */
+
+/* flags for apr_file_attrs_set */
+#define APR_FILE_ATTR_READONLY   0x01          /**< File is read-only */
+#define APR_FILE_ATTR_EXECUTABLE 0x02          /**< File is executable */
+#define APR_FILE_ATTR_HIDDEN     0x04          /**< File is hidden */
+/** @} */
+
+/**
+ * @defgroup apr_file_writev{_full} max iovec size
+ * @{
+ */
+#if defined(DOXYGEN)
+#define APR_MAX_IOVEC_SIZE 1024                /**< System dependent maximum 
+                                                    size of an iovec array */
+#elif defined(IOV_MAX)
+#define APR_MAX_IOVEC_SIZE IOV_MAX
+#elif defined(MAX_IOVEC)
+#define APR_MAX_IOVEC_SIZE MAX_IOVEC
+#else
+#define APR_MAX_IOVEC_SIZE 1024
+#endif
+/** @} */
+
+/** File attributes */
+typedef apr_uint32_t apr_fileattrs_t;
+
+/** Type to pass as whence argument to apr_file_seek. */
+typedef int       apr_seek_where_t;
+
+/**
+ * Structure for referencing files.
+ */
+typedef struct apr_file_t         apr_file_t;
+
+/* File lock types/flags */
+/**
+ * @defgroup apr_file_lock_types File Lock Types
+ * @{
+ */
+
+#define APR_FLOCK_SHARED        1       /**< Shared lock. More than one process
+                                           or thread can hold a shared lock
+                                           at any given time. Essentially,
+                                           this is a "read lock", preventing
+                                           writers from establishing an
+                                           exclusive lock. */
+#define APR_FLOCK_EXCLUSIVE     2       /**< Exclusive lock. Only one process
+                                           may hold an exclusive lock at any
+                                           given time. This is analogous to
+                                           a "write lock". */
+
+#define APR_FLOCK_TYPEMASK      0x000F  /**< mask to extract lock type */
+#define APR_FLOCK_NONBLOCK      0x0010  /**< do not block while acquiring the
+                                           file lock */
+/** @} */
+
+/**
+ * Open the specified file.
+ * @param newf The opened file descriptor.
+ * @param fname The full path to the file (using / on all systems)
+ * @param flag Or'ed value of:
+ * @li #APR_FOPEN_READ           open for reading
+ * @li #APR_FOPEN_WRITE          open for writing
+ * @li #APR_FOPEN_CREATE         create the file if not there
+ * @li #APR_FOPEN_APPEND         file ptr is set to end prior to all writes
+ * @li #APR_FOPEN_TRUNCATE       set length to zero if file exists
+ * @li #APR_FOPEN_BINARY         not a text file
+ * @li #APR_FOPEN_BUFFERED       buffer the data.  Default is non-buffered
+ * @li #APR_FOPEN_EXCL           return error if #APR_FOPEN_CREATE and file exists
+ * @li #APR_FOPEN_DELONCLOSE     delete the file after closing
+ * @li #APR_FOPEN_XTHREAD        Platform dependent tag to open the file
+ *                               for use across multiple threads
+ * @li #APR_FOPEN_SHARELOCK      Platform dependent support for higher
+ *                               level locked read/write access to support
+ *                               writes across process/machines
+ * @li #APR_FOPEN_NOCLEANUP      Do not register a cleanup with the pool 
+ *                               passed in on the @a pool argument (see below)
+ * @li #APR_FOPEN_SENDFILE_ENABLED  Open with appropriate platform semantics
+ *                               for sendfile operations.  Advisory only,
+ *                               apr_socket_sendfile does not check this flag
+ * @li #APR_FOPEN_LARGEFILE      Platform dependent flag to enable large file
+ *                               support, see WARNING below 
+ * @li #APR_FOPEN_SPARSE         Platform dependent flag to enable sparse file
+ *                               support, see WARNING below
+ * @li #APR_FOPEN_NONBLOCK       Platform dependent flag to enable
+ *                               non blocking file io
+ * @param perm Access permissions for file.
+ * @param pool The pool to use.
+ * @remark If perm is #APR_FPROT_OS_DEFAULT and the file is being created,
+ * appropriate default permissions will be used.
+ * @remark By default, the returned file descriptor will not be
+ * inherited by child processes created by apr_proc_create().  This
+ * can be changed using apr_file_inherit_set().
+ */
+APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **newf, const char *fname,
+                                        apr_int32_t flag, apr_fileperms_t perm,
+                                        apr_pool_t *pool);
+
+/**
+ * Close the specified file.
+ * @param file The file descriptor to close.
+ */
+APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file);
+
+/**
+ * Delete the specified file.
+ * @param path The full path to the file (using / on all systems)
+ * @param pool The pool to use.
+ * @remark If the file is open, it won't be removed until all
+ * instances are closed.
+ */
+APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool);
+
+/**
+ * Rename the specified file.
+ * @param from_path The full path to the original file (using / on all systems)
+ * @param to_path The full path to the new file (using / on all systems)
+ * @param pool The pool to use.
+ * @warning If a file exists at the new location, then it will be
+ * overwritten.  Moving files or directories across devices may not be
+ * possible.
+ */
+APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, 
+                                          const char *to_path,
+                                          apr_pool_t *pool);
+
+/**
+ * Create a hard link to the specified file.
+ * @param from_path The full path to the original file (using / on all systems)
+ * @param to_path The full path to the new file (using / on all systems)
+ * @remark Both files must reside on the same device.
+ */
+APR_DECLARE(apr_status_t) apr_file_link(const char *from_path, 
+                                          const char *to_path);
+
+/**
+ * Copy the specified file to another file.
+ * @param from_path The full path to the original file (using / on all systems)
+ * @param to_path The full path to the new file (using / on all systems)
+ * @param perms Access permissions for the new file if it is created.
+ *     In place of the usual or'd combination of file permissions, the
+ *     value #APR_FPROT_FILE_SOURCE_PERMS may be given, in which case the source
+ *     file's permissions are copied.
+ * @param pool The pool to use.
+ * @remark The new file does not need to exist, it will be created if required.
+ * @warning If the new file already exists, its contents will be overwritten.
+ */
+APR_DECLARE(apr_status_t) apr_file_copy(const char *from_path, 
+                                        const char *to_path,
+                                        apr_fileperms_t perms,
+                                        apr_pool_t *pool);
+
+/**
+ * Append the specified file to another file.
+ * @param from_path The full path to the source file (use / on all systems)
+ * @param to_path The full path to the destination file (use / on all systems)
+ * @param perms Access permissions for the destination file if it is created.
+ *     In place of the usual or'd combination of file permissions, the
+ *     value #APR_FPROT_FILE_SOURCE_PERMS may be given, in which case the source
+ *     file's permissions are copied.
+ * @param pool The pool to use.
+ * @remark The new file does not need to exist, it will be created if required.
+ */
+APR_DECLARE(apr_status_t) apr_file_append(const char *from_path, 
+                                          const char *to_path,
+                                          apr_fileperms_t perms,
+                                          apr_pool_t *pool);
+
+/**
+ * Are we at the end of the file
+ * @param fptr The apr file we are testing.
+ * @remark Returns #APR_EOF if we are at the end of file, #APR_SUCCESS otherwise.
+ */
+APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr);
+
+/**
+ * Open standard error as an apr file pointer.
+ * @param thefile The apr file to use as stderr.
+ * @param pool The pool to allocate the file out of.
+ * 
+ * @remark The only reason that the apr_file_open_std* functions exist
+ * is that you may not always have a stderr/out/in on Windows.  This
+ * is generally a problem with newer versions of Windows and services.
+ * 
+ * @remark The other problem is that the C library functions generally work
+ * differently on Windows and Unix.  So, by using apr_file_open_std*
+ * functions, you can get a handle to an APR struct that works with
+ * the APR functions which are supposed to work identically on all
+ * platforms.
+ */
+APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile,
+                                               apr_pool_t *pool);
+
+/**
+ * open standard output as an apr file pointer.
+ * @param thefile The apr file to use as stdout.
+ * @param pool The pool to allocate the file out of.
+ * 
+ * @remark See remarks for apr_file_open_stderr().
+ */
+APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile,
+                                               apr_pool_t *pool);
+
+/**
+ * open standard input as an apr file pointer.
+ * @param thefile The apr file to use as stdin.
+ * @param pool The pool to allocate the file out of.
+ * 
+ * @remark See remarks for apr_file_open_stderr().
+ */
+APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile,
+                                              apr_pool_t *pool);
+
+/**
+ * open standard error as an apr file pointer, with flags.
+ * @param thefile The apr file to use as stderr.
+ * @param flags The flags to open the file with. Only the 
+ *              @li #APR_FOPEN_EXCL
+ *              @li #APR_FOPEN_BUFFERED
+ *              @li #APR_FOPEN_XTHREAD
+ *              @li #APR_FOPEN_SHARELOCK 
+ *              @li #APR_FOPEN_SENDFILE_ENABLED
+ *              @li #APR_FOPEN_LARGEFILE
+ *
+ *              flags should be used. The #APR_FOPEN_WRITE flag will
+ *              be set unconditionally.
+ * @param pool The pool to allocate the file out of.
+ * 
+ * @remark See remarks for apr_file_open_stderr().
+ */
+APR_DECLARE(apr_status_t) apr_file_open_flags_stderr(apr_file_t **thefile,
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool);
+
+/**
+ * open standard output as an apr file pointer, with flags.
+ * @param thefile The apr file to use as stdout.
+ * @param flags The flags to open the file with. Only the 
+ *              @li #APR_FOPEN_EXCL
+ *              @li #APR_FOPEN_BUFFERED
+ *              @li #APR_FOPEN_XTHREAD
+ *              @li #APR_FOPEN_SHARELOCK 
+ *              @li #APR_FOPEN_SENDFILE_ENABLED
+ *              @li #APR_FOPEN_LARGEFILE
+ *
+ *              flags should be used. The #APR_FOPEN_WRITE flag will
+ *              be set unconditionally.
+ * @param pool The pool to allocate the file out of.
+ * 
+ * @remark See remarks for apr_file_open_stderr().
+ */
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdout(apr_file_t **thefile,
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool);
+
+/**
+ * open standard input as an apr file pointer, with flags.
+ * @param thefile The apr file to use as stdin.
+ * @param flags The flags to open the file with. Only the 
+ *              @li #APR_FOPEN_EXCL
+ *              @li #APR_FOPEN_BUFFERED
+ *              @li #APR_FOPEN_XTHREAD
+ *              @li #APR_FOPEN_SHARELOCK 
+ *              @li #APR_FOPEN_SENDFILE_ENABLED
+ *              @li #APR_FOPEN_LARGEFILE
+ *
+ *              flags should be used. The #APR_FOPEN_WRITE flag will
+ *              be set unconditionally.
+ * @param pool The pool to allocate the file out of.
+ * 
+ * @remark See remarks for apr_file_open_stderr().
+ */
+APR_DECLARE(apr_status_t) apr_file_open_flags_stdin(apr_file_t **thefile,
+                                                     apr_int32_t flags,
+                                                     apr_pool_t *pool);
+
+/**
+ * Read data from the specified file.
+ * @param thefile The file descriptor to read from.
+ * @param buf The buffer to store the data to.
+ * @param nbytes On entry, the number of bytes to read; on exit, the number
+ * of bytes read.
+ *
+ * @remark apr_file_read() will read up to the specified number of
+ * bytes, but never more.  If there isn't enough data to fill that
+ * number of bytes, all of the available data is read.  The third
+ * argument is modified to reflect the number of bytes read.  If a
+ * char was put back into the stream via ungetc, it will be the first
+ * character returned.
+ *
+ * @remark It is not possible for both bytes to be read and an #APR_EOF
+ * or other error to be returned.  #APR_EINTR is never returned.
+ */
+APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf,
+                                        apr_size_t *nbytes);
+
+/**
+ * Write data to the specified file.
+ * @param thefile The file descriptor to write to.
+ * @param buf The buffer which contains the data.
+ * @param nbytes On entry, the number of bytes to write; on exit, the number 
+ *               of bytes written.
+ *
+ * @remark apr_file_write() will write up to the specified number of
+ * bytes, but never more.  If the OS cannot write that many bytes, it
+ * will write as many as it can.  The third argument is modified to
+ * reflect the * number of bytes written.
+ *
+ * @remark It is possible for both bytes to be written and an error to
+ * be returned.  #APR_EINTR is never returned.
+ */
+APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf,
+                                         apr_size_t *nbytes);
+
+/**
+ * Write data from iovec array to the specified file.
+ * @param thefile The file descriptor to write to.
+ * @param vec The array from which to get the data to write to the file.
+ * @param nvec The number of elements in the struct iovec array. This must 
+ *             be smaller than #APR_MAX_IOVEC_SIZE.  If it isn't, the function 
+ *             will fail with #APR_EINVAL.
+ * @param nbytes The number of bytes written.
+ *
+ * @remark It is possible for both bytes to be written and an error to
+ * be returned.  #APR_EINTR is never returned.
+ *
+ * @remark apr_file_writev() is available even if the underlying
+ * operating system doesn't provide writev().
+ */
+APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile,
+                                          const struct iovec *vec,
+                                          apr_size_t nvec, apr_size_t *nbytes);
+
+/**
+ * Read data from the specified file, ensuring that the buffer is filled
+ * before returning.
+ * @param thefile The file descriptor to read from.
+ * @param buf The buffer to store the data to.
+ * @param nbytes The number of bytes to read.
+ * @param bytes_read If non-NULL, this will contain the number of bytes read.
+ *
+ * @remark apr_file_read_full() will read up to the specified number of
+ * bytes, but never more.  If there isn't enough data to fill that
+ * number of bytes, then the process/thread will block until it is
+ * available or EOF is reached.  If a char was put back into the
+ * stream via ungetc, it will be the first character returned.
+ *
+ * @remark It is possible for both bytes to be read and an error to be
+ * returned.  And if *bytes_read is less than nbytes, an accompanying
+ * error is _always_ returned.
+ *
+ * @remark #APR_EINTR is never returned.
+ */
+APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf,
+                                             apr_size_t nbytes,
+                                             apr_size_t *bytes_read);
+
+/**
+ * Write data to the specified file, ensuring that all of the data is
+ * written before returning.
+ * @param thefile The file descriptor to write to.
+ * @param buf The buffer which contains the data.
+ * @param nbytes The number of bytes to write.
+ * @param bytes_written If non-NULL, set to the number of bytes written.
+ * 
+ * @remark apr_file_write_full() will write up to the specified number of
+ * bytes, but never more.  If the OS cannot write that many bytes, the
+ * process/thread will block until they can be written. Exceptional
+ * error such as "out of space" or "pipe closed" will terminate with
+ * an error.
+ *
+ * @remark It is possible for both bytes to be written and an error to
+ * be returned.  And if *bytes_written is less than nbytes, an
+ * accompanying error is _always_ returned.
+ *
+ * @remark #APR_EINTR is never returned.
+ */
+APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, 
+                                              const void *buf,
+                                              apr_size_t nbytes, 
+                                              apr_size_t *bytes_written);
+
+
+/**
+ * Write data from iovec array to the specified file, ensuring that all of the
+ * data is written before returning.
+ * @param thefile The file descriptor to write to.
+ * @param vec The array from which to get the data to write to the file.
+ * @param nvec The number of elements in the struct iovec array. This must 
+ *             be smaller than #APR_MAX_IOVEC_SIZE.  If it isn't, the function 
+ *             will fail with #APR_EINVAL.
+ * @param nbytes The number of bytes written.
+ *
+ * @remark apr_file_writev_full() is available even if the underlying
+ * operating system doesn't provide writev().
+ */
+APR_DECLARE(apr_status_t) apr_file_writev_full(apr_file_t *thefile,
+                                               const struct iovec *vec,
+                                               apr_size_t nvec,
+                                               apr_size_t *nbytes);
+/**
+ * Write a character into the specified file.
+ * @param ch The character to write.
+ * @param thefile The file descriptor to write to
+ */
+APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile);
+
+/**
+ * Read a character from the specified file.
+ * @param ch The character to read into
+ * @param thefile The file descriptor to read from
+ */
+APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile);
+
+/**
+ * Put a character back onto a specified stream.
+ * @param ch The character to write.
+ * @param thefile The file descriptor to write to
+ */
+APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile);
+
+/**
+ * Read a line from the specified file
+ * @param str The buffer to store the string in. 
+ * @param len The length of the string
+ * @param thefile The file descriptor to read from
+ * @remark The buffer will be NUL-terminated if any characters are stored.
+ *         The newline at the end of the line will not be stripped.
+ */
+APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, 
+                                        apr_file_t *thefile);
+
+/**
+ * Write the string into the specified file.
+ * @param str The string to write. 
+ * @param thefile The file descriptor to write to
+ */
+APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile);
+
+/**
+ * Flush the file's buffer.
+ * @param thefile The file descriptor to flush
+ */
+APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile);
+
+/**
+ * Transfer all file modified data and metadata to disk.
+ * @param thefile The file descriptor to sync
+ */
+APR_DECLARE(apr_status_t) apr_file_sync(apr_file_t *thefile);
+
+/**
+ * Transfer all file modified data to disk.
+ * @param thefile The file descriptor to sync
+ */
+APR_DECLARE(apr_status_t) apr_file_datasync(apr_file_t *thefile);
+
+/**
+ * Duplicate the specified file descriptor.
+ * @param new_file The structure to duplicate into. 
+ * @param old_file The file to duplicate.
+ * @param p The pool to use for the new file.
+ * @remark *new_file must point to a valid apr_file_t, or point to NULL.
+ */         
+APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
+                                       apr_file_t *old_file,
+                                       apr_pool_t *p);
+
+/**
+ * Duplicate the specified file descriptor and close the original
+ * @param new_file The old file that is to be closed and reused
+ * @param old_file The file to duplicate
+ * @param p        The pool to use for the new file
+ *
+ * @remark new_file MUST point at a valid apr_file_t. It cannot be NULL.
+ */
+APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
+                                        apr_file_t *old_file,
+                                        apr_pool_t *p);
+
+/**
+ * Move the specified file descriptor to a new pool
+ * @param new_file Pointer in which to return the new apr_file_t
+ * @param old_file The file to move
+ * @param p        The pool to which the descriptor is to be moved
+ * @remark Unlike apr_file_dup2(), this function doesn't do an
+ *         OS dup() operation on the underlying descriptor; it just
+ *         moves the descriptor's apr_file_t wrapper to a new pool.
+ * @remark The new pool need not be an ancestor of old_file's pool.
+ * @remark After calling this function, old_file may not be used
+ */
+APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
+                                            apr_file_t *old_file,
+                                            apr_pool_t *p);
+
+/**
+ * Give the specified apr file handle a new buffer 
+ * @param thefile  The file handle that is to be modified
+ * @param buffer   The buffer
+ * @param bufsize  The size of the buffer
+ * @remark It is possible to add a buffer to previously unbuffered
+ *         file handles, the #APR_FOPEN_BUFFERED flag will be added to
+ *         the file handle's flags. Likewise, with buffer=NULL and
+ *         bufsize=0 arguments it is possible to make a previously
+ *         buffered file handle unbuffered.
+ */
+APR_DECLARE(apr_status_t) apr_file_buffer_set(apr_file_t *thefile,
+                                              char * buffer,
+                                              apr_size_t bufsize);
+
+/**
+ * Get the size of any buffer for the specified apr file handle 
+ * @param thefile  The file handle 
+ */
+APR_DECLARE(apr_size_t) apr_file_buffer_size_get(apr_file_t *thefile);
+
+/**
+ * Move the read/write file offset to a specified byte within a file.
+ * @param thefile The file descriptor
+ * @param where How to move the pointer, one of:
+ *              @li #APR_SET  --  set the offset to offset
+ *              @li #APR_CUR  --  add the offset to the current position 
+ *              @li #APR_END  --  add the offset to the current file size 
+ * @param offset The offset to move the pointer to.
+ * @remark The third argument is modified to be the offset the pointer
+          was actually moved to.
+ */
+APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, 
+                                   apr_seek_where_t where,
+                                   apr_off_t *offset);
+
+/**
+ * Create an anonymous pipe.
+ * @param in The newly created pipe's file for reading.
+ * @param out The newly created pipe's file for writing.
+ * @param pool The pool to operate on.
+ * @remark By default, the returned file descriptors will be inherited
+ * by child processes created using apr_proc_create().  This can be
+ * changed using apr_file_inherit_unset().
+ * @bug  Some platforms cannot toggle between blocking and nonblocking,
+ * and when passing a pipe as a standard handle to an application which
+ * does not expect it, a non-blocking stream will fluxor the client app.
+ * @deprecated @see apr_file_pipe_create_ex()
+ */
+APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, 
+                                               apr_file_t **out,
+                                               apr_pool_t *pool);
+
+/**
+ * Create an anonymous pipe which portably supports async timeout options.
+ * @param in The newly created pipe's file for reading.
+ * @param out The newly created pipe's file for writing.
+ * @param blocking one of these values defined in apr_thread_proc.h;
+ *                 @li #APR_FULL_BLOCK
+ *                 @li #APR_READ_BLOCK
+ *                 @li #APR_WRITE_BLOCK
+ *                 @li #APR_FULL_NONBLOCK
+ * @param pool The pool to operate on.
+ * @remark By default, the returned file descriptors will be inherited
+ * by child processes created using apr_proc_create().  This can be
+ * changed using apr_file_inherit_unset().
+ * @remark Some platforms cannot toggle between blocking and nonblocking,
+ * and when passing a pipe as a standard handle to an application which
+ * does not expect it, a non-blocking stream will fluxor the client app.
+ * Use this function rather than apr_file_pipe_create() to create pipes 
+ * where one or both ends require non-blocking semantics.
+ */
+APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in, 
+                                                  apr_file_t **out, 
+                                                  apr_int32_t blocking, 
+                                                  apr_pool_t *pool);
+
+/**
+ * Create a named pipe.
+ * @param filename The filename of the named pipe
+ * @param perm The permissions for the newly created pipe.
+ * @param pool The pool to operate on.
+ */
+APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, 
+                                                    apr_fileperms_t perm, 
+                                                    apr_pool_t *pool);
+
+/**
+ * Get the timeout value for a pipe or manipulate the blocking state.
+ * @param thepipe The pipe we are getting a timeout for.
+ * @param timeout The current timeout value in microseconds. 
+ */
+APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, 
+                                               apr_interval_time_t *timeout);
+
+/**
+ * Set the timeout value for a pipe or manipulate the blocking state.
+ * @param thepipe The pipe we are setting a timeout on.
+ * @param timeout The timeout value in microseconds.  Values < 0 mean wait 
+ *        forever, 0 means do not wait at all.
+ */
+APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, 
+                                                  apr_interval_time_t timeout);
+
+/** file (un)locking functions. */
+
+/**
+ * Establish a lock on the specified, open file. The lock may be advisory
+ * or mandatory, at the discretion of the platform. The lock applies to
+ * the file as a whole, rather than a specific range. Locks are established
+ * on a per-thread/process basis; a second lock by the same thread will not
+ * block.
+ * @param thefile The file to lock.
+ * @param type The type of lock to establish on the file.
+ */
+APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type);
+
+/**
+ * Remove any outstanding locks on the file.
+ * @param thefile The file to unlock.
+ */
+APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile);
+
+/**accessor and general file_io functions. */
+
+/**
+ * return the file name of the current file.
+ * @param new_path The path of the file.  
+ * @param thefile The currently open file.
+ */                     
+APR_DECLARE(apr_status_t) apr_file_name_get(const char **new_path, 
+                                            apr_file_t *thefile);
+    
+/**
+ * Return the data associated with the current file.
+ * @param data The user data associated with the file.  
+ * @param key The key to use for retrieving data associated with this file.
+ * @param file The currently open file.
+ */                     
+APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key, 
+                                            apr_file_t *file);
+
+/**
+ * Set the data associated with the current file.
+ * @param file The currently open file.
+ * @param data The user data to associate with the file.  
+ * @param key The key to use for associating data with the file.
+ * @param cleanup The cleanup routine to use when the file is destroyed.
+ */                     
+APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data,
+                                            const char *key,
+                                            apr_status_t (*cleanup)(void *));
+
+/**
+ * Write a string to a file using a printf format.
+ * @param fptr The file to write to.
+ * @param format The format string
+ * @param ... The values to substitute in the format string
+ * @return The number of bytes written
+ */ 
+APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, 
+                                        const char *format, ...)
+        __attribute__((format(printf,2,3)));
+
+/**
+ * set the specified file's permission bits.
+ * @param fname The file (name) to apply the permissions to.
+ * @param perms The permission bits to apply to the file.
+ *
+ * @warning Some platforms may not be able to apply all of the
+ * available permission bits; #APR_INCOMPLETE will be returned if some
+ * permissions are specified which could not be set.
+ *
+ * @warning Platforms which do not implement this feature will return
+ * #APR_ENOTIMPL.
+ */
+APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname,
+                                             apr_fileperms_t perms);
+
+/**
+ * Set attributes of the specified file.
+ * @param fname The full path to the file (using / on all systems)
+ * @param attributes Or'd combination of
+ *            @li #APR_FILE_ATTR_READONLY   - make the file readonly
+ *            @li #APR_FILE_ATTR_EXECUTABLE - make the file executable
+ *            @li #APR_FILE_ATTR_HIDDEN     - make the file hidden
+ * @param attr_mask Mask of valid bits in attributes.
+ * @param pool the pool to use.
+ * @remark This function should be used in preference to explicit manipulation
+ *      of the file permissions, because the operations to provide these
+ *      attributes are platform specific and may involve more than simply
+ *      setting permission bits.
+ * @warning Platforms which do not implement this feature will return
+ *      #APR_ENOTIMPL.
+ */
+APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
+                                             apr_fileattrs_t attributes,
+                                             apr_fileattrs_t attr_mask,
+                                             apr_pool_t *pool);
+
+/**
+ * Set the mtime of the specified file.
+ * @param fname The full path to the file (using / on all systems)
+ * @param mtime The mtime to apply to the file.
+ * @param pool The pool to use.
+ * @warning Platforms which do not implement this feature will return
+ *      #APR_ENOTIMPL.
+ */
+APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
+                                             apr_time_t mtime,
+                                             apr_pool_t *pool);
+
+/**
+ * Create a new directory on the file system.
+ * @param path the path for the directory to be created. (use / on all systems)
+ * @param perm Permissions for the new directory.
+ * @param pool the pool to use.
+ */                        
+APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, 
+                                       apr_pool_t *pool);
+
+/** Creates a new directory on the file system, but behaves like
+ * 'mkdir -p'. Creates intermediate directories as required. No error
+ * will be reported if PATH already exists.
+ * @param path the path for the directory to be created. (use / on all systems)
+ * @param perm Permissions for the new directory.
+ * @param pool the pool to use.
+ */
+APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path,
+                                                 apr_fileperms_t perm,
+                                                 apr_pool_t *pool);
+
+/**
+ * Remove directory from the file system.
+ * @param path the path for the directory to be removed. (use / on all systems)
+ * @param pool the pool to use.
+ * @remark Removing a directory which is in-use (e.g., the current working
+ * directory, or during apr_dir_read, or with an open file) is not portable.
+ */                        
+APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool);
+
+/**
+ * get the specified file's stats.
+ * @param finfo Where to store the information about the file.
+ * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_* values 
+ * @param thefile The file to get information about.
+ */ 
+APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, 
+                                            apr_int32_t wanted,
+                                            apr_file_t *thefile);
+    
+
+/**
+ * Truncate the file's length to the specified offset
+ * @param fp The file to truncate
+ * @param offset The offset to truncate to.
+ * @remark The read/write file offset is repositioned to offset.
+ */
+APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *fp, apr_off_t offset);
+
+/**
+ * Retrieve the flags that were passed into apr_file_open()
+ * when the file was opened.
+ * @return apr_int32_t the flags
+ */
+APR_DECLARE(apr_int32_t) apr_file_flags_get(apr_file_t *f);
+
+/**
+ * Get the pool used by the file.
+ */
+APR_POOL_DECLARE_ACCESSOR(file);
+
+/**
+ * Set a file to be inherited by child processes.
+ *
+ */
+APR_DECLARE_INHERIT_SET(file);
+
+/**
+ * Unset a file from being inherited by child processes.
+ */
+APR_DECLARE_INHERIT_UNSET(file);
+
+/**
+ * Open a temporary file
+ * @param fp The apr file to use as a temporary file.
+ * @param templ The template to use when creating a temp file.
+ * @param flags The flags to open the file with. If this is zero,
+ *              the file is opened with 
+ *              #APR_FOPEN_CREATE | #APR_FOPEN_READ | #APR_FOPEN_WRITE |
+ *              #APR_FOPEN_EXCL | #APR_FOPEN_DELONCLOSE
+ * @param p The pool to allocate the file out of.
+ * @remark   
+ * This function  generates  a unique temporary file name from template.  
+ * The last six characters of template must be XXXXXX and these are replaced 
+ * with a string that makes the filename unique. Since it will  be  modified,
+ * template must not be a string constant, but should be declared as a character
+ * array.  
+ *
+ */
+APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *templ,
+                                          apr_int32_t flags, apr_pool_t *p);
+
+
+/**
+ * Find an existing directory suitable as a temporary storage location.
+ * @param temp_dir The temp directory.
+ * @param p The pool to use for any necessary allocations.
+ * @remark   
+ * This function uses an algorithm to search for a directory that an
+ * an application can use for temporary storage.
+ *
+ */
+APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, 
+                                           apr_pool_t *p);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_FILE_IO_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_fnmatch.h
===================================================================
--- vendor/apache/apr/dist/include/apr_fnmatch.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_fnmatch.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 1992, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)fnmatch.h	8.1 (Berkeley) 6/2/93
- */
-
-/* This file has been modified by the Apache Software Foundation. */
-#ifndef	_APR_FNMATCH_H_
-#define	_APR_FNMATCH_H_
-
-/**
- * @file apr_fnmatch.h
- * @brief APR FNMatch Functions
- */
-
-#include "apr_errno.h"
-#include "apr_tables.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup apr_fnmatch Filename Matching Functions
- * @ingroup APR 
- * @{
- */
-
-#define APR_FNM_NOMATCH     1     /**< Match failed. */
- 
-#define APR_FNM_NOESCAPE    0x01  /**< Disable backslash escaping. */
-#define APR_FNM_PATHNAME    0x02  /**< Slash must be matched by slash. */
-#define APR_FNM_PERIOD      0x04  /**< Period must be matched by period. */
-#define APR_FNM_CASE_BLIND  0x08  /**< Compare characters case-insensitively.
-                                   * @remark This flag is an Apache addition 
-                                   */
-
-/**
- * Try to match the string to the given pattern, return APR_SUCCESS if
- *    match, else return APR_FNM_NOMATCH.  Note that there is no such thing as
- *    an illegal pattern.
- *
- * With all flags unset, a pattern is interpreted as such:
- *
- * PATTERN: Backslash followed by any character, including another
- *          backslash.<br/>
- * MATCHES: That character exactly.
- * 
- * <p>
- * PATTERN: ?<br/>
- * MATCHES: Any single character.
- * </p>
- * 
- * <p>
- * PATTERN: *<br/>
- * MATCHES: Any sequence of zero or more characters. (Note that multiple
- *          *s in a row are equivalent to one.)
- * 
- * PATTERN: Any character other than \?*[ or a \ at the end of the pattern<br/>
- * MATCHES: That character exactly. (Case sensitive.)
- * 
- * PATTERN: [ followed by a class description followed by ]<br/>
- * MATCHES: A single character described by the class description.
- *          (Never matches, if the class description reaches until the
- *          end of the string without a ].) If the first character of
- *          the class description is ^ or !, the sense of the description
- *          is reversed.  The rest of the class description is a list of
- *          single characters or pairs of characters separated by -. Any
- *          of those characters can have a backslash in front of them,
- *          which is ignored; this lets you use the characters ] and -
- *          in the character class, as well as ^ and ! at the
- *          beginning.  The pattern matches a single character if it
- *          is one of the listed characters or falls into one of the
- *          listed ranges (inclusive, case sensitive).  Ranges with
- *          the first character larger than the second are legal but
- *          never match. Edge cases: [] never matches, and [^] and [!]
- *          always match without consuming a character.
- * 
- * Note that these patterns attempt to match the entire string, not
- * just find a substring matching the pattern.
- *
- * @param pattern The pattern to match to
- * @param strings The string we are trying to match
- * @param flags flags to use in the match.  Bitwise OR of:
- * <pre>
- *              APR_FNM_NOESCAPE       Disable backslash escaping
- *              APR_FNM_PATHNAME       Slash must be matched by slash
- *              APR_FNM_PERIOD         Period must be matched by period
- *              APR_FNM_CASE_BLIND     Compare characters case-insensitively.
- * </pre>
- */
-
-APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, 
-                                      const char *strings, int flags);
-
-/**
- * Determine if the given pattern is a regular expression.
- * @param pattern The pattern to search for glob characters.
- * @return non-zero if pattern has any glob characters in it
- */
-APR_DECLARE(int) apr_fnmatch_test(const char *pattern);
-
-/**
- * Find all files that match a specified pattern.
- * @param pattern The pattern to use for finding files.
- * @param result Array to use when storing the results
- * @param p The pool to use.
- * @return non-zero if pattern has any glob characters in it
- */
-APR_DECLARE(apr_status_t) apr_match_glob(const char *pattern, 
-                                         apr_array_header_t **result,
-                                         apr_pool_t *p);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_APR_FNMATCH_H_ */

Copied: vendor/apache/apr/1.5.2/include/apr_fnmatch.h (from rev 9273, vendor/apache/apr/dist/include/apr_fnmatch.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_fnmatch.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_fnmatch.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)fnmatch.h	8.1 (Berkeley) 6/2/93
+ */
+
+/* This file has been modified by the Apache Software Foundation. */
+#ifndef	_APR_FNMATCH_H_
+#define	_APR_FNMATCH_H_
+
+/**
+ * @file apr_fnmatch.h
+ * @brief APR FNMatch Functions
+ */
+
+#include "apr_errno.h"
+#include "apr_tables.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup apr_fnmatch Filename Matching Functions
+ * @ingroup APR 
+ * @{
+ */
+
+#define APR_FNM_NOMATCH     1     /**< Match failed. */
+ 
+#define APR_FNM_NOESCAPE    0x01  /**< Disable backslash escaping. */
+#define APR_FNM_PATHNAME    0x02  /**< Slash must be matched by slash. */
+#define APR_FNM_PERIOD      0x04  /**< Period must be matched by period. */
+#define APR_FNM_CASE_BLIND  0x08  /**< Compare characters case-insensitively. */
+
+/**
+ * Try to match the string to the given pattern, return APR_SUCCESS if
+ *    match, else return APR_FNM_NOMATCH.  Note that there is no such thing as
+ *    an illegal pattern.
+ *
+ * With all flags unset, a pattern is interpreted as such:
+ *
+ * PATTERN: Backslash followed by any character, including another
+ *          backslash.<br/>
+ * MATCHES: That character exactly.
+ * 
+ * <p>
+ * PATTERN: ?<br/>
+ * MATCHES: Any single character.
+ * </p>
+ * 
+ * <p>
+ * PATTERN: *<br/>
+ * MATCHES: Any sequence of zero or more characters. (Note that multiple
+ *          *s in a row are equivalent to one.)
+ * 
+ * PATTERN: Any character other than \?*[ or a \ at the end of the pattern<br/>
+ * MATCHES: That character exactly. (Case sensitive.)
+ * 
+ * PATTERN: [ followed by a class description followed by ]<br/>
+ * MATCHES: A single character described by the class description.
+ *          (Never matches, if the class description reaches until the
+ *          end of the string without a ].) If the first character of
+ *          the class description is ^ or !, the sense of the description
+ *          is reversed.  The rest of the class description is a list of
+ *          single characters or pairs of characters separated by -. Any
+ *          of those characters can have a backslash in front of them,
+ *          which is ignored; this lets you use the characters ] and -
+ *          in the character class, as well as ^ and ! at the
+ *          beginning.  The pattern matches a single character if it
+ *          is one of the listed characters or falls into one of the
+ *          listed ranges (inclusive, case sensitive).  Ranges with
+ *          the first character larger than the second are legal but
+ *          never match. Edge cases: [] never matches, and [^] and [!]
+ *          always match without consuming a character.
+ * 
+ * Note that these patterns attempt to match the entire string, not
+ * just find a substring matching the pattern.
+ *
+ * @param pattern The pattern to match to
+ * @param strings The string we are trying to match
+ * @param flags flags to use in the match.  Bitwise OR of:
+ * <pre>
+ *              APR_FNM_NOESCAPE       Disable backslash escaping
+ *              APR_FNM_PATHNAME       Slash must be matched by slash
+ *              APR_FNM_PERIOD         Period must be matched by period
+ *              APR_FNM_CASE_BLIND     Compare characters case-insensitively.
+ * </pre>
+ */
+
+APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, 
+                                      const char *strings, int flags);
+
+/**
+ * Determine if the given pattern is a regular expression.
+ * @param pattern The pattern to search for glob characters.
+ * @return non-zero if pattern has any glob characters in it
+ */
+APR_DECLARE(int) apr_fnmatch_test(const char *pattern);
+
+/**
+ * Find all files that match a specified pattern in a directory.
+ * @param dir_pattern The pattern to use for finding files, appended
+ * to the search directory.  The pattern is anything following the
+ * final forward or backward slash in the parameter.  If no slash
+ * is found, the current directory is searched.
+ * @param result Array to use when storing the results
+ * @param p The pool to use.
+ * @return APR_SUCCESS if no processing errors occurred, APR error
+ * code otherwise
+ * @remark The returned array may be empty even if APR_SUCCESS was
+ * returned.
+ */
+APR_DECLARE(apr_status_t) apr_match_glob(const char *dir_pattern, 
+                                         apr_array_header_t **result,
+                                         apr_pool_t *p);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_APR_FNMATCH_H_ */

Deleted: vendor/apache/apr/1.5.2/include/apr_hash.h
===================================================================
--- vendor/apache/apr/dist/include/apr_hash.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_hash.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,261 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_HASH_H
-#define APR_HASH_H
-
-/**
- * @file apr_hash.h
- * @brief APR Hash Tables
- */
-
-#include "apr_pools.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup apr_hash Hash Tables
- * @ingroup APR 
- * @{
- */
-
-/**
- * When passing a key to apr_hash_set or apr_hash_get, this value can be
- * passed to indicate a string-valued key, and have apr_hash compute the
- * length automatically.
- *
- * @remark apr_hash will use strlen(key) for the length. The NUL terminator
- *         is not included in the hash value (why throw a constant in?).
- *         Since the hash table merely references the provided key (rather
- *         than copying it), apr_hash_this() will return the NUL-term'd key.
- */
-#define APR_HASH_KEY_STRING     (-1)
-
-/**
- * Abstract type for hash tables.
- */
-typedef struct apr_hash_t apr_hash_t;
-
-/**
- * Abstract type for scanning hash tables.
- */
-typedef struct apr_hash_index_t apr_hash_index_t;
-
-/**
- * Callback functions for calculating hash values.
- * @param key The key.
- * @param klen The length of the key, or APR_HASH_KEY_STRING to use the string 
- *             length. If APR_HASH_KEY_STRING then returns the actual key length.
- */
-typedef unsigned int (*apr_hashfunc_t)(const char *key, apr_ssize_t *klen);
-
-/**
- * The default hash function.
- */
-APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *key,
-                                                      apr_ssize_t *klen);
-
-/**
- * Create a hash table.
- * @param pool The pool to allocate the hash table out of
- * @return The hash table just created
-  */
-APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool);
-
-/**
- * Create a hash table with a custom hash function
- * @param pool The pool to allocate the hash table out of
- * @param hash_func A custom hash function.
- * @return The hash table just created
-  */
-APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool, 
-                                               apr_hashfunc_t hash_func);
-
-/**
- * Make a copy of a hash table
- * @param pool The pool from which to allocate the new hash table
- * @param h The hash table to clone
- * @return The hash table just created
- * @remark Makes a shallow copy
- */
-APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool,
-                                        const apr_hash_t *h);
-
-/**
- * Associate a value with a key in a hash table.
- * @param ht The hash table
- * @param key Pointer to the key
- * @param klen Length of the key. Can be APR_HASH_KEY_STRING to use the string length.
- * @param val Value to associate with the key
- * @remark If the value is NULL the hash entry is deleted.
- */
-APR_DECLARE(void) apr_hash_set(apr_hash_t *ht, const void *key,
-                               apr_ssize_t klen, const void *val);
-
-/**
- * Look up the value associated with a key in a hash table.
- * @param ht The hash table
- * @param key Pointer to the key
- * @param klen Length of the key. Can be APR_HASH_KEY_STRING to use the string length.
- * @return Returns NULL if the key is not present.
- */
-APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht, const void *key,
-                                 apr_ssize_t klen);
-
-/**
- * Start iterating over the entries in a hash table.
- * @param p The pool to allocate the apr_hash_index_t iterator. If this
- *          pool is NULL, then an internal, non-thread-safe iterator is used.
- * @param ht The hash table
- * @return The iteration state
- * @remark  There is no restriction on adding or deleting hash entries during
- * an iteration (although the results may be unpredictable unless all you do
- * is delete the current entry) and multiple iterations can be in
- * progress at the same time.
- *
- * @par Example:
- *
- * @code
- * int sum_values(apr_pool_t *p, apr_hash_t *ht)
- * {
- *     apr_hash_index_t *hi;
- *     void *val;
- *     int sum = 0;
- *     for (hi = apr_hash_first(p, ht); hi; hi = apr_hash_next(hi)) {
- *         apr_hash_this(hi, NULL, NULL, &val);
- *         sum += *(int *)val;
- *     }
- *     return sum;
- * }
- * @endcode
- */
-APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht);
-
-/**
- * Continue iterating over the entries in a hash table.
- * @param hi The iteration state
- * @return a pointer to the updated iteration state.  NULL if there are no more  
- *         entries.
- */
-APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi);
-
-/**
- * Get the current entry's details from the iteration state.
- * @param hi The iteration state
- * @param key Return pointer for the pointer to the key.
- * @param klen Return pointer for the key length.
- * @param val Return pointer for the associated value.
- * @remark The return pointers should point to a variable that will be set to the
- *         corresponding data, or they may be NULL if the data isn't interesting.
- */
-APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi, const void **key, 
-                                apr_ssize_t *klen, void **val);
-
-/**
- * Get the number of key/value pairs in the hash table.
- * @param ht The hash table
- * @return The number of key/value pairs in the hash table.
- */
-APR_DECLARE(unsigned int) apr_hash_count(apr_hash_t *ht);
-
-/**
- * Clear any key/value pairs in the hash table.
- * @param ht The hash table
- */
-APR_DECLARE(void) apr_hash_clear(apr_hash_t *ht);
-
-/**
- * Merge two hash tables into one new hash table. The values of the overlay
- * hash override the values of the base if both have the same key.  Both
- * hash tables must use the same hash function.
- * @param p The pool to use for the new hash table
- * @param overlay The table to add to the initial table
- * @param base The table that represents the initial values of the new table
- * @return A new hash table containing all of the data from the two passed in
- */
-APR_DECLARE(apr_hash_t *) apr_hash_overlay(apr_pool_t *p,
-                                           const apr_hash_t *overlay, 
-                                           const apr_hash_t *base);
-
-/**
- * Merge two hash tables into one new hash table. If the same key
- * is present in both tables, call the supplied merge function to
- * produce a merged value for the key in the new table.  Both
- * hash tables must use the same hash function.
- * @param p The pool to use for the new hash table
- * @param h1 The first of the tables to merge
- * @param h2 The second of the tables to merge
- * @param merger A callback function to merge values, or NULL to
- *  make values from h1 override values from h2 (same semantics as
- *  apr_hash_overlay())
- * @param data Client data to pass to the merger function
- * @return A new hash table containing all of the data from the two passed in
- */
-APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p,
-                                         const apr_hash_t *h1,
-                                         const apr_hash_t *h2,
-                                         void * (*merger)(apr_pool_t *p,
-                                                     const void *key,
-                                                     apr_ssize_t klen,
-                                                     const void *h1_val,
-                                                     const void *h2_val,
-                                                     const void *data),
-                                         const void *data);
-
-/**
- * Declaration prototype for the iterator callback function of apr_hash_do().
- *
- * @param rec The data passed as the first argument to apr_hash_[v]do()
- * @param key The key from this iteration of the hash table
- * @param klen The key length from this iteration of the hash table
- * @param value The value from this iteration of the hash table
- * @remark Iteration continues while this callback function returns non-zero.
- * To export the callback function for apr_hash_do() it must be declared 
- * in the _NONSTD convention.
- */
-typedef int (apr_hash_do_callback_fn_t)(void *rec, const void *key,
-                                                   apr_ssize_t klen,
-                                                   const void *value);
-
-/** 
- * Iterate over a hash table running the provided function once for every
- * element in the hash table. The @param comp function will be invoked for
- * every element in the hash table.
- *
- * @param comp The function to run
- * @param rec The data to pass as the first argument to the function
- * @param ht The hash table to iterate over
- * @return FALSE if one of the comp() iterations returned zero; TRUE if all
- *            iterations returned non-zero
- * @see apr_hash_do_callback_fn_t
- */
-APR_DECLARE(int) apr_hash_do(apr_hash_do_callback_fn_t *comp,
-                             void *rec, const apr_hash_t *ht);
-
-/**
- * Get a pointer to the pool which the hash table was created in
- */
-APR_POOL_DECLARE_ACCESSOR(hash);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif	/* !APR_HASH_H */

Copied: vendor/apache/apr/1.5.2/include/apr_hash.h (from rev 9273, vendor/apache/apr/dist/include/apr_hash.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_hash.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_hash.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,282 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_HASH_H
+#define APR_HASH_H
+
+/**
+ * @file apr_hash.h
+ * @brief APR Hash Tables
+ */
+
+#include "apr_pools.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup apr_hash Hash Tables
+ * @ingroup APR 
+ * @{
+ */
+
+/**
+ * When passing a key to apr_hash_set or apr_hash_get, this value can be
+ * passed to indicate a string-valued key, and have apr_hash compute the
+ * length automatically.
+ *
+ * @remark apr_hash will use strlen(key) for the length. The NUL terminator
+ *         is not included in the hash value (why throw a constant in?).
+ *         Since the hash table merely references the provided key (rather
+ *         than copying it), apr_hash_this() will return the NUL-term'd key.
+ */
+#define APR_HASH_KEY_STRING     (-1)
+
+/**
+ * Abstract type for hash tables.
+ */
+typedef struct apr_hash_t apr_hash_t;
+
+/**
+ * Abstract type for scanning hash tables.
+ */
+typedef struct apr_hash_index_t apr_hash_index_t;
+
+/**
+ * Callback functions for calculating hash values.
+ * @param key The key.
+ * @param klen The length of the key, or APR_HASH_KEY_STRING to use the string 
+ *             length. If APR_HASH_KEY_STRING then returns the actual key length.
+ */
+typedef unsigned int (*apr_hashfunc_t)(const char *key, apr_ssize_t *klen);
+
+/**
+ * The default hash function.
+ */
+APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *key,
+                                                      apr_ssize_t *klen);
+
+/**
+ * Create a hash table.
+ * @param pool The pool to allocate the hash table out of
+ * @return The hash table just created
+  */
+APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool);
+
+/**
+ * Create a hash table with a custom hash function
+ * @param pool The pool to allocate the hash table out of
+ * @param hash_func A custom hash function.
+ * @return The hash table just created
+  */
+APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool, 
+                                               apr_hashfunc_t hash_func);
+
+/**
+ * Make a copy of a hash table
+ * @param pool The pool from which to allocate the new hash table
+ * @param h The hash table to clone
+ * @return The hash table just created
+ * @remark Makes a shallow copy
+ */
+APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool,
+                                        const apr_hash_t *h);
+
+/**
+ * Associate a value with a key in a hash table.
+ * @param ht The hash table
+ * @param key Pointer to the key
+ * @param klen Length of the key. Can be APR_HASH_KEY_STRING to use the string length.
+ * @param val Value to associate with the key
+ * @remark If the value is NULL the hash entry is deleted.
+ */
+APR_DECLARE(void) apr_hash_set(apr_hash_t *ht, const void *key,
+                               apr_ssize_t klen, const void *val);
+
+/**
+ * Look up the value associated with a key in a hash table.
+ * @param ht The hash table
+ * @param key Pointer to the key
+ * @param klen Length of the key. Can be APR_HASH_KEY_STRING to use the string length.
+ * @return Returns NULL if the key is not present.
+ */
+APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht, const void *key,
+                                 apr_ssize_t klen);
+
+/**
+ * Start iterating over the entries in a hash table.
+ * @param p The pool to allocate the apr_hash_index_t iterator. If this
+ *          pool is NULL, then an internal, non-thread-safe iterator is used.
+ * @param ht The hash table
+ * @return The iteration state
+ * @remark  There is no restriction on adding or deleting hash entries during
+ * an iteration (although the results may be unpredictable unless all you do
+ * is delete the current entry) and multiple iterations can be in
+ * progress at the same time.
+ *
+ * @par Example:
+ *
+ * @code
+ * int sum_values(apr_pool_t *p, apr_hash_t *ht)
+ * {
+ *     apr_hash_index_t *hi;
+ *     void *val;
+ *     int sum = 0;
+ *     for (hi = apr_hash_first(p, ht); hi; hi = apr_hash_next(hi)) {
+ *         apr_hash_this(hi, NULL, NULL, &val);
+ *         sum += *(int *)val;
+ *     }
+ *     return sum;
+ * }
+ * @endcode
+ */
+APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht);
+
+/**
+ * Continue iterating over the entries in a hash table.
+ * @param hi The iteration state
+ * @return a pointer to the updated iteration state.  NULL if there are no more  
+ *         entries.
+ */
+APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi);
+
+/**
+ * Get the current entry's details from the iteration state.
+ * @param hi The iteration state
+ * @param key Return pointer for the pointer to the key.
+ * @param klen Return pointer for the key length.
+ * @param val Return pointer for the associated value.
+ * @remark The return pointers should point to a variable that will be set to the
+ *         corresponding data, or they may be NULL if the data isn't interesting.
+ */
+APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi, const void **key, 
+                                apr_ssize_t *klen, void **val);
+
+/**
+ * Get the current entry's key from the iteration state.
+ * @param hi The iteration state
+ * @return The pointer to the key
+ */
+APR_DECLARE(const void*) apr_hash_this_key(apr_hash_index_t *hi);
+
+/**
+ * Get the current entry's key length from the iteration state.
+ * @param hi The iteration state
+ * @return The key length
+ */
+APR_DECLARE(apr_ssize_t) apr_hash_this_key_len(apr_hash_index_t *hi);
+
+/**
+ * Get the current entry's value from the iteration state.
+ * @param hi The iteration state
+ * @return The pointer to the value
+ */
+APR_DECLARE(void*) apr_hash_this_val(apr_hash_index_t *hi);
+
+/**
+ * Get the number of key/value pairs in the hash table.
+ * @param ht The hash table
+ * @return The number of key/value pairs in the hash table.
+ */
+APR_DECLARE(unsigned int) apr_hash_count(apr_hash_t *ht);
+
+/**
+ * Clear any key/value pairs in the hash table.
+ * @param ht The hash table
+ */
+APR_DECLARE(void) apr_hash_clear(apr_hash_t *ht);
+
+/**
+ * Merge two hash tables into one new hash table. The values of the overlay
+ * hash override the values of the base if both have the same key.  Both
+ * hash tables must use the same hash function.
+ * @param p The pool to use for the new hash table
+ * @param overlay The table to add to the initial table
+ * @param base The table that represents the initial values of the new table
+ * @return A new hash table containing all of the data from the two passed in
+ */
+APR_DECLARE(apr_hash_t *) apr_hash_overlay(apr_pool_t *p,
+                                           const apr_hash_t *overlay, 
+                                           const apr_hash_t *base);
+
+/**
+ * Merge two hash tables into one new hash table. If the same key
+ * is present in both tables, call the supplied merge function to
+ * produce a merged value for the key in the new table.  Both
+ * hash tables must use the same hash function.
+ * @param p The pool to use for the new hash table
+ * @param h1 The first of the tables to merge
+ * @param h2 The second of the tables to merge
+ * @param merger A callback function to merge values, or NULL to
+ *  make values from h1 override values from h2 (same semantics as
+ *  apr_hash_overlay())
+ * @param data Client data to pass to the merger function
+ * @return A new hash table containing all of the data from the two passed in
+ */
+APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p,
+                                         const apr_hash_t *h1,
+                                         const apr_hash_t *h2,
+                                         void * (*merger)(apr_pool_t *p,
+                                                     const void *key,
+                                                     apr_ssize_t klen,
+                                                     const void *h1_val,
+                                                     const void *h2_val,
+                                                     const void *data),
+                                         const void *data);
+
+/**
+ * Declaration prototype for the iterator callback function of apr_hash_do().
+ *
+ * @param rec The data passed as the first argument to apr_hash_[v]do()
+ * @param key The key from this iteration of the hash table
+ * @param klen The key length from this iteration of the hash table
+ * @param value The value from this iteration of the hash table
+ * @remark Iteration continues while this callback function returns non-zero.
+ * To export the callback function for apr_hash_do() it must be declared 
+ * in the _NONSTD convention.
+ */
+typedef int (apr_hash_do_callback_fn_t)(void *rec, const void *key,
+                                                   apr_ssize_t klen,
+                                                   const void *value);
+
+/** 
+ * Iterate over a hash table running the provided function once for every
+ * element in the hash table. The @param comp function will be invoked for
+ * every element in the hash table.
+ *
+ * @param comp The function to run
+ * @param rec The data to pass as the first argument to the function
+ * @param ht The hash table to iterate over
+ * @return FALSE if one of the comp() iterations returned zero; TRUE if all
+ *            iterations returned non-zero
+ * @see apr_hash_do_callback_fn_t
+ */
+APR_DECLARE(int) apr_hash_do(apr_hash_do_callback_fn_t *comp,
+                             void *rec, const apr_hash_t *ht);
+
+/**
+ * Get a pointer to the pool which the hash table was created in
+ */
+APR_POOL_DECLARE_ACCESSOR(hash);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* !APR_HASH_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_inherit.h
===================================================================
--- vendor/apache/apr/dist/include/apr_inherit.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_inherit.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,51 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_INHERIT_H
-#define APR_INHERIT_H
-
-/**
- * @file apr_inherit.h 
- * @brief APR File Handle Inheritance Helpers
- * @remark This internal header includes internal declaration helpers 
- * for other headers to declare apr_foo_inherit_[un]set functions.
- */
-
-/**
- * Prototype for type-specific declarations of apr_foo_inherit_set 
- * functions.  
- * @remark Doxygen unwraps this macro (via doxygen.conf) to provide 
- * actual help for each specific occurance of apr_foo_inherit_set.
- * @remark the linkage is specified for APR. It would be possible to expand
- *       the macros to support other linkages.
- */
-#define APR_DECLARE_INHERIT_SET(type) \
-    APR_DECLARE(apr_status_t) apr_##type##_inherit_set( \
-                                          apr_##type##_t *the##type)
-
-/**
- * Prototype for type-specific declarations of apr_foo_inherit_unset 
- * functions.  
- * @remark Doxygen unwraps this macro (via doxygen.conf) to provide 
- * actual help for each specific occurance of apr_foo_inherit_unset.
- * @remark the linkage is specified for APR. It would be possible to expand
- *       the macros to support other linkages.
- */
-#define APR_DECLARE_INHERIT_UNSET(type) \
-    APR_DECLARE(apr_status_t) apr_##type##_inherit_unset( \
-                                          apr_##type##_t *the##type)
-
-#endif	/* ! APR_INHERIT_H */

Copied: vendor/apache/apr/1.5.2/include/apr_inherit.h (from rev 9273, vendor/apache/apr/dist/include/apr_inherit.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_inherit.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_inherit.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,51 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_INHERIT_H
+#define APR_INHERIT_H
+
+/**
+ * @file apr_inherit.h 
+ * @brief APR File Handle Inheritance Helpers
+ * @remark This internal header includes internal declaration helpers 
+ * for other headers to declare apr_foo_inherit_[un]set functions.
+ */
+
+/**
+ * Prototype for type-specific declarations of apr_foo_inherit_set 
+ * functions.  
+ * @remark Doxygen unwraps this macro (via doxygen.conf) to provide 
+ * actual help for each specific occurrence of apr_foo_inherit_set.
+ * @remark the linkage is specified for APR. It would be possible to expand
+ *       the macros to support other linkages.
+ */
+#define APR_DECLARE_INHERIT_SET(type) \
+    APR_DECLARE(apr_status_t) apr_##type##_inherit_set( \
+                                          apr_##type##_t *the##type)
+
+/**
+ * Prototype for type-specific declarations of apr_foo_inherit_unset 
+ * functions.  
+ * @remark Doxygen unwraps this macro (via doxygen.conf) to provide 
+ * actual help for each specific occurrence of apr_foo_inherit_unset.
+ * @remark the linkage is specified for APR. It would be possible to expand
+ *       the macros to support other linkages.
+ */
+#define APR_DECLARE_INHERIT_UNSET(type) \
+    APR_DECLARE(apr_status_t) apr_##type##_inherit_unset( \
+                                          apr_##type##_t *the##type)
+
+#endif	/* ! APR_INHERIT_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_lib.h
===================================================================
--- vendor/apache/apr/dist/include/apr_lib.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_lib.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,241 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_LIB_H
-#define APR_LIB_H
-
-/**
- * @file apr_lib.h
- * This is collection of oddballs that didn't fit anywhere else,
- * and might move to more appropriate headers with the release
- * of APR 1.0.
- * @brief APR general purpose library routines
- */
-
-#include "apr.h"
-#include "apr_errno.h"
-
-#if APR_HAVE_CTYPE_H
-#include <ctype.h>
-#endif
-#if APR_HAVE_STDARG_H
-#include <stdarg.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_lib General Purpose Library Routines
- * @ingroup APR 
- * This is collection of oddballs that didn't fit anywhere else,
- * and might move to more appropriate headers with the release
- * of APR 1.0.
- * @{
- */
-
-/** A constant representing a 'large' string. */
-#define HUGE_STRING_LEN 8192
-
-/*
- * Define the structures used by the APR general-purpose library.
- */
-
-/** @see apr_vformatter_buff_t */
-typedef struct apr_vformatter_buff_t apr_vformatter_buff_t;
-
-/**
- * Structure used by the variable-formatter routines.
- */
-struct apr_vformatter_buff_t {
-    /** The current position */
-    char *curpos;
-    /** The end position of the format string */
-    char *endpos;
-};
-
-/**
- * return the final element of the pathname
- * @param pathname The path to get the final element of
- * @return the final element of the path
- * @remark
- * <PRE>
- * For example:
- *                 "/foo/bar/gum"    -> "gum"
- *                 "/foo/bar/gum/"   -> ""
- *                 "gum"             -> "gum"
- *                 "bs\\path\\stuff" -> "stuff"
- * </PRE>
- */
-APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname);
-
-/**
- * apr_killpg
- * Small utility macros to make things easier to read.  Not usually a
- * goal, to be sure..
- */
-
-#ifdef WIN32
-#define apr_killpg(x, y)
-#else /* WIN32 */
-#ifdef NO_KILLPG
-#define apr_killpg(x, y)        (kill (-(x), (y)))
-#else /* NO_KILLPG */
-#define apr_killpg(x, y)        (killpg ((x), (y)))
-#endif /* NO_KILLPG */
-#endif /* WIN32 */
-
-/**
- * apr_vformatter() is a generic printf-style formatting routine
- * with some extensions.
- * @param flush_func The function to call when the buffer is full
- * @param c The buffer to write to
- * @param fmt The format string
- * @param ap The arguments to use to fill out the format string.
- *
- * @remark
- * <PRE>
- * The extensions are:
- *
- * %%pA	takes a struct in_addr *, and prints it as a.b.c.d
- * %%pI	takes an apr_sockaddr_t * and prints it as a.b.c.d:port or
- *      [ipv6-address]:port
- * %%pT takes an apr_os_thread_t * and prints it in decimal
- *      ('0' is printed if !APR_HAS_THREADS)
- * %%pt takes an apr_os_thread_t * and prints it in hexadecimal
- *      ('0' is printed if !APR_HAS_THREADS)
- * %%pm takes an apr_status_t * and prints the appropriate error
- *      string (from apr_strerror) corresponding to that error code.
- * %%pp takes a void * and outputs it in hex
- * %%pB takes a apr_uint32_t * as bytes and outputs it's apr_strfsize
- * %%pF same as above, but takes a apr_off_t *
- * %%pS same as above, but takes a apr_size_t *
- *
- * %%pA, %%pI, %%pT, %%pp are available from APR 1.0.0 onwards (and in 0.9.x).
- * %%pt is only available from APR 1.2.0 onwards.
- * %%pm, %%pB, %%pF and %%pS are only available from APR 1.3.0 onwards.
- *
- * The %%p hacks are to force gcc's printf warning code to skip
- * over a pointer argument without complaining.  This does
- * mean that the ANSI-style %%p (output a void * in hex format) won't
- * work as expected at all, but that seems to be a fair trade-off
- * for the increased robustness of having printf-warnings work.
- *
- * Additionally, apr_vformatter allows for arbitrary output methods
- * using the apr_vformatter_buff and flush_func.
- *
- * The apr_vformatter_buff has two elements curpos and endpos.
- * curpos is where apr_vformatter will write the next byte of output.
- * It proceeds writing output to curpos, and updating curpos, until
- * either the end of output is reached, or curpos == endpos (i.e. the
- * buffer is full).
- *
- * If the end of output is reached, apr_vformatter returns the
- * number of bytes written.
- *
- * When the buffer is full, the flush_func is called.  The flush_func
- * can return -1 to indicate that no further output should be attempted,
- * and apr_vformatter will return immediately with -1.  Otherwise
- * the flush_func should flush the buffer in whatever manner is
- * appropriate, re apr_pool_t nitialize curpos and endpos, and return 0.
- *
- * Note that flush_func is only invoked as a result of attempting to
- * write another byte at curpos when curpos >= endpos.  So for
- * example, it's possible when the output exactly matches the buffer
- * space available that curpos == endpos will be true when
- * apr_vformatter returns.
- *
- * apr_vformatter does not call out to any other code, it is entirely
- * self-contained.  This allows the callers to do things which are
- * otherwise "unsafe".  For example, apr_psprintf uses the "scratch"
- * space at the unallocated end of a block, and doesn't actually
- * complete the allocation until apr_vformatter returns.  apr_psprintf
- * would be completely broken if apr_vformatter were to call anything
- * that used this same pool.  Similarly http_bprintf() uses the "scratch"
- * space at the end of its output buffer, and doesn't actually note
- * that the space is in use until it either has to flush the buffer
- * or until apr_vformatter returns.
- * </PRE>
- */
-APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b),
-			        apr_vformatter_buff_t *c, const char *fmt,
-			        va_list ap);
-
-/**
- * Display a prompt and read in the password from stdin.
- * @param prompt The prompt to display
- * @param pwbuf Buffer to store the password
- * @param bufsize The length of the password buffer.
- * @remark If the password entered must be truncated to fit in
- * the provided buffer, APR_ENAMETOOLONG will be returned.
- * Note that the bufsize paramater is passed by reference for no
- * reason; its value will never be modified by the apr_password_get()
- * function.
- */
-APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, 
-                                           apr_size_t *bufsize);
-
-/** @} */
-
-/**
- * @defgroup apr_ctype ctype functions
- * These macros allow correct support of 8-bit characters on systems which
- * support 8-bit characters.  Pretty dumb how the cast is required, but
- * that's legacy libc for ya.  These new macros do not support EOF like
- * the standard macros do.  Tough.
- * @{
- */
-/** @see isalnum */
-#define apr_isalnum(c) (isalnum(((unsigned char)(c))))
-/** @see isalpha */
-#define apr_isalpha(c) (isalpha(((unsigned char)(c))))
-/** @see iscntrl */
-#define apr_iscntrl(c) (iscntrl(((unsigned char)(c))))
-/** @see isdigit */
-#define apr_isdigit(c) (isdigit(((unsigned char)(c))))
-/** @see isgraph */
-#define apr_isgraph(c) (isgraph(((unsigned char)(c))))
-/** @see islower*/
-#define apr_islower(c) (islower(((unsigned char)(c))))
-/** @see isascii */
-#ifdef isascii
-#define apr_isascii(c) (isascii(((unsigned char)(c))))
-#else
-#define apr_isascii(c) (((c) & ~0x7f)==0)
-#endif
-/** @see isprint */
-#define apr_isprint(c) (isprint(((unsigned char)(c))))
-/** @see ispunct */
-#define apr_ispunct(c) (ispunct(((unsigned char)(c))))
-/** @see isspace */
-#define apr_isspace(c) (isspace(((unsigned char)(c))))
-/** @see isupper */
-#define apr_isupper(c) (isupper(((unsigned char)(c))))
-/** @see isxdigit */
-#define apr_isxdigit(c) (isxdigit(((unsigned char)(c))))
-/** @see tolower */
-#define apr_tolower(c) (tolower(((unsigned char)(c))))
-/** @see toupper */
-#define apr_toupper(c) (toupper(((unsigned char)(c))))
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif	/* ! APR_LIB_H */

Copied: vendor/apache/apr/1.5.2/include/apr_lib.h (from rev 9273, vendor/apache/apr/dist/include/apr_lib.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_lib.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_lib.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,241 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_LIB_H
+#define APR_LIB_H
+
+/**
+ * @file apr_lib.h
+ * This is collection of oddballs that didn't fit anywhere else,
+ * and might move to more appropriate headers with the release
+ * of APR 1.0.
+ * @brief APR general purpose library routines
+ */
+
+#include "apr.h"
+#include "apr_errno.h"
+
+#if APR_HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#if APR_HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_lib General Purpose Library Routines
+ * @ingroup APR 
+ * This is collection of oddballs that didn't fit anywhere else,
+ * and might move to more appropriate headers with the release
+ * of APR 1.0.
+ * @{
+ */
+
+/** A constant representing a 'large' string. */
+#define HUGE_STRING_LEN 8192
+
+/*
+ * Define the structures used by the APR general-purpose library.
+ */
+
+/** @see apr_vformatter_buff_t */
+typedef struct apr_vformatter_buff_t apr_vformatter_buff_t;
+
+/**
+ * Structure used by the variable-formatter routines.
+ */
+struct apr_vformatter_buff_t {
+    /** The current position */
+    char *curpos;
+    /** The end position of the format string */
+    char *endpos;
+};
+
+/**
+ * return the final element of the pathname
+ * @param pathname The path to get the final element of
+ * @return the final element of the path
+ * @remark
+ * <PRE>
+ * For example:
+ *                 "/foo/bar/gum"    -> "gum"
+ *                 "/foo/bar/gum/"   -> ""
+ *                 "gum"             -> "gum"
+ *                 "bs\\path\\stuff" -> "stuff"
+ * </PRE>
+ */
+APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname);
+
+/**
+ * apr_killpg
+ * Small utility macros to make things easier to read.  Not usually a
+ * goal, to be sure..
+ */
+
+#ifdef WIN32
+#define apr_killpg(x, y)
+#else /* WIN32 */
+#ifdef NO_KILLPG
+#define apr_killpg(x, y)        (kill (-(x), (y)))
+#else /* NO_KILLPG */
+#define apr_killpg(x, y)        (killpg ((x), (y)))
+#endif /* NO_KILLPG */
+#endif /* WIN32 */
+
+/**
+ * apr_vformatter() is a generic printf-style formatting routine
+ * with some extensions.
+ * @param flush_func The function to call when the buffer is full
+ * @param c The buffer to write to
+ * @param fmt The format string
+ * @param ap The arguments to use to fill out the format string.
+ *
+ * @remark
+ * <PRE>
+ * The extensions are:
+ *
+ * - %%pA takes a struct in_addr *, and prints it as a.b.c.d
+ * - %%pI takes an apr_sockaddr_t * and prints it as a.b.c.d:port or
+ * \[ipv6-address\]:port
+ * - %%pT takes an apr_os_thread_t * and prints it in decimal
+ * ('0' is printed if !APR_HAS_THREADS)
+ * - %%pt takes an apr_os_thread_t * and prints it in hexadecimal
+ * ('0' is printed if !APR_HAS_THREADS)
+ * - %%pm takes an apr_status_t * and prints the appropriate error
+ * string (from apr_strerror) corresponding to that error code.
+ * - %%pp takes a void * and outputs it in hex
+ * - %%pB takes a apr_uint32_t * as bytes and outputs it's apr_strfsize
+ * - %%pF same as above, but takes a apr_off_t *
+ * - %%pS same as above, but takes a apr_size_t *
+ *
+ * %%pA, %%pI, %%pT, %%pp are available from APR 1.0.0 onwards (and in 0.9.x).
+ * %%pt is only available from APR 1.2.0 onwards.
+ * %%pm, %%pB, %%pF and %%pS are only available from APR 1.3.0 onwards.
+ *
+ * The %%p hacks are to force gcc's printf warning code to skip
+ * over a pointer argument without complaining.  This does
+ * mean that the ANSI-style %%p (output a void * in hex format) won't
+ * work as expected at all, but that seems to be a fair trade-off
+ * for the increased robustness of having printf-warnings work.
+ *
+ * Additionally, apr_vformatter allows for arbitrary output methods
+ * using the apr_vformatter_buff and flush_func.
+ *
+ * The apr_vformatter_buff has two elements curpos and endpos.
+ * curpos is where apr_vformatter will write the next byte of output.
+ * It proceeds writing output to curpos, and updating curpos, until
+ * either the end of output is reached, or curpos == endpos (i.e. the
+ * buffer is full).
+ *
+ * If the end of output is reached, apr_vformatter returns the
+ * number of bytes written.
+ *
+ * When the buffer is full, the flush_func is called.  The flush_func
+ * can return -1 to indicate that no further output should be attempted,
+ * and apr_vformatter will return immediately with -1.  Otherwise
+ * the flush_func should flush the buffer in whatever manner is
+ * appropriate, re apr_pool_t nitialize curpos and endpos, and return 0.
+ *
+ * Note that flush_func is only invoked as a result of attempting to
+ * write another byte at curpos when curpos >= endpos.  So for
+ * example, it's possible when the output exactly matches the buffer
+ * space available that curpos == endpos will be true when
+ * apr_vformatter returns.
+ *
+ * apr_vformatter does not call out to any other code, it is entirely
+ * self-contained.  This allows the callers to do things which are
+ * otherwise "unsafe".  For example, apr_psprintf uses the "scratch"
+ * space at the unallocated end of a block, and doesn't actually
+ * complete the allocation until apr_vformatter returns.  apr_psprintf
+ * would be completely broken if apr_vformatter were to call anything
+ * that used this same pool.  Similarly http_bprintf() uses the "scratch"
+ * space at the end of its output buffer, and doesn't actually note
+ * that the space is in use until it either has to flush the buffer
+ * or until apr_vformatter returns.
+ * </PRE>
+ */
+APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b),
+			        apr_vformatter_buff_t *c, const char *fmt,
+			        va_list ap);
+
+/**
+ * Display a prompt and read in the password from stdin.
+ * @param prompt The prompt to display
+ * @param pwbuf Buffer to store the password
+ * @param bufsize The length of the password buffer.
+ * @remark If the password entered must be truncated to fit in
+ * the provided buffer, APR_ENAMETOOLONG will be returned.
+ * Note that the bufsize paramater is passed by reference for no
+ * reason; its value will never be modified by the apr_password_get()
+ * function.
+ */
+APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, 
+                                           apr_size_t *bufsize);
+
+/** @} */
+
+/**
+ * @defgroup apr_ctype ctype functions
+ * These macros allow correct support of 8-bit characters on systems which
+ * support 8-bit characters.  Pretty dumb how the cast is required, but
+ * that's legacy libc for ya.  These new macros do not support EOF like
+ * the standard macros do.  Tough.
+ * @{
+ */
+/** @see isalnum */
+#define apr_isalnum(c) (isalnum(((unsigned char)(c))))
+/** @see isalpha */
+#define apr_isalpha(c) (isalpha(((unsigned char)(c))))
+/** @see iscntrl */
+#define apr_iscntrl(c) (iscntrl(((unsigned char)(c))))
+/** @see isdigit */
+#define apr_isdigit(c) (isdigit(((unsigned char)(c))))
+/** @see isgraph */
+#define apr_isgraph(c) (isgraph(((unsigned char)(c))))
+/** @see islower*/
+#define apr_islower(c) (islower(((unsigned char)(c))))
+/** @see isascii */
+#ifdef isascii
+#define apr_isascii(c) (isascii(((unsigned char)(c))))
+#else
+#define apr_isascii(c) (((c) & ~0x7f)==0)
+#endif
+/** @see isprint */
+#define apr_isprint(c) (isprint(((unsigned char)(c))))
+/** @see ispunct */
+#define apr_ispunct(c) (ispunct(((unsigned char)(c))))
+/** @see isspace */
+#define apr_isspace(c) (isspace(((unsigned char)(c))))
+/** @see isupper */
+#define apr_isupper(c) (isupper(((unsigned char)(c))))
+/** @see isxdigit */
+#define apr_isxdigit(c) (isxdigit(((unsigned char)(c))))
+/** @see tolower */
+#define apr_tolower(c) (tolower(((unsigned char)(c))))
+/** @see toupper */
+#define apr_toupper(c) (toupper(((unsigned char)(c))))
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ! APR_LIB_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_mmap.h
===================================================================
--- vendor/apache/apr/dist/include/apr_mmap.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_mmap.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,171 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_MMAP_H
-#define APR_MMAP_H
-
-/**
- * @file apr_mmap.h
- * @brief APR MMAP routines
- */
-
-#include "apr.h"
-#include "apr_pools.h"
-#include "apr_errno.h"
-#include "apr_ring.h"
-#include "apr_file_io.h"        /* for apr_file_t */
-
-#ifdef BEOS
-#include <kernel/OS.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_mmap MMAP (Memory Map) Routines
- * @ingroup APR 
- * @{
- */
-
-/** MMap opened for reading */
-#define APR_MMAP_READ    1
-/** MMap opened for writing */
-#define APR_MMAP_WRITE   2
-
-/** @see apr_mmap_t */
-typedef struct apr_mmap_t            apr_mmap_t;
-
-/**
- * @remark
- * As far as I can tell the only really sane way to store an MMAP is as a
- * void * and a length.  BeOS requires this area_id, but that's just a little
- * something extra.  I am exposing this type, because it doesn't make much
- * sense to keep it private, and opening it up makes some stuff easier in
- * Apache.
- */
-/** The MMAP structure */
-struct apr_mmap_t {
-    /** The pool the mmap structure was allocated out of. */
-    apr_pool_t *cntxt;
-#ifdef BEOS
-    /** An area ID.  Only valid on BeOS */
-    area_id area;
-#endif
-#ifdef WIN32
-    /** The handle of the file mapping */
-    HANDLE mhandle;
-    /** The start of the real memory page area (mapped view) */
-    void *mv;
-    /** The physical start, size and offset */
-    apr_off_t  pstart;
-    apr_size_t psize;
-    apr_off_t  poffset;
-#endif
-    /** The start of the memory mapped area */
-    void *mm;
-    /** The amount of data in the mmap */
-    apr_size_t size;
-    /** ring of apr_mmap_t's that reference the same
-     * mmap'ed region; acts in place of a reference count */
-    APR_RING_ENTRY(apr_mmap_t) link;
-};
-
-#if APR_HAS_MMAP || defined(DOXYGEN)
-
-/** @def APR_MMAP_THRESHOLD 
- * Files have to be at least this big before they're mmap()d.  This is to deal
- * with systems where the expense of doing an mmap() and an munmap() outweighs
- * the benefit for small files.  It shouldn't be set lower than 1.
- */
-#ifdef MMAP_THRESHOLD
-#  define APR_MMAP_THRESHOLD              MMAP_THRESHOLD
-#else
-#  ifdef SUNOS4
-#    define APR_MMAP_THRESHOLD            (8*1024)
-#  else
-#    define APR_MMAP_THRESHOLD            1
-#  endif /* SUNOS4 */
-#endif /* MMAP_THRESHOLD */
-
-/** @def APR_MMAP_LIMIT
- * Maximum size of MMap region
- */
-#ifdef MMAP_LIMIT
-#  define APR_MMAP_LIMIT                  MMAP_LIMIT
-#else
-#  define APR_MMAP_LIMIT                  (4*1024*1024)
-#endif /* MMAP_LIMIT */
-
-/** Can this file be MMaped */
-#define APR_MMAP_CANDIDATE(filelength) \
-    ((filelength >= APR_MMAP_THRESHOLD) && (filelength < APR_MMAP_LIMIT))
-
-/*   Function definitions */
-
-/** 
- * Create a new mmap'ed file out of an existing APR file.
- * @param newmmap The newly created mmap'ed file.
- * @param file The file turn into an mmap.
- * @param offset The offset into the file to start the data pointer at.
- * @param size The size of the file
- * @param flag bit-wise or of:
- * <PRE>
- *          APR_MMAP_READ       MMap opened for reading
- *          APR_MMAP_WRITE      MMap opened for writing
- * </PRE>
- * @param cntxt The pool to use when creating the mmap.
- */
-APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **newmmap, 
-                                          apr_file_t *file, apr_off_t offset,
-                                          apr_size_t size, apr_int32_t flag,
-                                          apr_pool_t *cntxt);
-
-/**
- * Duplicate the specified MMAP.
- * @param new_mmap The structure to duplicate into. 
- * @param old_mmap The mmap to duplicate.
- * @param p The pool to use for new_mmap.
- */         
-APR_DECLARE(apr_status_t) apr_mmap_dup(apr_mmap_t **new_mmap,
-                                       apr_mmap_t *old_mmap,
-                                       apr_pool_t *p);
-
-/**
- * Remove a mmap'ed.
- * @param mm The mmap'ed file.
- */
-APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm);
-
-/** 
- * Move the pointer into the mmap'ed file to the specified offset.
- * @param addr The pointer to the offset specified.
- * @param mm The mmap'ed file.
- * @param offset The offset to move to.
- */
-APR_DECLARE(apr_status_t) apr_mmap_offset(void **addr, apr_mmap_t *mm, 
-                                          apr_off_t offset);
-
-#endif /* APR_HAS_MMAP */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_MMAP_H */

Copied: vendor/apache/apr/1.5.2/include/apr_mmap.h (from rev 9273, vendor/apache/apr/dist/include/apr_mmap.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_mmap.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_mmap.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,171 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_MMAP_H
+#define APR_MMAP_H
+
+/**
+ * @file apr_mmap.h
+ * @brief APR MMAP routines
+ */
+
+#include "apr.h"
+#include "apr_pools.h"
+#include "apr_errno.h"
+#include "apr_ring.h"
+#include "apr_file_io.h"        /* for apr_file_t */
+
+#ifdef BEOS
+#include <kernel/OS.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_mmap MMAP (Memory Map) Routines
+ * @ingroup APR 
+ * @{
+ */
+
+/** MMap opened for reading */
+#define APR_MMAP_READ    1
+/** MMap opened for writing */
+#define APR_MMAP_WRITE   2
+
+/** @see apr_mmap_t */
+typedef struct apr_mmap_t            apr_mmap_t;
+
+/**
+ * @remark
+ * As far as I can tell the only really sane way to store an MMAP is as a
+ * void * and a length.  BeOS requires this area_id, but that's just a little
+ * something extra.  I am exposing this type, because it doesn't make much
+ * sense to keep it private, and opening it up makes some stuff easier in
+ * Apache.
+ */
+/** The MMAP structure */
+struct apr_mmap_t {
+    /** The pool the mmap structure was allocated out of. */
+    apr_pool_t *cntxt;
+#ifdef BEOS
+    /** An area ID.  Only valid on BeOS */
+    area_id area;
+#endif
+#ifdef WIN32
+    /** The handle of the file mapping */
+    HANDLE mhandle;
+    /** The start of the real memory page area (mapped view) */
+    void *mv;
+    /** The physical start, size and offset */
+    apr_off_t  pstart;
+    apr_size_t psize;
+    apr_off_t  poffset;
+#endif
+    /** The start of the memory mapped area */
+    void *mm;
+    /** The amount of data in the mmap */
+    apr_size_t size;
+    /** ring of apr_mmap_t's that reference the same
+     * mmap'ed region; acts in place of a reference count */
+    APR_RING_ENTRY(apr_mmap_t) link;
+};
+
+#if APR_HAS_MMAP || defined(DOXYGEN)
+
+/** @def APR_MMAP_THRESHOLD 
+ * Files have to be at least this big before they're mmap()d.  This is to deal
+ * with systems where the expense of doing an mmap() and an munmap() outweighs
+ * the benefit for small files.  It shouldn't be set lower than 1.
+ */
+#ifdef MMAP_THRESHOLD
+#  define APR_MMAP_THRESHOLD              MMAP_THRESHOLD
+#else
+#  ifdef SUNOS4
+#    define APR_MMAP_THRESHOLD            (8*1024)
+#  else
+#    define APR_MMAP_THRESHOLD            1
+#  endif /* SUNOS4 */
+#endif /* MMAP_THRESHOLD */
+
+/** @def APR_MMAP_LIMIT
+ * Maximum size of MMap region
+ */
+#ifdef MMAP_LIMIT
+#  define APR_MMAP_LIMIT                  MMAP_LIMIT
+#else
+#  define APR_MMAP_LIMIT                  (4*1024*1024)
+#endif /* MMAP_LIMIT */
+
+/** Can this file be MMaped */
+#define APR_MMAP_CANDIDATE(filelength) \
+    ((filelength >= APR_MMAP_THRESHOLD) && (filelength < APR_MMAP_LIMIT))
+
+/*   Function definitions */
+
+/** 
+ * Create a new mmap'ed file out of an existing APR file.
+ * @param newmmap The newly created mmap'ed file.
+ * @param file The file to turn into an mmap.
+ * @param offset The offset into the file to start the data pointer at.
+ * @param size The size of the file
+ * @param flag bit-wise or of:
+ * <PRE>
+ *          APR_MMAP_READ       MMap opened for reading
+ *          APR_MMAP_WRITE      MMap opened for writing
+ * </PRE>
+ * @param cntxt The pool to use when creating the mmap.
+ */
+APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **newmmap, 
+                                          apr_file_t *file, apr_off_t offset,
+                                          apr_size_t size, apr_int32_t flag,
+                                          apr_pool_t *cntxt);
+
+/**
+ * Duplicate the specified MMAP.
+ * @param new_mmap The structure to duplicate into. 
+ * @param old_mmap The mmap to duplicate.
+ * @param p The pool to use for new_mmap.
+ */         
+APR_DECLARE(apr_status_t) apr_mmap_dup(apr_mmap_t **new_mmap,
+                                       apr_mmap_t *old_mmap,
+                                       apr_pool_t *p);
+
+/**
+ * Remove a mmap'ed.
+ * @param mm The mmap'ed file.
+ */
+APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm);
+
+/** 
+ * Move the pointer into the mmap'ed file to the specified offset.
+ * @param addr The pointer to the offset specified.
+ * @param mm The mmap'ed file.
+ * @param offset The offset to move to.
+ */
+APR_DECLARE(apr_status_t) apr_mmap_offset(void **addr, apr_mmap_t *mm, 
+                                          apr_off_t offset);
+
+#endif /* APR_HAS_MMAP */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_MMAP_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_network_io.h
===================================================================
--- vendor/apache/apr/dist/include/apr_network_io.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_network_io.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,859 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_NETWORK_IO_H
-#define APR_NETWORK_IO_H
-/**
- * @file apr_network_io.h
- * @brief APR Network library
- */
-
-#include "apr.h"
-#include "apr_pools.h"
-#include "apr_file_io.h"
-#include "apr_errno.h"
-#include "apr_inherit.h" 
-
-#if APR_HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_network_io Network Routines
- * @ingroup APR 
- * @{
- */
-
-#ifndef APR_MAX_SECS_TO_LINGER
-/** Maximum seconds to linger */
-#define APR_MAX_SECS_TO_LINGER 30
-#endif
-
-#ifndef APRMAXHOSTLEN
-/** Maximum hostname length */
-#define APRMAXHOSTLEN 256
-#endif
-
-#ifndef APR_ANYADDR
-/** Default 'any' address */
-#define APR_ANYADDR "0.0.0.0"
-#endif
-
-/**
- * @defgroup apr_sockopt Socket option definitions
- * @{
- */
-#define APR_SO_LINGER        1    /**< Linger */
-#define APR_SO_KEEPALIVE     2    /**< Keepalive */
-#define APR_SO_DEBUG         4    /**< Debug */
-#define APR_SO_NONBLOCK      8    /**< Non-blocking IO */
-#define APR_SO_REUSEADDR     16   /**< Reuse addresses */
-#define APR_SO_SNDBUF        64   /**< Send buffer */
-#define APR_SO_RCVBUF        128  /**< Receive buffer */
-#define APR_SO_DISCONNECTED  256  /**< Disconnected */
-#define APR_TCP_NODELAY      512  /**< For SCTP sockets, this is mapped
-                                   * to STCP_NODELAY internally.
-                                   */
-#define APR_TCP_NOPUSH       1024 /**< No push */
-#define APR_RESET_NODELAY    2048 /**< This flag is ONLY set internally
-                                   * when we set APR_TCP_NOPUSH with
-                                   * APR_TCP_NODELAY set to tell us that
-                                   * APR_TCP_NODELAY should be turned on
-                                   * again when NOPUSH is turned off
-                                   */
-#define APR_INCOMPLETE_READ 4096  /**< Set on non-blocking sockets
-				   * (timeout != 0) on which the
-				   * previous read() did not fill a buffer
-				   * completely.  the next apr_socket_recv() 
-                                   * will first call select()/poll() rather than
-				   * going straight into read().  (Can also
-				   * be set by an application to force a
-				   * select()/poll() call before the next
-				   * read, in cases where the app expects
-				   * that an immediate read would fail.)
-				   */
-#define APR_INCOMPLETE_WRITE 8192 /**< like APR_INCOMPLETE_READ, but for write
-                                   * @see APR_INCOMPLETE_READ
-                                   */
-#define APR_IPV6_V6ONLY     16384 /**< Don't accept IPv4 connections on an
-                                   * IPv6 listening socket.
-                                   */
-#define APR_TCP_DEFER_ACCEPT 32768 /**< Delay accepting of new connections 
-                                    * until data is available.
-                                    * @see apr_socket_accept_filter
-                                    */
-
-/** @} */
-
-/** Define what type of socket shutdown should occur. */
-typedef enum {
-    APR_SHUTDOWN_READ,          /**< no longer allow read request */
-    APR_SHUTDOWN_WRITE,         /**< no longer allow write requests */
-    APR_SHUTDOWN_READWRITE      /**< no longer allow read or write requests */
-} apr_shutdown_how_e;
-
-#define APR_IPV4_ADDR_OK  0x01  /**< @see apr_sockaddr_info_get() */
-#define APR_IPV6_ADDR_OK  0x02  /**< @see apr_sockaddr_info_get() */
-
-#if (!APR_HAVE_IN_ADDR)
-/**
- * We need to make sure we always have an in_addr type, so APR will just
- * define it ourselves, if the platform doesn't provide it.
- */
-struct in_addr {
-    apr_uint32_t  s_addr; /**< storage to hold the IP# */
-};
-#endif
-
-/** @def APR_INADDR_NONE
- * Not all platforms have a real INADDR_NONE.  This macro replaces
- * INADDR_NONE on all platforms.
- */
-#ifdef INADDR_NONE
-#define APR_INADDR_NONE INADDR_NONE
-#else
-#define APR_INADDR_NONE ((unsigned int) 0xffffffff)
-#endif
-
-/**
- * @def APR_INET
- * Not all platforms have these defined, so we'll define them here
- * The default values come from FreeBSD 4.1.1
- */
-#define APR_INET     AF_INET
-/** @def APR_UNSPEC
- * Let the system decide which address family to use
- */
-#ifdef AF_UNSPEC
-#define APR_UNSPEC   AF_UNSPEC
-#else
-#define APR_UNSPEC   0
-#endif
-#if APR_HAVE_IPV6
-/** @def APR_INET6
-* IPv6 Address Family. Not all platforms may have this defined.
-*/
-
-#define APR_INET6    AF_INET6
-#endif
-
-/**
- * @defgroup IP_Proto IP Protocol Definitions for use when creating sockets
- * @{
- */
-#define APR_PROTO_TCP       6   /**< TCP  */
-#define APR_PROTO_UDP      17   /**< UDP  */
-#define APR_PROTO_SCTP    132   /**< SCTP */
-/** @} */
-
-/**
- * Enum used to denote either the local and remote endpoint of a
- * connection.
- */
-typedef enum {
-    APR_LOCAL,   /**< Socket information for local end of connection */
-    APR_REMOTE   /**< Socket information for remote end of connection */
-} apr_interface_e;
-
-/**
- * The specific declaration of inet_addr's ... some platforms fall back
- * inet_network (this is not good, but necessary)
- */
-
-#if APR_HAVE_INET_ADDR
-#define apr_inet_addr    inet_addr
-#elif APR_HAVE_INET_NETWORK        /* only DGUX, as far as I know */
-/**
- * @warning
- * not generally safe... inet_network() and inet_addr() perform
- * different functions */
-#define apr_inet_addr    inet_network
-#endif
-
-/** A structure to represent sockets */
-typedef struct apr_socket_t     apr_socket_t;
-/**
- * A structure to encapsulate headers and trailers for apr_socket_sendfile
- */
-typedef struct apr_hdtr_t       apr_hdtr_t;
-/** A structure to represent in_addr */
-typedef struct in_addr          apr_in_addr_t;
-/** A structure to represent an IP subnet */
-typedef struct apr_ipsubnet_t apr_ipsubnet_t;
-
-/** @remark use apr_uint16_t just in case some system has a short that isn't 16 bits... */
-typedef apr_uint16_t            apr_port_t;
-
-/** @remark It's defined here as I think it should all be platform safe...
- * @see apr_sockaddr_t
- */
-typedef struct apr_sockaddr_t apr_sockaddr_t;
-/**
- * APRs socket address type, used to ensure protocol independence
- */
-struct apr_sockaddr_t {
-    /** The pool to use... */
-    apr_pool_t *pool;
-    /** The hostname */
-    char *hostname;
-    /** Either a string of the port number or the service name for the port */
-    char *servname;
-    /** The numeric port */
-    apr_port_t port;
-    /** The family */
-    apr_int32_t family;
-    /** How big is the sockaddr we're using? */
-    apr_socklen_t salen;
-    /** How big is the ip address structure we're using? */
-    int ipaddr_len;
-    /** How big should the address buffer be?  16 for v4 or 46 for v6
-     *  used in inet_ntop... */
-    int addr_str_len;
-    /** This points to the IP address structure within the appropriate
-     *  sockaddr structure.  */
-    void *ipaddr_ptr;
-    /** If multiple addresses were found by apr_sockaddr_info_get(), this 
-     *  points to a representation of the next address. */
-    apr_sockaddr_t *next;
-    /** Union of either IPv4 or IPv6 sockaddr. */
-    union {
-        /** IPv4 sockaddr structure */
-        struct sockaddr_in sin;
-#if APR_HAVE_IPV6
-        /** IPv6 sockaddr structure */
-        struct sockaddr_in6 sin6;
-#endif
-#if APR_HAVE_SA_STORAGE
-        /** Placeholder to ensure that the size of this union is not
-         * dependent on whether APR_HAVE_IPV6 is defined. */
-        struct sockaddr_storage sas;
-#endif
-    } sa;
-};
-
-#if APR_HAS_SENDFILE
-/** 
- * Support reusing the socket on platforms which support it (from disconnect,
- * specifically Win32.
- * @remark Optional flag passed into apr_socket_sendfile() 
- */
-#define APR_SENDFILE_DISCONNECT_SOCKET      1
-#endif
-
-/** A structure to encapsulate headers and trailers for apr_socket_sendfile */
-struct apr_hdtr_t {
-    /** An iovec to store the headers sent before the file. */
-    struct iovec* headers;
-    /** number of headers in the iovec */
-    int numheaders;
-    /** An iovec to store the trailers sent after the file. */
-    struct iovec* trailers;
-    /** number of trailers in the iovec */
-    int numtrailers;
-};
-
-/* function definitions */
-
-/**
- * Create a socket.
- * @param new_sock The new socket that has been set up.
- * @param family The address family of the socket (e.g., APR_INET).
- * @param type The type of the socket (e.g., SOCK_STREAM).
- * @param protocol The protocol of the socket (e.g., APR_PROTO_TCP).
- * @param cont The pool for the apr_socket_t and associated storage.
- */
-APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new_sock, 
-                                            int family, int type,
-                                            int protocol,
-                                            apr_pool_t *cont);
-
-/**
- * Shutdown either reading, writing, or both sides of a socket.
- * @param thesocket The socket to close 
- * @param how How to shutdown the socket.  One of:
- * <PRE>
- *            APR_SHUTDOWN_READ         no longer allow read requests
- *            APR_SHUTDOWN_WRITE        no longer allow write requests
- *            APR_SHUTDOWN_READWRITE    no longer allow read or write requests 
- * </PRE>
- * @see apr_shutdown_how_e
- * @remark This does not actually close the socket descriptor, it just
- *      controls which calls are still valid on the socket.
- */
-APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket,
-                                              apr_shutdown_how_e how);
-
-/**
- * Close a socket.
- * @param thesocket The socket to close 
- */
-APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket);
-
-/**
- * Bind the socket to its associated port
- * @param sock The socket to bind 
- * @param sa The socket address to bind to
- * @remark This may be where we will find out if there is any other process
- *      using the selected port.
- */
-APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, 
-                                          apr_sockaddr_t *sa);
-
-/**
- * Listen to a bound socket for connections.
- * @param sock The socket to listen on 
- * @param backlog The number of outstanding connections allowed in the sockets
- *                listen queue.  If this value is less than zero, the listen
- *                queue size is set to zero.  
- */
-APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, 
-                                            apr_int32_t backlog);
-
-/**
- * Accept a new connection request
- * @param new_sock A copy of the socket that is connected to the socket that
- *                 made the connection request.  This is the socket which should
- *                 be used for all future communication.
- * @param sock The socket we are listening on.
- * @param connection_pool The pool for the new socket.
- */
-APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new_sock, 
-                                            apr_socket_t *sock,
-                                            apr_pool_t *connection_pool);
-
-/**
- * Issue a connection request to a socket either on the same machine 
- * or a different one.
- * @param sock The socket we wish to use for our side of the connection 
- * @param sa The address of the machine we wish to connect to.
- */
-APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock,
-                                             apr_sockaddr_t *sa);
-
-/**
- * Determine whether the receive part of the socket has been closed by
- * the peer (such that a subsequent call to apr_socket_read would
- * return APR_EOF), if the socket's receive buffer is empty.  This
- * function does not block waiting for I/O.
- *
- * @param sock The socket to check
- * @param atreadeof If APR_SUCCESS is returned, *atreadeof is set to
- *                  non-zero if a subsequent read would return APR_EOF
- * @return an error is returned if it was not possible to determine the
- *         status, in which case *atreadeof is not changed.
- */
-APR_DECLARE(apr_status_t) apr_socket_atreadeof(apr_socket_t *sock,
-                                               int *atreadeof);
-
-/**
- * Create apr_sockaddr_t from hostname, address family, and port.
- * @param sa The new apr_sockaddr_t.
- * @param hostname The hostname or numeric address string to resolve/parse, or
- *               NULL to build an address that corresponds to 0.0.0.0 or ::
- * @param family The address family to use, or APR_UNSPEC if the system should 
- *               decide.
- * @param port The port number.
- * @param flags Special processing flags:
- * <PRE>
- *       APR_IPV4_ADDR_OK          first query for IPv4 addresses; only look
- *                                 for IPv6 addresses if the first query failed;
- *                                 only valid if family is APR_UNSPEC and hostname
- *                                 isn't NULL; mutually exclusive with
- *                                 APR_IPV6_ADDR_OK
- *       APR_IPV6_ADDR_OK          first query for IPv6 addresses; only look
- *                                 for IPv4 addresses if the first query failed;
- *                                 only valid if family is APR_UNSPEC and hostname
- *                                 isn't NULL and APR_HAVE_IPV6; mutually exclusive
- *                                 with APR_IPV4_ADDR_OK
- * </PRE>
- * @param p The pool for the apr_sockaddr_t and associated storage.
- */
-APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa,
-                                          const char *hostname,
-                                          apr_int32_t family,
-                                          apr_port_t port,
-                                          apr_int32_t flags,
-                                          apr_pool_t *p);
-
-/**
- * Look up the host name from an apr_sockaddr_t.
- * @param hostname The hostname.
- * @param sa The apr_sockaddr_t.
- * @param flags Special processing flags.
- */
-APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname,
-                                          apr_sockaddr_t *sa,
-                                          apr_int32_t flags);
-
-/**
- * Parse hostname/IP address with scope id and port.
- *
- * Any of the following strings are accepted:
- *   8080                  (just the port number)
- *   www.apache.org        (just the hostname)
- *   www.apache.org:8080   (hostname and port number)
- *   [fe80::1]:80          (IPv6 numeric address string only)
- *   [fe80::1%eth0]        (IPv6 numeric address string and scope id)
- *
- * Invalid strings:
- *                         (empty string)
- *   [abc]                 (not valid IPv6 numeric address string)
- *   abc:65536             (invalid port number)
- *
- * @param addr The new buffer containing just the hostname.  On output, *addr 
- *             will be NULL if no hostname/IP address was specfied.
- * @param scope_id The new buffer containing just the scope id.  On output, 
- *                 *scope_id will be NULL if no scope id was specified.
- * @param port The port number.  On output, *port will be 0 if no port was 
- *             specified.
- *             ### FIXME: 0 is a legal port (per RFC 1700). this should
- *             ### return something besides zero if the port is missing.
- * @param str The input string to be parsed.
- * @param p The pool from which *addr and *scope_id are allocated.
- * @remark If scope id shouldn't be allowed, check for scope_id != NULL in 
- *         addition to checking the return code.  If addr/hostname should be 
- *         required, check for addr == NULL in addition to checking the 
- *         return code.
- */
-APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr,
-                                              char **scope_id,
-                                              apr_port_t *port,
-                                              const char *str,
-                                              apr_pool_t *p);
-
-/**
- * Get name of the current machine
- * @param buf A buffer to store the hostname in.
- * @param len The maximum length of the hostname that can be stored in the
- *            buffer provided.  The suggested length is APRMAXHOSTLEN + 1.
- * @param cont The pool to use.
- * @remark If the buffer was not large enough, an error will be returned.
- */
-APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len, apr_pool_t *cont);
-
-/**
- * Return the data associated with the current socket
- * @param data The user data associated with the socket.
- * @param key The key to associate with the user data.
- * @param sock The currently open socket.
- */
-APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key,
-                                              apr_socket_t *sock);
-
-/**
- * Set the data associated with the current socket.
- * @param sock The currently open socket.
- * @param data The user data to associate with the socket.
- * @param key The key to associate with the data.
- * @param cleanup The cleanup to call when the socket is destroyed.
- */
-APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data,
-                                              const char *key,
-                                              apr_status_t (*cleanup)(void*));
-
-/**
- * Send data over a network.
- * @param sock The socket to send the data over.
- * @param buf The buffer which contains the data to be sent. 
- * @param len On entry, the number of bytes to send; on exit, the number
- *            of bytes sent.
- * @remark
- * <PRE>
- * This functions acts like a blocking write by default.  To change 
- * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
- * socket option.
- *
- * It is possible for both bytes to be sent and an error to be returned.
- *
- * APR_EINTR is never returned.
- * </PRE>
- */
-APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, 
-                                          apr_size_t *len);
-
-/**
- * Send multiple packets of data over a network.
- * @param sock The socket to send the data over.
- * @param vec The array of iovec structs containing the data to send 
- * @param nvec The number of iovec structs in the array
- * @param len Receives the number of bytes actually written
- * @remark
- * <PRE>
- * This functions acts like a blocking write by default.  To change 
- * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
- * socket option.
- * The number of bytes actually sent is stored in argument 3.
- *
- * It is possible for both bytes to be sent and an error to be returned.
- *
- * APR_EINTR is never returned.
- * </PRE>
- */
-APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, 
-                                           const struct iovec *vec,
-                                           apr_int32_t nvec, apr_size_t *len);
-
-/**
- * @param sock The socket to send from
- * @param where The apr_sockaddr_t describing where to send the data
- * @param flags The flags to use
- * @param buf  The data to send
- * @param len  The length of the data to send
- */
-APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, 
-                                            apr_sockaddr_t *where,
-                                            apr_int32_t flags, const char *buf, 
-                                            apr_size_t *len);
-
-/**
- * Read data from a socket.  On success, the address of the peer from
- * which the data was sent is copied into the @a from parameter, and the
- * @a len parameter is updated to give the number of bytes written to
- * @a buf.
- *
- * @param from Updated with the address from which the data was received
- * @param sock The socket to use
- * @param flags The flags to use
- * @param buf  The buffer to use
- * @param len  The length of the available buffer
- */
-
-APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, 
-                                              apr_socket_t *sock,
-                                              apr_int32_t flags, char *buf, 
-                                              apr_size_t *len);
- 
-#if APR_HAS_SENDFILE || defined(DOXYGEN)
-
-/**
- * Send a file from an open file descriptor to a socket, along with 
- * optional headers and trailers
- * @param sock The socket to which we're writing
- * @param file The open file from which to read
- * @param hdtr A structure containing the headers and trailers to send
- * @param offset Offset into the file where we should begin writing
- * @param len (input)  - Number of bytes to send from the file 
- *            (output) - Number of bytes actually sent, 
- *                       including headers, file, and trailers
- * @param flags APR flags that are mapped to OS specific flags
- * @remark This functions acts like a blocking write by default.  To change 
- *         this behavior, use apr_socket_timeout_set() or the
- *         APR_SO_NONBLOCK socket option.
- * The number of bytes actually sent is stored in the len parameter.
- * The offset parameter is passed by reference for no reason; its
- * value will never be modified by the apr_socket_sendfile() function.
- */
-APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, 
-                                              apr_file_t *file,
-                                              apr_hdtr_t *hdtr,
-                                              apr_off_t *offset,
-                                              apr_size_t *len,
-                                              apr_int32_t flags);
-
-#endif /* APR_HAS_SENDFILE */
-
-/**
- * Read data from a network.
- * @param sock The socket to read the data from.
- * @param buf The buffer to store the data in. 
- * @param len On entry, the number of bytes to receive; on exit, the number
- *            of bytes received.
- * @remark
- * <PRE>
- * This functions acts like a blocking read by default.  To change 
- * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
- * socket option.
- * The number of bytes actually received is stored in argument 3.
- *
- * It is possible for both bytes to be received and an APR_EOF or
- * other error to be returned.
- *
- * APR_EINTR is never returned.
- * </PRE>
- */
-APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, 
-                                   char *buf, apr_size_t *len);
-
-/**
- * Setup socket options for the specified socket
- * @param sock The socket to set up.
- * @param opt The option we would like to configure.  One of:
- * <PRE>
- *            APR_SO_DEBUG      --  turn on debugging information 
- *            APR_SO_KEEPALIVE  --  keep connections active
- *            APR_SO_LINGER     --  lingers on close if data is present
- *            APR_SO_NONBLOCK   --  Turns blocking on/off for socket
- *                                  When this option is enabled, use
- *                                  the APR_STATUS_IS_EAGAIN() macro to
- *                                  see if a send or receive function
- *                                  could not transfer data without
- *                                  blocking.
- *            APR_SO_REUSEADDR  --  The rules used in validating addresses
- *                                  supplied to bind should allow reuse
- *                                  of local addresses.
- *            APR_SO_SNDBUF     --  Set the SendBufferSize
- *            APR_SO_RCVBUF     --  Set the ReceiveBufferSize
- * </PRE>
- * @param on Value for the option.
- */
-APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock,
-                                             apr_int32_t opt, apr_int32_t on);
-
-/**
- * Setup socket timeout for the specified socket
- * @param sock The socket to set up.
- * @param t Value for the timeout.
- * <PRE>
- *   t > 0  -- read and write calls return APR_TIMEUP if specified time
- *             elapsess with no data read or written
- *   t == 0 -- read and write calls never block
- *   t < 0  -- read and write calls block
- * </PRE>
- */
-APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock,
-                                                 apr_interval_time_t t);
-
-/**
- * Query socket options for the specified socket
- * @param sock The socket to query
- * @param opt The option we would like to query.  One of:
- * <PRE>
- *            APR_SO_DEBUG      --  turn on debugging information 
- *            APR_SO_KEEPALIVE  --  keep connections active
- *            APR_SO_LINGER     --  lingers on close if data is present
- *            APR_SO_NONBLOCK   --  Turns blocking on/off for socket
- *            APR_SO_REUSEADDR  --  The rules used in validating addresses
- *                                  supplied to bind should allow reuse
- *                                  of local addresses.
- *            APR_SO_SNDBUF     --  Set the SendBufferSize
- *            APR_SO_RCVBUF     --  Set the ReceiveBufferSize
- *            APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
- *                                  (Currently only used on Windows)
- * </PRE>
- * @param on Socket option returned on the call.
- */
-APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, 
-                                             apr_int32_t opt, apr_int32_t *on);
-
-/**
- * Query socket timeout for the specified socket
- * @param sock The socket to query
- * @param t Socket timeout returned from the query.
- */
-APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, 
-                                                 apr_interval_time_t *t);
-
-/**
- * Query the specified socket if at the OOB/Urgent data mark
- * @param sock The socket to query
- * @param atmark Is set to true if socket is at the OOB/urgent mark,
- *               otherwise is set to false.
- */
-APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, 
-                                            int *atmark);
-
-/**
- * Return an address associated with a socket; either the address to
- * which the socket is bound locally or the the address of the peer
- * to which the socket is connected.
- * @param sa The returned apr_sockaddr_t.
- * @param which Whether to retrieve the local or remote address
- * @param sock The socket to use
- */
-APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa,
-                                              apr_interface_e which,
-                                              apr_socket_t *sock);
- 
-/**
- * Return the IP address (in numeric address string format) in
- * an APR socket address.  APR will allocate storage for the IP address 
- * string from the pool of the apr_sockaddr_t.
- * @param addr The IP address.
- * @param sockaddr The socket address to reference.
- */
-APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr, 
-                                              apr_sockaddr_t *sockaddr);
-
-/**
- * Write the IP address (in numeric address string format) of the APR
- * socket address @a sockaddr into the buffer @a buf (of size @a buflen).
- * @param sockaddr The socket address to reference.
- */
-APR_DECLARE(apr_status_t) apr_sockaddr_ip_getbuf(char *buf, apr_size_t buflen,
-                                                 apr_sockaddr_t *sockaddr);
-
-/**
- * See if the IP addresses in two APR socket addresses are
- * equivalent.  Appropriate logic is present for comparing
- * IPv4-mapped IPv6 addresses with IPv4 addresses.
- *
- * @param addr1 One of the APR socket addresses.
- * @param addr2 The other APR socket address.
- * @remark The return value will be non-zero if the addresses
- * are equivalent.
- */
-APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1,
-                                    const apr_sockaddr_t *addr2);
-
-/**
-* Return the type of the socket.
-* @param sock The socket to query.
-* @param type The returned type (e.g., SOCK_STREAM).
-*/
-APR_DECLARE(apr_status_t) apr_socket_type_get(apr_socket_t *sock,
-                                              int *type);
- 
-/**
- * Given an apr_sockaddr_t and a service name, set the port for the service
- * @param sockaddr The apr_sockaddr_t that will have its port set
- * @param servname The name of the service you wish to use
- */
-APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, 
-                                            const char *servname);
-/**
- * Build an ip-subnet representation from an IP address and optional netmask or
- * number-of-bits.
- * @param ipsub The new ip-subnet representation
- * @param ipstr The input IP address string
- * @param mask_or_numbits The input netmask or number-of-bits string, or NULL
- * @param p The pool to allocate from
- */
-APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, 
-                                              const char *ipstr, 
-                                              const char *mask_or_numbits, 
-                                              apr_pool_t *p);
-
-/**
- * Test the IP address in an apr_sockaddr_t against a pre-built ip-subnet
- * representation.
- * @param ipsub The ip-subnet representation
- * @param sa The socket address to test
- * @return non-zero if the socket address is within the subnet, 0 otherwise
- */
-APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa);
-
-#if APR_HAS_SO_ACCEPTFILTER || defined(DOXYGEN)
-/**
- * Set an OS level accept filter.
- * @param sock The socket to put the accept filter on.
- * @param name The accept filter
- * @param args Any extra args to the accept filter.  Passing NULL here removes
- *             the accept filter. 
- * @bug name and args should have been declared as const char *, as they are in
- * APR 2.0
- */
-apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name,
-                                      char *args);
-#endif
-
-/**
- * Return the protocol of the socket.
- * @param sock The socket to query.
- * @param protocol The returned protocol (e.g., APR_PROTO_TCP).
- */
-APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock,
-                                                  int *protocol);
-
-/**
- * Get the pool used by the socket.
- */
-APR_POOL_DECLARE_ACCESSOR(socket);
-
-/**
- * Set a socket to be inherited by child processes.
- */
-APR_DECLARE_INHERIT_SET(socket);
-
-/**
- * Unset a socket from being inherited by child processes.
- */
-APR_DECLARE_INHERIT_UNSET(socket);
-
-/**
- * @defgroup apr_mcast IP Multicast
- * @{
- */
-
-/**
- * Join a Multicast Group
- * @param sock The socket to join a multicast group
- * @param join The address of the multicast group to join
- * @param iface Address of the interface to use.  If NULL is passed, the 
- *              default multicast interface will be used. (OS Dependent)
- * @param source Source Address to accept transmissions from (non-NULL 
- *               implies Source-Specific Multicast)
- */
-APR_DECLARE(apr_status_t) apr_mcast_join(apr_socket_t *sock,
-                                         apr_sockaddr_t *join,
-                                         apr_sockaddr_t *iface,
-                                         apr_sockaddr_t *source);
-
-/**
- * Leave a Multicast Group.  All arguments must be the same as
- * apr_mcast_join.
- * @param sock The socket to leave a multicast group
- * @param addr The address of the multicast group to leave
- * @param iface Address of the interface to use.  If NULL is passed, the 
- *              default multicast interface will be used. (OS Dependent)
- * @param source Source Address to accept transmissions from (non-NULL 
- *               implies Source-Specific Multicast)
- */
-APR_DECLARE(apr_status_t) apr_mcast_leave(apr_socket_t *sock,
-                                          apr_sockaddr_t *addr,
-                                          apr_sockaddr_t *iface,
-                                          apr_sockaddr_t *source);
-
-/**
- * Set the Multicast Time to Live (ttl) for a multicast transmission.
- * @param sock The socket to set the multicast ttl
- * @param ttl Time to live to Assign. 0-255, default=1
- * @remark If the TTL is 0, packets will only be seen by sockets on 
- * the local machine, and only when multicast loopback is enabled.
- */
-APR_DECLARE(apr_status_t) apr_mcast_hops(apr_socket_t *sock,
-                                         apr_byte_t ttl);
-
-/**
- * Toggle IP Multicast Loopback
- * @param sock The socket to set multicast loopback
- * @param opt 0=disable, 1=enable
- */
-APR_DECLARE(apr_status_t) apr_mcast_loopback(apr_socket_t *sock,
-                                             apr_byte_t opt);
-
-
-/**
- * Set the Interface to be used for outgoing Multicast Transmissions.
- * @param sock The socket to set the multicast interface on
- * @param iface Address of the interface to use for Multicast
- */
-APR_DECLARE(apr_status_t) apr_mcast_interface(apr_socket_t *sock,
-                                              apr_sockaddr_t *iface);
-
-/** @} */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_NETWORK_IO_H */
-

Copied: vendor/apache/apr/1.5.2/include/apr_network_io.h (from rev 9273, vendor/apache/apr/dist/include/apr_network_io.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_network_io.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_network_io.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,879 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_NETWORK_IO_H
+#define APR_NETWORK_IO_H
+/**
+ * @file apr_network_io.h
+ * @brief APR Network library
+ */
+
+#include "apr.h"
+#include "apr_pools.h"
+#include "apr_file_io.h"
+#include "apr_errno.h"
+#include "apr_inherit.h" 
+
+#if APR_HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_network_io Network Routines
+ * @ingroup APR 
+ * @{
+ */
+
+#ifndef APR_MAX_SECS_TO_LINGER
+/** Maximum seconds to linger */
+#define APR_MAX_SECS_TO_LINGER 30
+#endif
+
+#ifndef APRMAXHOSTLEN
+/** Maximum hostname length */
+#define APRMAXHOSTLEN 256
+#endif
+
+#ifndef APR_ANYADDR
+/** Default 'any' address */
+#define APR_ANYADDR "0.0.0.0"
+#endif
+
+/**
+ * @defgroup apr_sockopt Socket option definitions
+ * @{
+ */
+#define APR_SO_LINGER        1    /**< Linger */
+#define APR_SO_KEEPALIVE     2    /**< Keepalive */
+#define APR_SO_DEBUG         4    /**< Debug */
+#define APR_SO_NONBLOCK      8    /**< Non-blocking IO */
+#define APR_SO_REUSEADDR     16   /**< Reuse addresses */
+#define APR_SO_SNDBUF        64   /**< Send buffer */
+#define APR_SO_RCVBUF        128  /**< Receive buffer */
+#define APR_SO_DISCONNECTED  256  /**< Disconnected */
+#define APR_TCP_NODELAY      512  /**< For SCTP sockets, this is mapped
+                                   * to STCP_NODELAY internally.
+                                   */
+#define APR_TCP_NOPUSH       1024 /**< No push */
+#define APR_RESET_NODELAY    2048 /**< This flag is ONLY set internally
+                                   * when we set APR_TCP_NOPUSH with
+                                   * APR_TCP_NODELAY set to tell us that
+                                   * APR_TCP_NODELAY should be turned on
+                                   * again when NOPUSH is turned off
+                                   */
+#define APR_INCOMPLETE_READ 4096  /**< Set on non-blocking sockets
+				   * (timeout != 0) on which the
+				   * previous read() did not fill a buffer
+				   * completely.  the next apr_socket_recv() 
+                                   * will first call select()/poll() rather than
+				   * going straight into read().  (Can also
+				   * be set by an application to force a
+				   * select()/poll() call before the next
+				   * read, in cases where the app expects
+				   * that an immediate read would fail.)
+				   */
+#define APR_INCOMPLETE_WRITE 8192 /**< like APR_INCOMPLETE_READ, but for write
+                                   * @see APR_INCOMPLETE_READ
+                                   */
+#define APR_IPV6_V6ONLY     16384 /**< Don't accept IPv4 connections on an
+                                   * IPv6 listening socket.
+                                   */
+#define APR_TCP_DEFER_ACCEPT 32768 /**< Delay accepting of new connections 
+                                    * until data is available.
+                                    * @see apr_socket_accept_filter
+                                    */
+#define APR_SO_BROADCAST     65536 /**< Allow broadcast
+                                    */
+
+/** @} */
+
+/** Define what type of socket shutdown should occur. */
+typedef enum {
+    APR_SHUTDOWN_READ,          /**< no longer allow read request */
+    APR_SHUTDOWN_WRITE,         /**< no longer allow write requests */
+    APR_SHUTDOWN_READWRITE      /**< no longer allow read or write requests */
+} apr_shutdown_how_e;
+
+#define APR_IPV4_ADDR_OK  0x01  /**< @see apr_sockaddr_info_get() */
+#define APR_IPV6_ADDR_OK  0x02  /**< @see apr_sockaddr_info_get() */
+
+#if (!APR_HAVE_IN_ADDR)
+/**
+ * We need to make sure we always have an in_addr type, so APR will just
+ * define it ourselves, if the platform doesn't provide it.
+ */
+struct in_addr {
+    apr_uint32_t  s_addr; /**< storage to hold the IP# */
+};
+#endif
+
+/** @def APR_INADDR_NONE
+ * Not all platforms have a real INADDR_NONE.  This macro replaces
+ * INADDR_NONE on all platforms.
+ */
+#ifdef INADDR_NONE
+#define APR_INADDR_NONE INADDR_NONE
+#else
+#define APR_INADDR_NONE ((unsigned int) 0xffffffff)
+#endif
+
+/**
+ * @def APR_INET
+ * Not all platforms have these defined, so we'll define them here
+ * The default values come from FreeBSD 4.1.1
+ */
+#define APR_INET     AF_INET
+/** @def APR_UNSPEC
+ * Let the system decide which address family to use
+ */
+#ifdef AF_UNSPEC
+#define APR_UNSPEC   AF_UNSPEC
+#else
+#define APR_UNSPEC   0
+#endif
+#if APR_HAVE_IPV6
+/** @def APR_INET6
+* IPv6 Address Family. Not all platforms may have this defined.
+*/
+
+#define APR_INET6    AF_INET6
+#endif
+
+/**
+ * @defgroup IP_Proto IP Protocol Definitions for use when creating sockets
+ * @{
+ */
+#define APR_PROTO_TCP       6   /**< TCP  */
+#define APR_PROTO_UDP      17   /**< UDP  */
+#define APR_PROTO_SCTP    132   /**< SCTP */
+/** @} */
+
+/**
+ * Enum used to denote either the local and remote endpoint of a
+ * connection.
+ */
+typedef enum {
+    APR_LOCAL,   /**< Socket information for local end of connection */
+    APR_REMOTE   /**< Socket information for remote end of connection */
+} apr_interface_e;
+
+/**
+ * The specific declaration of inet_addr's ... some platforms fall back
+ * inet_network (this is not good, but necessary)
+ */
+
+#if APR_HAVE_INET_ADDR
+#define apr_inet_addr    inet_addr
+#elif APR_HAVE_INET_NETWORK        /* only DGUX, as far as I know */
+/**
+ * @warning
+ * not generally safe... inet_network() and inet_addr() perform
+ * different functions */
+#define apr_inet_addr    inet_network
+#endif
+
+/** A structure to represent sockets */
+typedef struct apr_socket_t     apr_socket_t;
+/**
+ * A structure to encapsulate headers and trailers for apr_socket_sendfile
+ */
+typedef struct apr_hdtr_t       apr_hdtr_t;
+/** A structure to represent in_addr */
+typedef struct in_addr          apr_in_addr_t;
+/** A structure to represent an IP subnet */
+typedef struct apr_ipsubnet_t apr_ipsubnet_t;
+
+/** @remark use apr_uint16_t just in case some system has a short that isn't 16 bits... */
+typedef apr_uint16_t            apr_port_t;
+
+/** @remark It's defined here as I think it should all be platform safe...
+ * @see apr_sockaddr_t
+ */
+typedef struct apr_sockaddr_t apr_sockaddr_t;
+/**
+ * APRs socket address type, used to ensure protocol independence
+ */
+struct apr_sockaddr_t {
+    /** The pool to use... */
+    apr_pool_t *pool;
+    /** The hostname */
+    char *hostname;
+    /** Either a string of the port number or the service name for the port */
+    char *servname;
+    /** The numeric port */
+    apr_port_t port;
+    /** The family */
+    apr_int32_t family;
+    /** How big is the sockaddr we're using? */
+    apr_socklen_t salen;
+    /** How big is the ip address structure we're using? */
+    int ipaddr_len;
+    /** How big should the address buffer be?  16 for v4 or 46 for v6
+     *  used in inet_ntop... */
+    int addr_str_len;
+    /** This points to the IP address structure within the appropriate
+     *  sockaddr structure.  */
+    void *ipaddr_ptr;
+    /** If multiple addresses were found by apr_sockaddr_info_get(), this 
+     *  points to a representation of the next address. */
+    apr_sockaddr_t *next;
+    /** Union of either IPv4 or IPv6 sockaddr. */
+    union {
+        /** IPv4 sockaddr structure */
+        struct sockaddr_in sin;
+#if APR_HAVE_IPV6
+        /** IPv6 sockaddr structure */
+        struct sockaddr_in6 sin6;
+#endif
+#if APR_HAVE_SA_STORAGE
+        /** Placeholder to ensure that the size of this union is not
+         * dependent on whether APR_HAVE_IPV6 is defined. */
+        struct sockaddr_storage sas;
+#endif
+    } sa;
+};
+
+#if APR_HAS_SENDFILE
+/** 
+ * Support reusing the socket on platforms which support it (from disconnect,
+ * specifically Win32.
+ * @remark Optional flag passed into apr_socket_sendfile() 
+ */
+#define APR_SENDFILE_DISCONNECT_SOCKET      1
+#endif
+
+/** A structure to encapsulate headers and trailers for apr_socket_sendfile */
+struct apr_hdtr_t {
+    /** An iovec to store the headers sent before the file. */
+    struct iovec* headers;
+    /** number of headers in the iovec */
+    int numheaders;
+    /** An iovec to store the trailers sent after the file. */
+    struct iovec* trailers;
+    /** number of trailers in the iovec */
+    int numtrailers;
+};
+
+/* function definitions */
+
+/**
+ * Create a socket.
+ * @param new_sock The new socket that has been set up.
+ * @param family The address family of the socket (e.g., APR_INET).
+ * @param type The type of the socket (e.g., SOCK_STREAM).
+ * @param protocol The protocol of the socket (e.g., APR_PROTO_TCP).
+ * @param cont The pool for the apr_socket_t and associated storage.
+ * @note The pool will be used by various functions that operate on the
+ *       socket. The caller must ensure that it is not used by other threads
+ *       at the same time.
+ */
+APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new_sock, 
+                                            int family, int type,
+                                            int protocol,
+                                            apr_pool_t *cont);
+
+/**
+ * Shutdown either reading, writing, or both sides of a socket.
+ * @param thesocket The socket to close 
+ * @param how How to shutdown the socket.  One of:
+ * <PRE>
+ *            APR_SHUTDOWN_READ         no longer allow read requests
+ *            APR_SHUTDOWN_WRITE        no longer allow write requests
+ *            APR_SHUTDOWN_READWRITE    no longer allow read or write requests 
+ * </PRE>
+ * @see apr_shutdown_how_e
+ * @remark This does not actually close the socket descriptor, it just
+ *      controls which calls are still valid on the socket.
+ */
+APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket,
+                                              apr_shutdown_how_e how);
+
+/**
+ * Close a socket.
+ * @param thesocket The socket to close 
+ */
+APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket);
+
+/**
+ * Bind the socket to its associated port
+ * @param sock The socket to bind 
+ * @param sa The socket address to bind to
+ * @remark This may be where we will find out if there is any other process
+ *      using the selected port.
+ */
+APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, 
+                                          apr_sockaddr_t *sa);
+
+/**
+ * Listen to a bound socket for connections.
+ * @param sock The socket to listen on 
+ * @param backlog The number of outstanding connections allowed in the sockets
+ *                listen queue.  If this value is less than zero, the listen
+ *                queue size is set to zero.  
+ */
+APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, 
+                                            apr_int32_t backlog);
+
+/**
+ * Accept a new connection request
+ * @param new_sock A copy of the socket that is connected to the socket that
+ *                 made the connection request.  This is the socket which should
+ *                 be used for all future communication.
+ * @param sock The socket we are listening on.
+ * @param connection_pool The pool for the new socket.
+ * @note The pool will be used by various functions that operate on the
+ *       socket. The caller must ensure that it is not used by other threads
+ *       at the same time.
+ */
+APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new_sock, 
+                                            apr_socket_t *sock,
+                                            apr_pool_t *connection_pool);
+
+/**
+ * Issue a connection request to a socket either on the same machine 
+ * or a different one.
+ * @param sock The socket we wish to use for our side of the connection 
+ * @param sa The address of the machine we wish to connect to.
+ */
+APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock,
+                                             apr_sockaddr_t *sa);
+
+/**
+ * Determine whether the receive part of the socket has been closed by
+ * the peer (such that a subsequent call to apr_socket_read would
+ * return APR_EOF), if the socket's receive buffer is empty.  This
+ * function does not block waiting for I/O.
+ *
+ * @param sock The socket to check
+ * @param atreadeof If APR_SUCCESS is returned, *atreadeof is set to
+ *                  non-zero if a subsequent read would return APR_EOF
+ * @return an error is returned if it was not possible to determine the
+ *         status, in which case *atreadeof is not changed.
+ */
+APR_DECLARE(apr_status_t) apr_socket_atreadeof(apr_socket_t *sock,
+                                               int *atreadeof);
+
+/**
+ * Create apr_sockaddr_t from hostname, address family, and port.
+ * @param sa The new apr_sockaddr_t.
+ * @param hostname The hostname or numeric address string to resolve/parse, or
+ *               NULL to build an address that corresponds to 0.0.0.0 or ::
+ * @param family The address family to use, or APR_UNSPEC if the system should 
+ *               decide.
+ * @param port The port number.
+ * @param flags Special processing flags:
+ * <PRE>
+ *       APR_IPV4_ADDR_OK          first query for IPv4 addresses; only look
+ *                                 for IPv6 addresses if the first query failed;
+ *                                 only valid if family is APR_UNSPEC and hostname
+ *                                 isn't NULL; mutually exclusive with
+ *                                 APR_IPV6_ADDR_OK
+ *       APR_IPV6_ADDR_OK          first query for IPv6 addresses; only look
+ *                                 for IPv4 addresses if the first query failed;
+ *                                 only valid if family is APR_UNSPEC and hostname
+ *                                 isn't NULL and APR_HAVE_IPV6; mutually exclusive
+ *                                 with APR_IPV4_ADDR_OK
+ * </PRE>
+ * @param p The pool for the apr_sockaddr_t and associated storage.
+ */
+APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa,
+                                          const char *hostname,
+                                          apr_int32_t family,
+                                          apr_port_t port,
+                                          apr_int32_t flags,
+                                          apr_pool_t *p);
+
+/**
+ * Look up the host name from an apr_sockaddr_t.
+ * @param hostname The hostname.
+ * @param sa The apr_sockaddr_t.
+ * @param flags Special processing flags.
+ * @remark Results can vary significantly between platforms
+ * when processing wildcard socket addresses.
+ */
+APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname,
+                                          apr_sockaddr_t *sa,
+                                          apr_int32_t flags);
+
+/**
+ * Parse hostname/IP address with scope id and port.
+ *
+ * Any of the following strings are accepted:
+ *   8080                  (just the port number)
+ *   www.apache.org        (just the hostname)
+ *   www.apache.org:8080   (hostname and port number)
+ *   [fe80::1]:80          (IPv6 numeric address string only)
+ *   [fe80::1%eth0]        (IPv6 numeric address string and scope id)
+ *
+ * Invalid strings:
+ *                         (empty string)
+ *   [abc]                 (not valid IPv6 numeric address string)
+ *   abc:65536             (invalid port number)
+ *
+ * @param addr The new buffer containing just the hostname.  On output, *addr 
+ *             will be NULL if no hostname/IP address was specfied.
+ * @param scope_id The new buffer containing just the scope id.  On output, 
+ *                 *scope_id will be NULL if no scope id was specified.
+ * @param port The port number.  On output, *port will be 0 if no port was 
+ *             specified.
+ *             ### FIXME: 0 is a legal port (per RFC 1700). this should
+ *             ### return something besides zero if the port is missing.
+ * @param str The input string to be parsed.
+ * @param p The pool from which *addr and *scope_id are allocated.
+ * @remark If scope id shouldn't be allowed, check for scope_id != NULL in 
+ *         addition to checking the return code.  If addr/hostname should be 
+ *         required, check for addr == NULL in addition to checking the 
+ *         return code.
+ */
+APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr,
+                                              char **scope_id,
+                                              apr_port_t *port,
+                                              const char *str,
+                                              apr_pool_t *p);
+
+/**
+ * Get name of the current machine
+ * @param buf A buffer to store the hostname in.
+ * @param len The maximum length of the hostname that can be stored in the
+ *            buffer provided.  The suggested length is APRMAXHOSTLEN + 1.
+ * @param cont The pool to use.
+ * @remark If the buffer was not large enough, an error will be returned.
+ */
+APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len, apr_pool_t *cont);
+
+/**
+ * Return the data associated with the current socket
+ * @param data The user data associated with the socket.
+ * @param key The key to associate with the user data.
+ * @param sock The currently open socket.
+ */
+APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key,
+                                              apr_socket_t *sock);
+
+/**
+ * Set the data associated with the current socket.
+ * @param sock The currently open socket.
+ * @param data The user data to associate with the socket.
+ * @param key The key to associate with the data.
+ * @param cleanup The cleanup to call when the socket is destroyed.
+ */
+APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data,
+                                              const char *key,
+                                              apr_status_t (*cleanup)(void*));
+
+/**
+ * Send data over a network.
+ * @param sock The socket to send the data over.
+ * @param buf The buffer which contains the data to be sent. 
+ * @param len On entry, the number of bytes to send; on exit, the number
+ *            of bytes sent.
+ * @remark
+ * <PRE>
+ * This functions acts like a blocking write by default.  To change 
+ * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
+ * socket option.
+ *
+ * It is possible for both bytes to be sent and an error to be returned.
+ *
+ * APR_EINTR is never returned.
+ * </PRE>
+ */
+APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, 
+                                          apr_size_t *len);
+
+/**
+ * Send multiple buffers over a network.
+ * @param sock The socket to send the data over.
+ * @param vec The array of iovec structs containing the data to send 
+ * @param nvec The number of iovec structs in the array
+ * @param len Receives the number of bytes actually written
+ * @remark
+ * <PRE>
+ * This functions acts like a blocking write by default.  To change 
+ * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
+ * socket option.
+ * The number of bytes actually sent is stored in argument 4.
+ *
+ * It is possible for both bytes to be sent and an error to be returned.
+ *
+ * APR_EINTR is never returned.
+ * </PRE>
+ */
+APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, 
+                                           const struct iovec *vec,
+                                           apr_int32_t nvec, apr_size_t *len);
+
+/**
+ * @param sock The socket to send from
+ * @param where The apr_sockaddr_t describing where to send the data
+ * @param flags The flags to use
+ * @param buf  The data to send
+ * @param len  The length of the data to send
+ */
+APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, 
+                                            apr_sockaddr_t *where,
+                                            apr_int32_t flags, const char *buf, 
+                                            apr_size_t *len);
+
+/**
+ * Read data from a socket.  On success, the address of the peer from
+ * which the data was sent is copied into the @a from parameter, and the
+ * @a len parameter is updated to give the number of bytes written to
+ * @a buf.
+ *
+ * @param from Updated with the address from which the data was received
+ * @param sock The socket to use
+ * @param flags The flags to use
+ * @param buf  The buffer to use
+ * @param len  The length of the available buffer
+ */
+
+APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, 
+                                              apr_socket_t *sock,
+                                              apr_int32_t flags, char *buf, 
+                                              apr_size_t *len);
+ 
+#if APR_HAS_SENDFILE || defined(DOXYGEN)
+
+/**
+ * Send a file from an open file descriptor to a socket, along with 
+ * optional headers and trailers
+ * @param sock The socket to which we're writing
+ * @param file The open file from which to read
+ * @param hdtr A structure containing the headers and trailers to send
+ * @param offset Offset into the file where we should begin writing
+ * @param len (input)  - Number of bytes to send from the file 
+ *            (output) - Number of bytes actually sent, 
+ *                       including headers, file, and trailers
+ * @param flags APR flags that are mapped to OS specific flags
+ * @remark This functions acts like a blocking write by default.  To change 
+ *         this behavior, use apr_socket_timeout_set() or the
+ *         APR_SO_NONBLOCK socket option.
+ * The number of bytes actually sent is stored in the len parameter.
+ * The offset parameter is passed by reference for no reason; its
+ * value will never be modified by the apr_socket_sendfile() function.
+ */
+APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, 
+                                              apr_file_t *file,
+                                              apr_hdtr_t *hdtr,
+                                              apr_off_t *offset,
+                                              apr_size_t *len,
+                                              apr_int32_t flags);
+
+#endif /* APR_HAS_SENDFILE */
+
+/**
+ * Read data from a network.
+ * @param sock The socket to read the data from.
+ * @param buf The buffer to store the data in. 
+ * @param len On entry, the number of bytes to receive; on exit, the number
+ *            of bytes received.
+ * @remark
+ * <PRE>
+ * This functions acts like a blocking read by default.  To change 
+ * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
+ * socket option.
+ * The number of bytes actually received is stored in argument 3.
+ *
+ * It is possible for both bytes to be received and an APR_EOF or
+ * other error to be returned.
+ *
+ * APR_EINTR is never returned.
+ * </PRE>
+ */
+APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, 
+                                   char *buf, apr_size_t *len);
+
+/**
+ * Setup socket options for the specified socket
+ * @param sock The socket to set up.
+ * @param opt The option we would like to configure.  One of:
+ * <PRE>
+ *            APR_SO_DEBUG      --  turn on debugging information 
+ *            APR_SO_KEEPALIVE  --  keep connections active
+ *            APR_SO_LINGER     --  lingers on close if data is present
+ *            APR_SO_NONBLOCK   --  Turns blocking on/off for socket
+ *                                  When this option is enabled, use
+ *                                  the APR_STATUS_IS_EAGAIN() macro to
+ *                                  see if a send or receive function
+ *                                  could not transfer data without
+ *                                  blocking.
+ *            APR_SO_REUSEADDR  --  The rules used in validating addresses
+ *                                  supplied to bind should allow reuse
+ *                                  of local addresses.
+ *            APR_SO_SNDBUF     --  Set the SendBufferSize
+ *            APR_SO_RCVBUF     --  Set the ReceiveBufferSize
+ * </PRE>
+ * @param on Value for the option.
+ */
+APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock,
+                                             apr_int32_t opt, apr_int32_t on);
+
+/**
+ * Setup socket timeout for the specified socket
+ * @param sock The socket to set up.
+ * @param t Value for the timeout.
+ * <PRE>
+ *   t > 0  -- read and write calls return APR_TIMEUP if specified time
+ *             elapsess with no data read or written
+ *   t == 0 -- read and write calls never block
+ *   t < 0  -- read and write calls block
+ * </PRE>
+ */
+APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock,
+                                                 apr_interval_time_t t);
+
+/**
+ * Query socket options for the specified socket
+ * @param sock The socket to query
+ * @param opt The option we would like to query.  One of:
+ * <PRE>
+ *            APR_SO_DEBUG      --  turn on debugging information 
+ *            APR_SO_KEEPALIVE  --  keep connections active
+ *            APR_SO_LINGER     --  lingers on close if data is present
+ *            APR_SO_NONBLOCK   --  Turns blocking on/off for socket
+ *            APR_SO_REUSEADDR  --  The rules used in validating addresses
+ *                                  supplied to bind should allow reuse
+ *                                  of local addresses.
+ *            APR_SO_SNDBUF     --  Set the SendBufferSize
+ *            APR_SO_RCVBUF     --  Set the ReceiveBufferSize
+ *            APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
+ *                                  (Currently only used on Windows)
+ * </PRE>
+ * @param on Socket option returned on the call.
+ */
+APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, 
+                                             apr_int32_t opt, apr_int32_t *on);
+
+/**
+ * Query socket timeout for the specified socket
+ * @param sock The socket to query
+ * @param t Socket timeout returned from the query.
+ */
+APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, 
+                                                 apr_interval_time_t *t);
+
+/**
+ * Query the specified socket if at the OOB/Urgent data mark
+ * @param sock The socket to query
+ * @param atmark Is set to true if socket is at the OOB/urgent mark,
+ *               otherwise is set to false.
+ */
+APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, 
+                                            int *atmark);
+
+/**
+ * Return an address associated with a socket; either the address to
+ * which the socket is bound locally or the address of the peer
+ * to which the socket is connected.
+ * @param sa The returned apr_sockaddr_t.
+ * @param which Whether to retrieve the local or remote address
+ * @param sock The socket to use
+ */
+APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa,
+                                              apr_interface_e which,
+                                              apr_socket_t *sock);
+ 
+/**
+ * Return the IP address (in numeric address string format) in
+ * an APR socket address.  APR will allocate storage for the IP address 
+ * string from the pool of the apr_sockaddr_t.
+ * @param addr The IP address.
+ * @param sockaddr The socket address to reference.
+ */
+APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr, 
+                                              apr_sockaddr_t *sockaddr);
+
+/**
+ * Write the IP address (in numeric address string format) of the APR
+ * socket address @a sockaddr into the buffer @a buf (of size @a buflen).
+ * @param sockaddr The socket address to reference.
+ */
+APR_DECLARE(apr_status_t) apr_sockaddr_ip_getbuf(char *buf, apr_size_t buflen,
+                                                 apr_sockaddr_t *sockaddr);
+
+/**
+ * See if the IP addresses in two APR socket addresses are
+ * equivalent.  Appropriate logic is present for comparing
+ * IPv4-mapped IPv6 addresses with IPv4 addresses.
+ *
+ * @param addr1 One of the APR socket addresses.
+ * @param addr2 The other APR socket address.
+ * @remark The return value will be non-zero if the addresses
+ * are equivalent.
+ */
+APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1,
+                                    const apr_sockaddr_t *addr2);
+
+/**
+ * See if the IP address in an APR socket address refers to the wildcard
+ * address for the protocol family (e.g., INADDR_ANY for IPv4).
+ *
+ * @param addr The APR socket address to examine.
+ * @remark The return value will be non-zero if the address is
+ * initialized and is the wildcard address.
+ */
+APR_DECLARE(int) apr_sockaddr_is_wildcard(const apr_sockaddr_t *addr);
+
+/**
+* Return the type of the socket.
+* @param sock The socket to query.
+* @param type The returned type (e.g., SOCK_STREAM).
+*/
+APR_DECLARE(apr_status_t) apr_socket_type_get(apr_socket_t *sock,
+                                              int *type);
+ 
+/**
+ * Given an apr_sockaddr_t and a service name, set the port for the service
+ * @param sockaddr The apr_sockaddr_t that will have its port set
+ * @param servname The name of the service you wish to use
+ */
+APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, 
+                                            const char *servname);
+/**
+ * Build an ip-subnet representation from an IP address and optional netmask or
+ * number-of-bits.
+ * @param ipsub The new ip-subnet representation
+ * @param ipstr The input IP address string
+ * @param mask_or_numbits The input netmask or number-of-bits string, or NULL
+ * @param p The pool to allocate from
+ */
+APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, 
+                                              const char *ipstr, 
+                                              const char *mask_or_numbits, 
+                                              apr_pool_t *p);
+
+/**
+ * Test the IP address in an apr_sockaddr_t against a pre-built ip-subnet
+ * representation.
+ * @param ipsub The ip-subnet representation
+ * @param sa The socket address to test
+ * @return non-zero if the socket address is within the subnet, 0 otherwise
+ */
+APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa);
+
+#if APR_HAS_SO_ACCEPTFILTER || defined(DOXYGEN)
+/**
+ * Set an OS level accept filter.
+ * @param sock The socket to put the accept filter on.
+ * @param name The accept filter
+ * @param args Any extra args to the accept filter.  Passing NULL here removes
+ *             the accept filter. 
+ * @bug name and args should have been declared as const char *, as they are in
+ * APR 2.0
+ */
+apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name,
+                                      char *args);
+#endif
+
+/**
+ * Return the protocol of the socket.
+ * @param sock The socket to query.
+ * @param protocol The returned protocol (e.g., APR_PROTO_TCP).
+ */
+APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock,
+                                                  int *protocol);
+
+/**
+ * Get the pool used by the socket.
+ */
+APR_POOL_DECLARE_ACCESSOR(socket);
+
+/**
+ * Set a socket to be inherited by child processes.
+ */
+APR_DECLARE_INHERIT_SET(socket);
+
+/**
+ * Unset a socket from being inherited by child processes.
+ */
+APR_DECLARE_INHERIT_UNSET(socket);
+
+/**
+ * @defgroup apr_mcast IP Multicast
+ * @{
+ */
+
+/**
+ * Join a Multicast Group
+ * @param sock The socket to join a multicast group
+ * @param join The address of the multicast group to join
+ * @param iface Address of the interface to use.  If NULL is passed, the 
+ *              default multicast interface will be used. (OS Dependent)
+ * @param source Source Address to accept transmissions from (non-NULL 
+ *               implies Source-Specific Multicast)
+ */
+APR_DECLARE(apr_status_t) apr_mcast_join(apr_socket_t *sock,
+                                         apr_sockaddr_t *join,
+                                         apr_sockaddr_t *iface,
+                                         apr_sockaddr_t *source);
+
+/**
+ * Leave a Multicast Group.  All arguments must be the same as
+ * apr_mcast_join.
+ * @param sock The socket to leave a multicast group
+ * @param addr The address of the multicast group to leave
+ * @param iface Address of the interface to use.  If NULL is passed, the 
+ *              default multicast interface will be used. (OS Dependent)
+ * @param source Source Address to accept transmissions from (non-NULL 
+ *               implies Source-Specific Multicast)
+ */
+APR_DECLARE(apr_status_t) apr_mcast_leave(apr_socket_t *sock,
+                                          apr_sockaddr_t *addr,
+                                          apr_sockaddr_t *iface,
+                                          apr_sockaddr_t *source);
+
+/**
+ * Set the Multicast Time to Live (ttl) for a multicast transmission.
+ * @param sock The socket to set the multicast ttl
+ * @param ttl Time to live to Assign. 0-255, default=1
+ * @remark If the TTL is 0, packets will only be seen by sockets on 
+ * the local machine, and only when multicast loopback is enabled.
+ */
+APR_DECLARE(apr_status_t) apr_mcast_hops(apr_socket_t *sock,
+                                         apr_byte_t ttl);
+
+/**
+ * Toggle IP Multicast Loopback
+ * @param sock The socket to set multicast loopback
+ * @param opt 0=disable, 1=enable
+ */
+APR_DECLARE(apr_status_t) apr_mcast_loopback(apr_socket_t *sock,
+                                             apr_byte_t opt);
+
+
+/**
+ * Set the Interface to be used for outgoing Multicast Transmissions.
+ * @param sock The socket to set the multicast interface on
+ * @param iface Address of the interface to use for Multicast
+ */
+APR_DECLARE(apr_status_t) apr_mcast_interface(apr_socket_t *sock,
+                                              apr_sockaddr_t *iface);
+
+/** @} */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_NETWORK_IO_H */
+

Deleted: vendor/apache/apr/1.5.2/include/apr_poll.h
===================================================================
--- vendor/apache/apr/dist/include/apr_poll.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_poll.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,415 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_POLL_H
-#define APR_POLL_H
-/**
- * @file apr_poll.h
- * @brief APR Poll interface
- */
-#include "apr.h"
-#include "apr_pools.h"
-#include "apr_errno.h"
-#include "apr_inherit.h" 
-#include "apr_file_io.h" 
-#include "apr_network_io.h" 
-
-#if APR_HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_poll Poll Routines
- * @ingroup APR 
- * @{
- */
-
-/**
- * Poll options
- */
-#define APR_POLLIN    0x001     /**< Can read without blocking */
-#define APR_POLLPRI   0x002     /**< Priority data available */
-#define APR_POLLOUT   0x004     /**< Can write without blocking */
-#define APR_POLLERR   0x010     /**< Pending error */
-#define APR_POLLHUP   0x020     /**< Hangup occurred */
-#define APR_POLLNVAL  0x040     /**< Descriptor invalid */
-
-/**
- * Pollset Flags
- */
-#define APR_POLLSET_THREADSAFE 0x001 /**< Adding or removing a descriptor is
-                                      * thread-safe
-                                      */
-#define APR_POLLSET_NOCOPY     0x002 /**< Descriptors passed to apr_pollset_add()
-                                      * are not copied
-                                      */
-#define APR_POLLSET_WAKEABLE   0x004 /**< Poll operations are interruptable by
-                                      * apr_pollset_wakeup()
-                                      */
-#define APR_POLLSET_NODEFAULT  0x010 /**< Do not try to use the default method if
-                                      * the specified non-default method cannot be
-                                      * used
-                                      */
-
-/**
- * Pollset Methods
- */
-typedef enum {
-    APR_POLLSET_DEFAULT,        /**< Platform default poll method */
-    APR_POLLSET_SELECT,         /**< Poll uses select method */
-    APR_POLLSET_KQUEUE,         /**< Poll uses kqueue method */
-    APR_POLLSET_PORT,           /**< Poll uses Solaris event port method */
-    APR_POLLSET_EPOLL,          /**< Poll uses epoll method */
-    APR_POLLSET_POLL            /**< Poll uses poll method */
-} apr_pollset_method_e;
-
-/** Used in apr_pollfd_t to determine what the apr_descriptor is */
-typedef enum { 
-    APR_NO_DESC,                /**< nothing here */
-    APR_POLL_SOCKET,            /**< descriptor refers to a socket */
-    APR_POLL_FILE,              /**< descriptor refers to a file */
-    APR_POLL_LASTDESC           /**< @deprecated descriptor is the last one in the list */
-} apr_datatype_e ;
-
-/** Union of either an APR file or socket. */
-typedef union {
-    apr_file_t *f;              /**< file */
-    apr_socket_t *s;            /**< socket */
-} apr_descriptor;
-
-/** @see apr_pollfd_t */
-typedef struct apr_pollfd_t apr_pollfd_t;
-
-/** Poll descriptor set. */
-struct apr_pollfd_t {
-    apr_pool_t *p;              /**< associated pool */
-    apr_datatype_e desc_type;   /**< descriptor type */
-    apr_int16_t reqevents;      /**< requested events */
-    apr_int16_t rtnevents;      /**< returned events */
-    apr_descriptor desc;        /**< @see apr_descriptor */
-    void *client_data;          /**< allows app to associate context */
-};
-
-
-/* General-purpose poll API for arbitrarily large numbers of
- * file descriptors
- */
-
-/** Opaque structure used for pollset API */
-typedef struct apr_pollset_t apr_pollset_t;
-
-/**
- * Set up a pollset object
- * @param pollset  The pointer in which to return the newly created object 
- * @param size The maximum number of descriptors that this pollset can hold
- * @param p The pool from which to allocate the pollset
- * @param flags Optional flags to modify the operation of the pollset.
- *
- * @remark If flags contains APR_POLLSET_THREADSAFE, then a pollset is
- *         created on which it is safe to make concurrent calls to
- *         apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll()
- *         from separate threads.  This feature is only supported on some
- *         platforms; the apr_pollset_create() call will fail with
- *         APR_ENOTIMPL on platforms where it is not supported.
- * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollset is
- *         created with an additional internal pipe object used for the
- *         apr_pollset_wakeup() call. The actual size of pollset is
- *         in that case size + 1. This feature is only supported on some
- *         platforms; the apr_pollset_create() call will fail with
- *         APR_ENOTIMPL on platforms where it is not supported.
- * @remark If flags contains APR_POLLSET_NOCOPY, then the apr_pollfd_t
- *         structures passed to apr_pollset_add() are not copied and
- *         must have a lifetime at least as long as the pollset.
- * @remark Some poll methods (including APR_POLLSET_KQUEUE,
- *         APR_POLLSET_PORT, and APR_POLLSET_EPOLL) do not have a
- *         fixed limit on the size of the pollset. For these methods,
- *         the size parameter controls the maximum number of
- *         descriptors that will be returned by a single call to
- *         apr_pollset_poll().
- */
-APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset,
-                                             apr_uint32_t size,
-                                             apr_pool_t *p,
-                                             apr_uint32_t flags);
-
-/**
- * Set up a pollset object
- * @param pollset  The pointer in which to return the newly created object 
- * @param size The maximum number of descriptors that this pollset can hold
- * @param p The pool from which to allocate the pollset
- * @param flags Optional flags to modify the operation of the pollset.
- * @param method Poll method to use. See #apr_pollset_method_e.  If this
- *         method cannot be used, the default method will be used unless the
- *         APR_POLLSET_NODEFAULT flag has been specified.
- *
- * @remark If flags contains APR_POLLSET_THREADSAFE, then a pollset is
- *         created on which it is safe to make concurrent calls to
- *         apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll()
- *         from separate threads.  This feature is only supported on some
- *         platforms; the apr_pollset_create_ex() call will fail with
- *         APR_ENOTIMPL on platforms where it is not supported.
- * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollset is
- *         created with additional internal pipe object used for the
- *         apr_pollset_wakeup() call. The actual size of pollset is
- *         in that case size + 1. This feature is only supported on some
- *         platforms; the apr_pollset_create_ex() call will fail with
- *         APR_ENOTIMPL on platforms where it is not supported.
- * @remark If flags contains APR_POLLSET_NOCOPY, then the apr_pollfd_t
- *         structures passed to apr_pollset_add() are not copied and
- *         must have a lifetime at least as long as the pollset.
- * @remark Some poll methods (including APR_POLLSET_KQUEUE,
- *         APR_POLLSET_PORT, and APR_POLLSET_EPOLL) do not have a
- *         fixed limit on the size of the pollset. For these methods,
- *         the size parameter controls the maximum number of
- *         descriptors that will be returned by a single call to
- *         apr_pollset_poll().
- */
-APR_DECLARE(apr_status_t) apr_pollset_create_ex(apr_pollset_t **pollset,
-                                                apr_uint32_t size,
-                                                apr_pool_t *p,
-                                                apr_uint32_t flags,
-                                                apr_pollset_method_e method);
-
-/**
- * Destroy a pollset object
- * @param pollset The pollset to destroy
- */
-APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset);
-
-/**
- * Add a socket or file descriptor to a pollset
- * @param pollset The pollset to which to add the descriptor
- * @param descriptor The descriptor to add
- * @remark If you set client_data in the descriptor, that value
- *         will be returned in the client_data field whenever this
- *         descriptor is signalled in apr_pollset_poll().
- * @remark If the pollset has been created with APR_POLLSET_THREADSAFE
- *         and thread T1 is blocked in a call to apr_pollset_poll() for
- *         this same pollset that is being modified via apr_pollset_add()
- *         in thread T2, the currently executing apr_pollset_poll() call in
- *         T1 will either: (1) automatically include the newly added descriptor
- *         in the set of descriptors it is watching or (2) return immediately
- *         with APR_EINTR.  Option (1) is recommended, but option (2) is
- *         allowed for implementations where option (1) is impossible
- *         or impractical.
- * @remark If the pollset has been created with APR_POLLSET_NOCOPY, the 
- *         apr_pollfd_t structure referenced by descriptor will not be copied
- *         and must have a lifetime at least as long as the pollset.
- * @remark Do not add the same socket or file descriptor to the same pollset
- *         multiple times, even if the requested events differ for the 
- *         different calls to apr_pollset_add().  If the events of interest
- *         for a descriptor change, you must first remove the descriptor 
- *         from the pollset with apr_pollset_remove(), then add it again 
- *         specifying all requested events.
- */
-APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset,
-                                          const apr_pollfd_t *descriptor);
-
-/**
- * Remove a descriptor from a pollset
- * @param pollset The pollset from which to remove the descriptor
- * @param descriptor The descriptor to remove
- * @remark If the pollset has been created with APR_POLLSET_THREADSAFE
- *         and thread T1 is blocked in a call to apr_pollset_poll() for
- *         this same pollset that is being modified via apr_pollset_remove()
- *         in thread T2, the currently executing apr_pollset_poll() call in
- *         T1 will either: (1) automatically exclude the newly added descriptor
- *         in the set of descriptors it is watching or (2) return immediately
- *         with APR_EINTR.  Option (1) is recommended, but option (2) is
- *         allowed for implementations where option (1) is impossible
- *         or impractical.
- * @remark apr_pollset_remove() cannot be used to remove a subset of requested
- *         events for a descriptor.  The reqevents field in the apr_pollfd_t
- *         parameter must contain the same value when removing as when adding.
- */
-APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset,
-                                             const apr_pollfd_t *descriptor);
-
-/**
- * Block for activity on the descriptor(s) in a pollset
- * @param pollset The pollset to use
- * @param timeout The amount of time in microseconds to wait.  This is a
- *                maximum, not a minimum.  If a descriptor is signalled, the
- *                function will return before this time.  If timeout is
- *                negative, the function will block until a descriptor is
- *                signalled or until apr_pollset_wakeup() has been called.
- * @param num Number of signalled descriptors (output parameter)
- * @param descriptors Array of signalled descriptors (output parameter)
- * @remark APR_EINTR will be returned if the pollset has been created with
- *         APR_POLLSET_WAKEABLE, apr_pollset_wakeup() has been called while
- *         waiting for activity, and there were no signalled descriptors at the
- *         time of the wakeup call.
- * @remark Multiple signalled conditions for the same descriptor may be reported
- *         in one or more returned apr_pollfd_t structures, depending on the
- *         implementation.
- * @bug With versions 1.4.2 and prior on Windows, a call with no descriptors
- *      and timeout will return immediately with the wrong error code.
- */
-APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset,
-                                           apr_interval_time_t timeout,
-                                           apr_int32_t *num,
-                                           const apr_pollfd_t **descriptors);
-
-/**
- * Interrupt the blocked apr_pollset_poll() call.
- * @param pollset The pollset to use
- * @remark If the pollset was not created with APR_POLLSET_WAKEABLE the
- *         return value is APR_EINIT.
- */
-APR_DECLARE(apr_status_t) apr_pollset_wakeup(apr_pollset_t *pollset);
-
-/**
- * Poll the descriptors in the poll structure
- * @param aprset The poll structure we will be using. 
- * @param numsock The number of descriptors we are polling
- * @param nsds The number of descriptors signalled (output parameter)
- * @param timeout The amount of time in microseconds to wait.  This is a
- *                maximum, not a minimum.  If a descriptor is signalled, the
- *                function will return before this time.  If timeout is
- *                negative, the function will block until a descriptor is
- *                signalled or until apr_pollset_wakeup() has been called.
- * @remark The number of descriptors signalled is returned in the third argument. 
- *         This is a blocking call, and it will not return until either a 
- *         descriptor has been signalled or the timeout has expired. 
- * @remark The rtnevents field in the apr_pollfd_t array will only be filled-
- *         in if the return value is APR_SUCCESS.
- * @bug With versions 1.4.2 and prior on Windows, a call with no descriptors
- *      and timeout will return immediately with the wrong error code.
- */
-APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t numsock,
-                                   apr_int32_t *nsds, 
-                                   apr_interval_time_t timeout);
-
-/**
- * Return a printable representation of the pollset method.
- * @param pollset The pollset to use
- */
-APR_DECLARE(const char *) apr_pollset_method_name(apr_pollset_t *pollset);
-
-/**
- * Return a printable representation of the default pollset method
- * (APR_POLLSET_DEFAULT).
- */
-APR_DECLARE(const char *) apr_poll_method_defname(void);
-
-/** Opaque structure used for pollset API */
-typedef struct apr_pollcb_t apr_pollcb_t;
-
-/**
- * Set up a pollcb object
- * @param pollcb  The pointer in which to return the newly created object 
- * @param size The maximum number of descriptors that a single _poll can return.
- * @param p The pool from which to allocate the pollcb
- * @param flags Optional flags to modify the operation of the pollcb.
- *
- * @remark Pollcb is only supported on some platforms; the apr_pollcb_create()
- * call will fail with APR_ENOTIMPL on platforms where it is not supported.
- */
-APR_DECLARE(apr_status_t) apr_pollcb_create(apr_pollcb_t **pollcb,
-                                            apr_uint32_t size,
-                                            apr_pool_t *p,
-                                            apr_uint32_t flags);
-
-/**
- * Set up a pollcb object
- * @param pollcb  The pointer in which to return the newly created object 
- * @param size The maximum number of descriptors that a single _poll can return.
- * @param p The pool from which to allocate the pollcb
- * @param flags Optional flags to modify the operation of the pollcb.
- * @param method Poll method to use. See #apr_pollset_method_e.  If this
- *         method cannot be used, the default method will be used unless the
- *         APR_POLLSET_NODEFAULT flag has been specified.
- *
- * @remark Pollcb is only supported on some platforms; the apr_pollcb_create_ex()
- * call will fail with APR_ENOTIMPL on platforms where it is not supported.
- */
-APR_DECLARE(apr_status_t) apr_pollcb_create_ex(apr_pollcb_t **pollcb,
-                                               apr_uint32_t size,
-                                               apr_pool_t *p,
-                                               apr_uint32_t flags,
-                                               apr_pollset_method_e method);
-
-/**
- * Add a socket or file descriptor to a pollcb
- * @param pollcb The pollcb to which to add the descriptor
- * @param descriptor The descriptor to add
- * @remark If you set client_data in the descriptor, that value will be
- *         returned in the client_data field whenever this descriptor is
- *         signalled in apr_pollcb_poll().
- * @remark Unlike the apr_pollset API, the descriptor is not copied, and users 
- *         must retain the memory used by descriptor, as the same pointer will
- *         be returned to them from apr_pollcb_poll.
- * @remark Do not add the same socket or file descriptor to the same pollcb
- *         multiple times, even if the requested events differ for the 
- *         different calls to apr_pollcb_add().  If the events of interest
- *         for a descriptor change, you must first remove the descriptor 
- *         from the pollcb with apr_pollcb_remove(), then add it again 
- *         specifying all requested events.
- */
-APR_DECLARE(apr_status_t) apr_pollcb_add(apr_pollcb_t *pollcb,
-                                         apr_pollfd_t *descriptor);
-/**
- * Remove a descriptor from a pollcb
- * @param pollcb The pollcb from which to remove the descriptor
- * @param descriptor The descriptor to remove
- * @remark apr_pollcb_remove() cannot be used to remove a subset of requested
- *         events for a descriptor.  The reqevents field in the apr_pollfd_t
- *         parameter must contain the same value when removing as when adding.
- */
-APR_DECLARE(apr_status_t) apr_pollcb_remove(apr_pollcb_t *pollcb,
-                                            apr_pollfd_t *descriptor);
-
-/** Function prototype for pollcb handlers 
- * @param baton Opaque baton passed into apr_pollcb_poll()
- * @param descriptor Contains the notification for an active descriptor, 
- *                   the rtnevents member contains what events were triggered
- *                   for this descriptor.
- */
-typedef apr_status_t (*apr_pollcb_cb_t)(void *baton, apr_pollfd_t *descriptor);
-
-/**
- * Block for activity on the descriptor(s) in a pollcb
- * @param pollcb The pollcb to use
- * @param timeout The amount of time in microseconds to wait.  This is a
- *                maximum, not a minimum.  If a descriptor is signalled, the
- *                function will return before this time.  If timeout is
- *                negative, the function will block until a descriptor is
- *                signalled.
- * @param func Callback function to call for each active descriptor.
- * @param baton Opaque baton passed to the callback function.
- * @remark Multiple signalled conditions for the same descriptor may be reported
- *         in one or more calls to the callback function, depending on the
- *         implementation.
- * @bug With versions 1.4.2 and prior on Windows, a call with no descriptors
- *      and timeout will return immediately with the wrong error code.
- */
-APR_DECLARE(apr_status_t) apr_pollcb_poll(apr_pollcb_t *pollcb,
-                                          apr_interval_time_t timeout,
-                                          apr_pollcb_cb_t func,
-                                          void *baton); 
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_POLL_H */
-

Copied: vendor/apache/apr/1.5.2/include/apr_poll.h (from rev 9273, vendor/apache/apr/dist/include/apr_poll.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_poll.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_poll.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,417 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_POLL_H
+#define APR_POLL_H
+/**
+ * @file apr_poll.h
+ * @brief APR Poll interface
+ */
+#include "apr.h"
+#include "apr_pools.h"
+#include "apr_errno.h"
+#include "apr_inherit.h" 
+#include "apr_file_io.h" 
+#include "apr_network_io.h" 
+
+#if APR_HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_poll Poll Routines
+ * @ingroup APR 
+ * @{
+ */
+
+/**
+ * @defgroup pollopts Poll options
+ * @ingroup apr_poll
+ * @{
+ */
+#define APR_POLLIN    0x001     /**< Can read without blocking */
+#define APR_POLLPRI   0x002     /**< Priority data available */
+#define APR_POLLOUT   0x004     /**< Can write without blocking */
+#define APR_POLLERR   0x010     /**< Pending error */
+#define APR_POLLHUP   0x020     /**< Hangup occurred */
+#define APR_POLLNVAL  0x040     /**< Descriptor invalid */
+/** @} */
+
+/**
+ * @defgroup pollflags Pollset Flags
+ * @ingroup apr_poll
+ * @{
+ */
+#define APR_POLLSET_THREADSAFE 0x001 /**< Adding or removing a descriptor is
+                                      * thread-safe
+                                      */
+#define APR_POLLSET_NOCOPY     0x002 /**< Descriptors passed to apr_pollset_add()
+                                      * are not copied
+                                      */
+#define APR_POLLSET_WAKEABLE   0x004 /**< Poll operations are interruptable by
+                                      * apr_pollset_wakeup()
+                                      */
+#define APR_POLLSET_NODEFAULT  0x010 /**< Do not try to use the default method if
+                                      * the specified non-default method cannot be
+                                      * used
+                                      */
+/** @} */
+
+/**
+ * Pollset Methods
+ */
+typedef enum {
+    APR_POLLSET_DEFAULT,        /**< Platform default poll method */
+    APR_POLLSET_SELECT,         /**< Poll uses select method */
+    APR_POLLSET_KQUEUE,         /**< Poll uses kqueue method */
+    APR_POLLSET_PORT,           /**< Poll uses Solaris event port method */
+    APR_POLLSET_EPOLL,          /**< Poll uses epoll method */
+    APR_POLLSET_POLL,           /**< Poll uses poll method */
+    APR_POLLSET_AIO_MSGQ        /**< Poll uses z/OS asio method */
+} apr_pollset_method_e;
+
+/** Used in apr_pollfd_t to determine what the apr_descriptor is */
+typedef enum { 
+    APR_NO_DESC,                /**< nothing here */
+    APR_POLL_SOCKET,            /**< descriptor refers to a socket */
+    APR_POLL_FILE,              /**< descriptor refers to a file */
+    APR_POLL_LASTDESC           /**< @deprecated descriptor is the last one in the list */
+} apr_datatype_e ;
+
+/** Union of either an APR file or socket. */
+typedef union {
+    apr_file_t *f;              /**< file */
+    apr_socket_t *s;            /**< socket */
+} apr_descriptor;
+
+/** @see apr_pollfd_t */
+typedef struct apr_pollfd_t apr_pollfd_t;
+
+/** Poll descriptor set. */
+struct apr_pollfd_t {
+    apr_pool_t *p;              /**< associated pool */
+    apr_datatype_e desc_type;   /**< descriptor type */
+    apr_int16_t reqevents;      /**< requested events */
+    apr_int16_t rtnevents;      /**< returned events */
+    apr_descriptor desc;        /**< @see apr_descriptor */
+    void *client_data;          /**< allows app to associate context */
+};
+
+
+/* General-purpose poll API for arbitrarily large numbers of
+ * file descriptors
+ */
+
+/** Opaque structure used for pollset API */
+typedef struct apr_pollset_t apr_pollset_t;
+
+/**
+ * Set up a pollset object
+ * @param pollset  The pointer in which to return the newly created object 
+ * @param size The maximum number of descriptors that this pollset can hold
+ * @param p The pool from which to allocate the pollset
+ * @param flags Optional flags to modify the operation of the pollset.
+ *
+ * @remark If flags contains APR_POLLSET_THREADSAFE, then a pollset is
+ *         created on which it is safe to make concurrent calls to
+ *         apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll()
+ *         from separate threads.  This feature is only supported on some
+ *         platforms; the apr_pollset_create() call will fail with
+ *         APR_ENOTIMPL on platforms where it is not supported.
+ * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollset is
+ *         created with an additional internal pipe object used for the
+ *         apr_pollset_wakeup() call. The actual size of pollset is
+ *         in that case @a size + 1. This feature is only supported on some
+ *         platforms; the apr_pollset_create() call will fail with
+ *         APR_ENOTIMPL on platforms where it is not supported.
+ * @remark If flags contains APR_POLLSET_NOCOPY, then the apr_pollfd_t
+ *         structures passed to apr_pollset_add() are not copied and
+ *         must have a lifetime at least as long as the pollset.
+ * @remark Some poll methods (including APR_POLLSET_KQUEUE,
+ *         APR_POLLSET_PORT, and APR_POLLSET_EPOLL) do not have a
+ *         fixed limit on the size of the pollset. For these methods,
+ *         the size parameter controls the maximum number of
+ *         descriptors that will be returned by a single call to
+ *         apr_pollset_poll().
+ */
+APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset,
+                                             apr_uint32_t size,
+                                             apr_pool_t *p,
+                                             apr_uint32_t flags);
+
+/**
+ * Set up a pollset object
+ * @param pollset  The pointer in which to return the newly created object 
+ * @param size The maximum number of descriptors that this pollset can hold
+ * @param p The pool from which to allocate the pollset
+ * @param flags Optional flags to modify the operation of the pollset.
+ * @param method Poll method to use. See #apr_pollset_method_e.  If this
+ *         method cannot be used, the default method will be used unless the
+ *         APR_POLLSET_NODEFAULT flag has been specified.
+ *
+ * @remark If flags contains APR_POLLSET_THREADSAFE, then a pollset is
+ *         created on which it is safe to make concurrent calls to
+ *         apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll()
+ *         from separate threads.  This feature is only supported on some
+ *         platforms; the apr_pollset_create_ex() call will fail with
+ *         APR_ENOTIMPL on platforms where it is not supported.
+ * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollset is
+ *         created with additional internal pipe object used for the
+ *         apr_pollset_wakeup() call. The actual size of pollset is
+ *         in that case size + 1. This feature is only supported on some
+ *         platforms; the apr_pollset_create_ex() call will fail with
+ *         APR_ENOTIMPL on platforms where it is not supported.
+ * @remark If flags contains APR_POLLSET_NOCOPY, then the apr_pollfd_t
+ *         structures passed to apr_pollset_add() are not copied and
+ *         must have a lifetime at least as long as the pollset.
+ * @remark Some poll methods (including APR_POLLSET_KQUEUE,
+ *         APR_POLLSET_PORT, and APR_POLLSET_EPOLL) do not have a
+ *         fixed limit on the size of the pollset. For these methods,
+ *         the size parameter controls the maximum number of
+ *         descriptors that will be returned by a single call to
+ *         apr_pollset_poll().
+ */
+APR_DECLARE(apr_status_t) apr_pollset_create_ex(apr_pollset_t **pollset,
+                                                apr_uint32_t size,
+                                                apr_pool_t *p,
+                                                apr_uint32_t flags,
+                                                apr_pollset_method_e method);
+
+/**
+ * Destroy a pollset object
+ * @param pollset The pollset to destroy
+ */
+APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset);
+
+/**
+ * Add a socket or file descriptor to a pollset
+ * @param pollset The pollset to which to add the descriptor
+ * @param descriptor The descriptor to add
+ * @remark If you set client_data in the descriptor, that value
+ *         will be returned in the client_data field whenever this
+ *         descriptor is signalled in apr_pollset_poll().
+ * @remark If the pollset has been created with APR_POLLSET_THREADSAFE
+ *         and thread T1 is blocked in a call to apr_pollset_poll() for
+ *         this same pollset that is being modified via apr_pollset_add()
+ *         in thread T2, the currently executing apr_pollset_poll() call in
+ *         T1 will either: (1) automatically include the newly added descriptor
+ *         in the set of descriptors it is watching or (2) return immediately
+ *         with APR_EINTR.  Option (1) is recommended, but option (2) is
+ *         allowed for implementations where option (1) is impossible
+ *         or impractical.
+ * @remark If the pollset has been created with APR_POLLSET_NOCOPY, the 
+ *         apr_pollfd_t structure referenced by descriptor will not be copied
+ *         and must have a lifetime at least as long as the pollset.
+ * @remark Do not add the same socket or file descriptor to the same pollset
+ *         multiple times, even if the requested events differ for the 
+ *         different calls to apr_pollset_add().  If the events of interest
+ *         for a descriptor change, you must first remove the descriptor 
+ *         from the pollset with apr_pollset_remove(), then add it again 
+ *         specifying all requested events.
+ */
+APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset,
+                                          const apr_pollfd_t *descriptor);
+
+/**
+ * Remove a descriptor from a pollset
+ * @param pollset The pollset from which to remove the descriptor
+ * @param descriptor The descriptor to remove
+ * @remark If the descriptor is not found, APR_NOTFOUND is returned.
+ * @remark If the pollset has been created with APR_POLLSET_THREADSAFE
+ *         and thread T1 is blocked in a call to apr_pollset_poll() for
+ *         this same pollset that is being modified via apr_pollset_remove()
+ *         in thread T2, the currently executing apr_pollset_poll() call in
+ *         T1 will either: (1) automatically exclude the newly added descriptor
+ *         in the set of descriptors it is watching or (2) return immediately
+ *         with APR_EINTR.  Option (1) is recommended, but option (2) is
+ *         allowed for implementations where option (1) is impossible
+ *         or impractical.
+ * @remark apr_pollset_remove() cannot be used to remove a subset of requested
+ *         events for a descriptor.  The reqevents field in the apr_pollfd_t
+ *         parameter must contain the same value when removing as when adding.
+ */
+APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset,
+                                             const apr_pollfd_t *descriptor);
+
+/**
+ * Block for activity on the descriptor(s) in a pollset
+ * @param pollset The pollset to use
+ * @param timeout The amount of time in microseconds to wait.  This is a
+ *                maximum, not a minimum.  If a descriptor is signalled, the
+ *                function will return before this time.  If timeout is
+ *                negative, the function will block until a descriptor is
+ *                signalled or until apr_pollset_wakeup() has been called.
+ * @param num Number of signalled descriptors (output parameter)
+ * @param descriptors Array of signalled descriptors (output parameter)
+ * @remark APR_EINTR will be returned if the pollset has been created with
+ *         APR_POLLSET_WAKEABLE, apr_pollset_wakeup() has been called while
+ *         waiting for activity, and there were no signalled descriptors at the
+ *         time of the wakeup call.
+ * @remark Multiple signalled conditions for the same descriptor may be reported
+ *         in one or more returned apr_pollfd_t structures, depending on the
+ *         implementation.
+ */
+APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset,
+                                           apr_interval_time_t timeout,
+                                           apr_int32_t *num,
+                                           const apr_pollfd_t **descriptors);
+
+/**
+ * Interrupt the blocked apr_pollset_poll() call.
+ * @param pollset The pollset to use
+ * @remark If the pollset was not created with APR_POLLSET_WAKEABLE the
+ *         return value is APR_EINIT.
+ */
+APR_DECLARE(apr_status_t) apr_pollset_wakeup(apr_pollset_t *pollset);
+
+/**
+ * Poll the descriptors in the poll structure
+ * @param aprset The poll structure we will be using. 
+ * @param numsock The number of descriptors we are polling
+ * @param nsds The number of descriptors signalled (output parameter)
+ * @param timeout The amount of time in microseconds to wait.  This is a
+ *                maximum, not a minimum.  If a descriptor is signalled, the
+ *                function will return before this time.  If timeout is
+ *                negative, the function will block until a descriptor is
+ *                signalled or until apr_pollset_wakeup() has been called.
+ * @remark The number of descriptors signalled is returned in the third argument. 
+ *         This is a blocking call, and it will not return until either a 
+ *         descriptor has been signalled or the timeout has expired. 
+ * @remark The rtnevents field in the apr_pollfd_t array will only be filled-
+ *         in if the return value is APR_SUCCESS.
+ */
+APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t numsock,
+                                   apr_int32_t *nsds, 
+                                   apr_interval_time_t timeout);
+
+/**
+ * Return a printable representation of the pollset method.
+ * @param pollset The pollset to use
+ */
+APR_DECLARE(const char *) apr_pollset_method_name(apr_pollset_t *pollset);
+
+/**
+ * Return a printable representation of the default pollset method
+ * (APR_POLLSET_DEFAULT).
+ */
+APR_DECLARE(const char *) apr_poll_method_defname(void);
+
+/** Opaque structure used for pollcb API */
+typedef struct apr_pollcb_t apr_pollcb_t;
+
+/**
+ * Set up a pollcb object
+ * @param pollcb  The pointer in which to return the newly created object 
+ * @param size The maximum number of descriptors that a single _poll can return.
+ * @param p The pool from which to allocate the pollcb
+ * @param flags Optional flags to modify the operation of the pollcb.
+ *
+ * @remark Pollcb is only supported on some platforms; the apr_pollcb_create()
+ * call will fail with APR_ENOTIMPL on platforms where it is not supported.
+ */
+APR_DECLARE(apr_status_t) apr_pollcb_create(apr_pollcb_t **pollcb,
+                                            apr_uint32_t size,
+                                            apr_pool_t *p,
+                                            apr_uint32_t flags);
+
+/**
+ * Set up a pollcb object
+ * @param pollcb  The pointer in which to return the newly created object 
+ * @param size The maximum number of descriptors that a single _poll can return.
+ * @param p The pool from which to allocate the pollcb
+ * @param flags Optional flags to modify the operation of the pollcb.
+ * @param method Poll method to use. See #apr_pollset_method_e.  If this
+ *         method cannot be used, the default method will be used unless the
+ *         APR_POLLSET_NODEFAULT flag has been specified.
+ *
+ * @remark Pollcb is only supported on some platforms; the apr_pollcb_create_ex()
+ * call will fail with APR_ENOTIMPL on platforms where it is not supported.
+ */
+APR_DECLARE(apr_status_t) apr_pollcb_create_ex(apr_pollcb_t **pollcb,
+                                               apr_uint32_t size,
+                                               apr_pool_t *p,
+                                               apr_uint32_t flags,
+                                               apr_pollset_method_e method);
+
+/**
+ * Add a socket or file descriptor to a pollcb
+ * @param pollcb The pollcb to which to add the descriptor
+ * @param descriptor The descriptor to add
+ * @remark If you set client_data in the descriptor, that value will be
+ *         returned in the client_data field whenever this descriptor is
+ *         signalled in apr_pollcb_poll().
+ * @remark Unlike the apr_pollset API, the descriptor is not copied, and users 
+ *         must retain the memory used by descriptor, as the same pointer will
+ *         be returned to them from apr_pollcb_poll.
+ * @remark Do not add the same socket or file descriptor to the same pollcb
+ *         multiple times, even if the requested events differ for the 
+ *         different calls to apr_pollcb_add().  If the events of interest
+ *         for a descriptor change, you must first remove the descriptor 
+ *         from the pollcb with apr_pollcb_remove(), then add it again 
+ *         specifying all requested events.
+ */
+APR_DECLARE(apr_status_t) apr_pollcb_add(apr_pollcb_t *pollcb,
+                                         apr_pollfd_t *descriptor);
+/**
+ * Remove a descriptor from a pollcb
+ * @param pollcb The pollcb from which to remove the descriptor
+ * @param descriptor The descriptor to remove
+ * @remark apr_pollcb_remove() cannot be used to remove a subset of requested
+ *         events for a descriptor.  The reqevents field in the apr_pollfd_t
+ *         parameter must contain the same value when removing as when adding.
+ */
+APR_DECLARE(apr_status_t) apr_pollcb_remove(apr_pollcb_t *pollcb,
+                                            apr_pollfd_t *descriptor);
+
+/** Function prototype for pollcb handlers 
+ * @param baton Opaque baton passed into apr_pollcb_poll()
+ * @param descriptor Contains the notification for an active descriptor, 
+ *                   the rtnevents member contains what events were triggered
+ *                   for this descriptor.
+ */
+typedef apr_status_t (*apr_pollcb_cb_t)(void *baton, apr_pollfd_t *descriptor);
+
+/**
+ * Block for activity on the descriptor(s) in a pollcb
+ * @param pollcb The pollcb to use
+ * @param timeout The amount of time in microseconds to wait.  This is a
+ *                maximum, not a minimum.  If a descriptor is signalled, the
+ *                function will return before this time.  If timeout is
+ *                negative, the function will block until a descriptor is
+ *                signalled.
+ * @param func Callback function to call for each active descriptor.
+ * @param baton Opaque baton passed to the callback function.
+ * @remark Multiple signalled conditions for the same descriptor may be reported
+ *         in one or more calls to the callback function, depending on the
+ *         implementation.
+ */
+APR_DECLARE(apr_status_t) apr_pollcb_poll(apr_pollcb_t *pollcb,
+                                          apr_interval_time_t timeout,
+                                          apr_pollcb_cb_t func,
+                                          void *baton); 
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_POLL_H */
+

Deleted: vendor/apache/apr/1.5.2/include/apr_pools.h
===================================================================
--- vendor/apache/apr/dist/include/apr_pools.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_pools.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,811 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_POOLS_H
-#define APR_POOLS_H
-
-/**
- * @file apr_pools.h
- * @brief APR memory allocation
- *
- * Resource allocation routines...
- *
- * designed so that we don't have to keep track of EVERYTHING so that
- * it can be explicitly freed later (a fundamentally unsound strategy ---
- * particularly in the presence of die()).
- *
- * Instead, we maintain pools, and allocate items (both memory and I/O
- * handlers) from the pools --- currently there are two, one for
- * per-transaction info, and one for config info.  When a transaction is
- * over, we can delete everything in the per-transaction apr_pool_t without
- * fear, and without thinking too hard about it either.
- *
- * Note that most operations on pools are not thread-safe: a single pool
- * should only be accessed by a single thread at any given time. The one
- * exception to this rule is creating a subpool of a given pool: one or more
- * threads can safely create subpools at the same time that another thread
- * accesses the parent pool.
- */
-
-#include "apr.h"
-#include "apr_errno.h"
-#include "apr_general.h" /* for APR_STRINGIFY */
-#define APR_WANT_MEMFUNC /**< for no good reason? */
-#include "apr_want.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup apr_pools Memory Pool Functions
- * @ingroup APR 
- * @{
- */
-
-/** The fundamental pool type */
-typedef struct apr_pool_t apr_pool_t;
-
-
-/**
- * Declaration helper macro to construct apr_foo_pool_get()s.
- *
- * This standardized macro is used by opaque (APR) data types to return
- * the apr_pool_t that is associated with the data type.
- *
- * APR_POOL_DECLARE_ACCESSOR() is used in a header file to declare the
- * accessor function. A typical usage and result would be:
- * <pre>
- *    APR_POOL_DECLARE_ACCESSOR(file);
- * becomes:
- *    APR_DECLARE(apr_pool_t *) apr_file_pool_get(apr_file_t *ob);
- * </pre>
- * @remark Doxygen unwraps this macro (via doxygen.conf) to provide 
- * actual help for each specific occurance of apr_foo_pool_get.
- * @remark the linkage is specified for APR. It would be possible to expand
- *       the macros to support other linkages.
- */
-#define APR_POOL_DECLARE_ACCESSOR(type) \
-    APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \
-        (const apr_##type##_t *the##type)
-
-/** 
- * Implementation helper macro to provide apr_foo_pool_get()s.
- *
- * In the implementation, the APR_POOL_IMPLEMENT_ACCESSOR() is used to
- * actually define the function. It assumes the field is named "pool".
- */
-#define APR_POOL_IMPLEMENT_ACCESSOR(type) \
-    APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \
-            (const apr_##type##_t *the##type) \
-        { return the##type->pool; }
-
-
-/**
- * Pool debug levels
- *
- * <pre>
- * | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- * ---------------------------------
- * |   |   |   |   |   |   |   | x |  General debug code enabled (useful in
- *                                    combination with --with-efence).
- *
- * |   |   |   |   |   |   | x |   |  Verbose output on stderr (report
- *                                    CREATE, CLEAR, DESTROY).
- *
- * |   |   |   | x |   |   |   |   |  Verbose output on stderr (report
- *                                    PALLOC, PCALLOC).
- *
- * |   |   |   |   |   | x |   |   |  Lifetime checking. On each use of a
- *                                    pool, check its lifetime.  If the pool
- *                                    is out of scope, abort().
- *                                    In combination with the verbose flag
- *                                    above, it will output LIFE in such an
- *                                    event prior to aborting.
- *
- * |   |   |   |   | x |   |   |   |  Pool owner checking.  On each use of a
- *                                    pool, check if the current thread is the
- *                                    pools owner.  If not, abort().  In
- *                                    combination with the verbose flag above,
- *                                    it will output OWNER in such an event
- *                                    prior to aborting.  Use the debug
- *                                    function apr_pool_owner_set() to switch
- *                                    a pools ownership.
- *
- * When no debug level was specified, assume general debug mode.
- * If level 0 was specified, debugging is switched off
- * </pre>
- */
-#if defined(APR_POOL_DEBUG)
-/* If APR_POOL_DEBUG is blank, we get 1; if it is a number, we get -1. */
-#if (APR_POOL_DEBUG - APR_POOL_DEBUG -1 == 1)
-#undef APR_POOL_DEBUG
-#define APR_POOL_DEBUG 1
-#endif
-#else
-#define APR_POOL_DEBUG 0
-#endif
-
-/** the place in the code where the particular function was called */
-#define APR_POOL__FILE_LINE__ __FILE__ ":" APR_STRINGIFY(__LINE__)
-
-
-
-/** A function that is called when allocation fails. */
-typedef int (*apr_abortfunc_t)(int retcode);
-
-/*
- * APR memory structure manipulators (pools, tables, and arrays).
- */
-
-/*
- * Initialization
- */
-
-/**
- * Setup all of the internal structures required to use pools
- * @remark Programs do NOT need to call this directly.  APR will call this
- *      automatically from apr_initialize.
- * @internal
- */
-APR_DECLARE(apr_status_t) apr_pool_initialize(void);
-
-/**
- * Tear down all of the internal structures required to use pools
- * @remark Programs do NOT need to call this directly.  APR will call this
- *      automatically from apr_terminate.
- * @internal
- */
-APR_DECLARE(void) apr_pool_terminate(void);
-
-
-/*
- * Pool creation/destruction
- */
-
-#include "apr_allocator.h"
-
-/**
- * Create a new pool.
- * @param newpool The pool we have just created.
- * @param parent The parent pool.  If this is NULL, the new pool is a root
- *        pool.  If it is non-NULL, the new pool will inherit all
- *        of its parent pool's attributes, except the apr_pool_t will
- *        be a sub-pool.
- * @param abort_fn A function to use if the pool cannot allocate more memory.
- * @param allocator The allocator to use with the new pool.  If NULL the
- *        allocator of the parent pool will be used.
- * @remark This function is thread-safe, in the sense that multiple threads
- *         can safely create subpools of the same parent pool concurrently.
- *         Similarly, a subpool can be created by one thread at the same
- *         time that another thread accesses the parent pool.
- */
-APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
-                                             apr_pool_t *parent,
-                                             apr_abortfunc_t abort_fn,
-                                             apr_allocator_t *allocator)
-                          __attribute__((nonnull(1)));
-
-/**
- * Create a new pool.
- * @deprecated @see apr_pool_create_unmanaged_ex.
- */
-APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
-                                                  apr_abortfunc_t abort_fn,
-                                                  apr_allocator_t *allocator);
-
-/**
- * Create a new unmanaged pool.
- * @param newpool The pool we have just created.
- * @param abort_fn A function to use if the pool cannot allocate more memory.
- * @param allocator The allocator to use with the new pool.  If NULL a
- *        new allocator will be crated with newpool as owner.
- * @remark An unmanaged pool is a special pool without a parent; it will
- *         NOT be destroyed upon apr_terminate.  It must be explicitly
- *         destroyed by calling apr_pool_destroy, to prevent memory leaks.
- *         Use of this function is discouraged, think twice about whether
- *         you really really need it.
- */
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator)
-                          __attribute__((nonnull(1)));
-
-/**
- * Debug version of apr_pool_create_ex.
- * @param newpool @see apr_pool_create.
- * @param parent @see apr_pool_create.
- * @param abort_fn @see apr_pool_create.
- * @param allocator @see apr_pool_create.
- * @param file_line Where the function is called from.
- *        This is usually APR_POOL__FILE_LINE__.
- * @remark Only available when APR_POOL_DEBUG is defined.
- *         Call this directly if you have you apr_pool_create_ex
- *         calls in a wrapper function and wish to override
- *         the file_line argument to reflect the caller of
- *         your wrapper function.  If you do not have
- *         apr_pool_create_ex in a wrapper, trust the macro
- *         and don't call apr_pool_create_ex_debug directly.
- */
-APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
-                                                   apr_pool_t *parent,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-                          __attribute__((nonnull(1)));
-
-#if APR_POOL_DEBUG
-#define apr_pool_create_ex(newpool, parent, abort_fn, allocator)  \
-    apr_pool_create_ex_debug(newpool, parent, abort_fn, allocator, \
-                             APR_POOL__FILE_LINE__)
-#endif
-
-/**
- * Debug version of apr_pool_create_core_ex.
- * @deprecated @see apr_pool_create_unmanaged_ex_debug.
- */
-APR_DECLARE(apr_status_t) apr_pool_create_core_ex_debug(apr_pool_t **newpool,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line);
-
-/**
- * Debug version of apr_pool_create_unmanaged_ex.
- * @param newpool @see apr_pool_create_unmanaged.
- * @param abort_fn @see apr_pool_create_unmanaged.
- * @param allocator @see apr_pool_create_unmanaged.
- * @param file_line Where the function is called from.
- *        This is usually APR_POOL__FILE_LINE__.
- * @remark Only available when APR_POOL_DEBUG is defined.
- *         Call this directly if you have you apr_pool_create_unmanaged_ex
- *         calls in a wrapper function and wish to override
- *         the file_line argument to reflect the caller of
- *         your wrapper function.  If you do not have
- *         apr_pool_create_core_ex in a wrapper, trust the macro
- *         and don't call apr_pool_create_core_ex_debug directly.
- */
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-                          __attribute__((nonnull(1)));
-
-#if APR_POOL_DEBUG
-#define apr_pool_create_core_ex(newpool, abort_fn, allocator)  \
-    apr_pool_create_unmanaged_ex_debug(newpool, abort_fn, allocator, \
-                                  APR_POOL__FILE_LINE__)
-
-#define apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator)  \
-    apr_pool_create_unmanaged_ex_debug(newpool, abort_fn, allocator, \
-                                  APR_POOL__FILE_LINE__)
-
-#endif
-
-/**
- * Create a new pool.
- * @param newpool The pool we have just created.
- * @param parent The parent pool.  If this is NULL, the new pool is a root
- *        pool.  If it is non-NULL, the new pool will inherit all
- *        of its parent pool's attributes, except the apr_pool_t will
- *        be a sub-pool.
- * @remark This function is thread-safe, in the sense that multiple threads
- *         can safely create subpools of the same parent pool concurrently.
- *         Similarly, a subpool can be created by one thread at the same
- *         time that another thread accesses the parent pool.
- */
-#if defined(DOXYGEN)
-APR_DECLARE(apr_status_t) apr_pool_create(apr_pool_t **newpool,
-                                          apr_pool_t *parent);
-#else
-#if APR_POOL_DEBUG
-#define apr_pool_create(newpool, parent) \
-    apr_pool_create_ex_debug(newpool, parent, NULL, NULL, \
-                             APR_POOL__FILE_LINE__)
-#else
-#define apr_pool_create(newpool, parent) \
-    apr_pool_create_ex(newpool, parent, NULL, NULL)
-#endif
-#endif
-
-/**
- * Create a new pool.
- * @param newpool The pool we have just created.
- */
-#if defined(DOXYGEN)
-APR_DECLARE(apr_status_t) apr_pool_create_core(apr_pool_t **newpool);
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged(apr_pool_t **newpool);
-#else
-#if APR_POOL_DEBUG
-#define apr_pool_create_core(newpool) \
-    apr_pool_create_unmanaged_ex_debug(newpool, NULL, NULL, \
-                                  APR_POOL__FILE_LINE__)
-#define apr_pool_create_unmanaged(newpool) \
-    apr_pool_create_unmanaged_ex_debug(newpool, NULL, NULL, \
-                                  APR_POOL__FILE_LINE__)
-#else
-#define apr_pool_create_core(newpool) \
-    apr_pool_create_unmanaged_ex(newpool, NULL, NULL)
-#define apr_pool_create_unmanaged(newpool) \
-    apr_pool_create_unmanaged_ex(newpool, NULL, NULL)
-#endif
-#endif
-
-/**
- * Find the pool's allocator
- * @param pool The pool to get the allocator from.
- */
-APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool)
-                               __attribute__((nonnull(1)));
-
-/**
- * Clear all memory in the pool and run all the cleanups. This also destroys all
- * subpools.
- * @param p The pool to clear
- * @remark This does not actually free the memory, it just allows the pool
- *         to re-use this memory for the next allocation.
- * @see apr_pool_destroy()
- */
-APR_DECLARE(void) apr_pool_clear(apr_pool_t *p) __attribute__((nonnull(1)));
-
-/**
- * Debug version of apr_pool_clear.
- * @param p See: apr_pool_clear.
- * @param file_line Where the function is called from.
- *        This is usually APR_POOL__FILE_LINE__.
- * @remark Only available when APR_POOL_DEBUG is defined.
- *         Call this directly if you have you apr_pool_clear
- *         calls in a wrapper function and wish to override
- *         the file_line argument to reflect the caller of
- *         your wrapper function.  If you do not have
- *         apr_pool_clear in a wrapper, trust the macro
- *         and don't call apr_pool_destroy_clear directly.
- */
-APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p,
-                                       const char *file_line)
-                  __attribute__((nonnull(1)));
-
-#if APR_POOL_DEBUG
-#define apr_pool_clear(p) \
-    apr_pool_clear_debug(p, APR_POOL__FILE_LINE__)
-#endif
-
-/**
- * Destroy the pool. This takes similar action as apr_pool_clear() and then
- * frees all the memory.
- * @param p The pool to destroy
- * @remark This will actually free the memory
- */
-APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p) __attribute__((nonnull(1)));
-
-/**
- * Debug version of apr_pool_destroy.
- * @param p See: apr_pool_destroy.
- * @param file_line Where the function is called from.
- *        This is usually APR_POOL__FILE_LINE__.
- * @remark Only available when APR_POOL_DEBUG is defined.
- *         Call this directly if you have you apr_pool_destroy
- *         calls in a wrapper function and wish to override
- *         the file_line argument to reflect the caller of
- *         your wrapper function.  If you do not have
- *         apr_pool_destroy in a wrapper, trust the macro
- *         and don't call apr_pool_destroy_debug directly.
- */
-APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p,
-                                         const char *file_line)
-                  __attribute__((nonnull(1)));
-
-#if APR_POOL_DEBUG
-#define apr_pool_destroy(p) \
-    apr_pool_destroy_debug(p, APR_POOL__FILE_LINE__)
-#endif
-
-
-/*
- * Memory allocation
- */
-
-/**
- * Allocate a block of memory from a pool
- * @param p The pool to allocate from
- * @param size The amount of memory to allocate
- * @return The allocated memory
- */
-APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size)
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-                    __attribute__((alloc_size(2)))
-#endif
-                    __attribute__((nonnull(1)));
-
-/**
- * Debug version of apr_palloc
- * @param p See: apr_palloc
- * @param size See: apr_palloc
- * @param file_line Where the function is called from.
- *        This is usually APR_POOL__FILE_LINE__.
- * @return See: apr_palloc
- */
-APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *p, apr_size_t size,
-                                     const char *file_line)
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-                    __attribute__((alloc_size(2)))
-#endif
-                    __attribute__((nonnull(1)));
-
-#if APR_POOL_DEBUG
-#define apr_palloc(p, size) \
-    apr_palloc_debug(p, size, APR_POOL__FILE_LINE__)
-#endif
-
-/**
- * Allocate a block of memory from a pool and set all of the memory to 0
- * @param p The pool to allocate from
- * @param size The amount of memory to allocate
- * @return The allocated memory
- */
-#if defined(DOXYGEN)
-APR_DECLARE(void *) apr_pcalloc(apr_pool_t *p, apr_size_t size);
-#elif !APR_POOL_DEBUG
-#define apr_pcalloc(p, size) memset(apr_palloc(p, size), 0, size)
-#endif
-
-/**
- * Debug version of apr_pcalloc
- * @param p See: apr_pcalloc
- * @param size See: apr_pcalloc
- * @param file_line Where the function is called from.
- *        This is usually APR_POOL__FILE_LINE__.
- * @return See: apr_pcalloc
- */
-APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size,
-                                      const char *file_line)
-                    __attribute__((nonnull(1)));
-
-#if APR_POOL_DEBUG
-#define apr_pcalloc(p, size) \
-    apr_pcalloc_debug(p, size, APR_POOL__FILE_LINE__)
-#endif
-
-
-/*
- * Pool Properties
- */
-
-/**
- * Set the function to be called when an allocation failure occurs.
- * @remark If the program wants APR to exit on a memory allocation error,
- *      then this function can be called to set the callback to use (for
- *      performing cleanup and then exiting). If this function is not called,
- *      then APR will return an error and expect the calling program to
- *      deal with the error accordingly.
- */
-APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abortfunc,
-                                     apr_pool_t *pool)
-                  __attribute__((nonnull(2)));
-
-/**
- * Get the abort function associated with the specified pool.
- * @param pool The pool for retrieving the abort function.
- * @return The abort function for the given pool.
- */
-APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool)
-                             __attribute__((nonnull(1)));
-
-/**
- * Get the parent pool of the specified pool.
- * @param pool The pool for retrieving the parent pool.
- * @return The parent of the given pool.
- */
-APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool)
-                          __attribute__((nonnull(1)));
-
-/**
- * Determine if pool a is an ancestor of pool b.
- * @param a The pool to search
- * @param b The pool to search for
- * @return True if a is an ancestor of b, NULL is considered an ancestor
- *         of all pools.
- * @remark if compiled with APR_POOL_DEBUG, this function will also
- * return true if A is a pool which has been guaranteed by the caller
- * (using apr_pool_join) to have a lifetime at least as long as some
- * ancestor of pool B.
- */
-APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b);
-
-/**
- * Tag a pool (give it a name)
- * @param pool The pool to tag
- * @param tag  The tag
- */
-APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag)
-                  __attribute__((nonnull(1)));
-
-
-/*
- * User data management
- */
-
-/**
- * Set the data associated with the current pool
- * @param data The user data associated with the pool.
- * @param key The key to use for association
- * @param cleanup The cleanup program to use to cleanup the data (NULL if none)
- * @param pool The current pool
- * @warning The data to be attached to the pool should have a life span
- *          at least as long as the pool it is being attached to.
- *
- *      Users of APR must take EXTREME care when choosing a key to
- *      use for their data.  It is possible to accidentally overwrite
- *      data by choosing a key that another part of the program is using.
- *      Therefore it is advised that steps are taken to ensure that unique
- *      keys are used for all of the userdata objects in a particular pool
- *      (the same key in two different pools or a pool and one of its
- *      subpools is okay) at all times.  Careful namespace prefixing of
- *      key names is a typical way to help ensure this uniqueness.
- *
- */
-APR_DECLARE(apr_status_t) apr_pool_userdata_set(const void *data,
-                                                const char *key,
-                                                apr_status_t (*cleanup)(void *),
-                                                apr_pool_t *pool)
-                          __attribute__((nonnull(2,4)));
-
-/**
- * Set the data associated with the current pool
- * @param data The user data associated with the pool.
- * @param key The key to use for association
- * @param cleanup The cleanup program to use to cleanup the data (NULL if none)
- * @param pool The current pool
- * @note same as apr_pool_userdata_set(), except that this version doesn't
- *       make a copy of the key (this function is useful, for example, when
- *       the key is a string literal)
- * @warning This should NOT be used if the key could change addresses by
- *       any means between the apr_pool_userdata_setn() call and a
- *       subsequent apr_pool_userdata_get() on that key, such as if a
- *       static string is used as a userdata key in a DSO and the DSO could
- *       be unloaded and reloaded between the _setn() and the _get().  You
- *       MUST use apr_pool_userdata_set() in such cases.
- * @warning More generally, the key and the data to be attached to the
- *       pool should have a life span at least as long as the pool itself.
- *
- */
-APR_DECLARE(apr_status_t) apr_pool_userdata_setn(
-                                const void *data, const char *key,
-                                apr_status_t (*cleanup)(void *),
-                                apr_pool_t *pool)
-                          __attribute__((nonnull(2,4)));
-
-/**
- * Return the data associated with the current pool.
- * @param data The user data associated with the pool.
- * @param key The key for the data to retrieve
- * @param pool The current pool.
- */
-APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key,
-                                                apr_pool_t *pool)
-                          __attribute__((nonnull(1,2,3)));
-
-
-/**
- * @defgroup PoolCleanup  Pool Cleanup Functions
- *
- * Cleanups are performed in the reverse order they were registered.  That is:
- * Last In, First Out.  A cleanup function can safely allocate memory from
- * the pool that is being cleaned up. It can also safely register additional
- * cleanups which will be run LIFO, directly after the current cleanup
- * terminates.  Cleanups have to take caution in calling functions that
- * create subpools. Subpools, created during cleanup will NOT automatically
- * be cleaned up.  In other words, cleanups are to clean up after themselves.
- *
- * @{
- */
-
-/**
- * Register a function to be called when a pool is cleared or destroyed
- * @param p The pool register the cleanup with
- * @param data The data to pass to the cleanup function.
- * @param plain_cleanup The function to call when the pool is cleared
- *                      or destroyed
- * @param child_cleanup The function to call when a child process is about
- *                      to exec - this function is called in the child, obviously!
- */
-APR_DECLARE(void) apr_pool_cleanup_register(
-                            apr_pool_t *p, const void *data,
-                            apr_status_t (*plain_cleanup)(void *),
-                            apr_status_t (*child_cleanup)(void *))
-                  __attribute__((nonnull(3,4)));
-
-/**
- * Register a function to be called when a pool is cleared or destroyed.
- *
- * Unlike apr_pool_cleanup_register which register a cleanup
- * that is called AFTER all subpools are destroyed this function register
- * a function that will be called before any of the subpool is destoryed.
- *
- * @param p The pool register the cleanup with
- * @param data The data to pass to the cleanup function.
- * @param plain_cleanup The function to call when the pool is cleared
- *                      or destroyed
- */
-APR_DECLARE(void) apr_pool_pre_cleanup_register(
-                            apr_pool_t *p, const void *data,
-                            apr_status_t (*plain_cleanup)(void *))
-                  __attribute__((nonnull(3)));
-
-/**
- * Remove a previously registered cleanup function.
- * 
- * The cleanup most recently registered with @a p having the same values of
- * @a data and @a cleanup will be removed.
- *
- * @param p The pool to remove the cleanup from
- * @param data The data of the registered cleanup
- * @param cleanup The function to remove from cleanup
- * @remarks For some strange reason only the plain_cleanup is handled by this
- *          function
- */
-APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data,
-                                        apr_status_t (*cleanup)(void *))
-                  __attribute__((nonnull(3)));
-
-/**
- * Replace the child cleanup function of a previously registered cleanup.
- * 
- * The cleanup most recently registered with @a p having the same values of
- * @a data and @a plain_cleanup will have the registered child cleanup
- * function replaced with @a child_cleanup.
- *
- * @param p The pool of the registered cleanup
- * @param data The data of the registered cleanup
- * @param plain_cleanup The plain cleanup function of the registered cleanup
- * @param child_cleanup The function to register as the child cleanup
- */
-APR_DECLARE(void) apr_pool_child_cleanup_set(
-                        apr_pool_t *p, const void *data,
-                        apr_status_t (*plain_cleanup)(void *),
-                        apr_status_t (*child_cleanup)(void *))
-                  __attribute__((nonnull(3,4)));
-
-/**
- * Run the specified cleanup function immediately and unregister it.
- *
- * The cleanup most recently registered with @a p having the same values of
- * @a data and @a cleanup will be removed and @a cleanup will be called
- * with @a data as the argument.
- *
- * @param p The pool to remove the cleanup from
- * @param data The data to remove from cleanup
- * @param cleanup The function to remove from cleanup
- */
-APR_DECLARE(apr_status_t) apr_pool_cleanup_run(apr_pool_t *p, void *data,
-                                               apr_status_t (*cleanup)(void *))
-                          __attribute__((nonnull(3)));
-
-/**
- * An empty cleanup function.
- * 
- * Passed to apr_pool_cleanup_register() when no cleanup is required.
- *
- * @param data The data to cleanup, will not be used by this function.
- */
-APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data);
-
-/**
- * Run all registered child cleanups, in preparation for an exec()
- * call in a forked child -- close files, etc., but *don't* flush I/O
- * buffers, *don't* wait for subprocesses, and *don't* free any
- * memory.
- */
-APR_DECLARE(void) apr_pool_cleanup_for_exec(void);
-
-/** @} */
-
-/**
- * @defgroup PoolDebug Pool Debugging functions.
- *
- * pools have nested lifetimes -- sub_pools are destroyed when the
- * parent pool is cleared.  We allow certain liberties with operations
- * on things such as tables (and on other structures in a more general
- * sense) where we allow the caller to insert values into a table which
- * were not allocated from the table's pool.  The table's data will
- * remain valid as long as all the pools from which its values are
- * allocated remain valid.
- *
- * For example, if B is a sub pool of A, and you build a table T in
- * pool B, then it's safe to insert data allocated in A or B into T
- * (because B lives at most as long as A does, and T is destroyed when
- * B is cleared/destroyed).  On the other hand, if S is a table in
- * pool A, it is safe to insert data allocated in A into S, but it
- * is *not safe* to insert data allocated from B into S... because
- * B can be cleared/destroyed before A is (which would leave dangling
- * pointers in T's data structures).
- *
- * In general we say that it is safe to insert data into a table T
- * if the data is allocated in any ancestor of T's pool.  This is the
- * basis on which the APR_POOL_DEBUG code works -- it tests these ancestor
- * relationships for all data inserted into tables.  APR_POOL_DEBUG also
- * provides tools (apr_pool_find, and apr_pool_is_ancestor) for other
- * folks to implement similar restrictions for their own data
- * structures.
- *
- * However, sometimes this ancestor requirement is inconvenient --
- * sometimes it's necessary to create a sub pool where the sub pool is
- * guaranteed to have the same lifetime as the parent pool.  This is a
- * guarantee implemented by the *caller*, not by the pool code.  That
- * is, the caller guarantees they won't destroy the sub pool
- * individually prior to destroying the parent pool.
- *
- * In this case the caller must call apr_pool_join() to indicate this
- * guarantee to the APR_POOL_DEBUG code.
- *
- * These functions are only implemented when #APR_POOL_DEBUG is set.
- *
- * @{
- */
-#if APR_POOL_DEBUG || defined(DOXYGEN)
-/**
- * Guarantee that a subpool has the same lifetime as the parent.
- * @param p The parent pool
- * @param sub The subpool
- */
-APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub)
-                  __attribute__((nonnull(2)));
-
-/**
- * Find a pool from something allocated in it.
- * @param mem The thing allocated in the pool
- * @return The pool it is allocated in
- */
-APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem);
-
-/**
- * Report the number of bytes currently in the pool
- * @param p The pool to inspect
- * @param recurse Recurse/include the subpools' sizes
- * @return The number of bytes
- */
-APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse)
-                        __attribute__((nonnull(1)));
-
-/**
- * Lock a pool
- * @param pool The pool to lock
- * @param flag  The flag
- */
-APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag);
-
-/* @} */
-
-#else /* APR_POOL_DEBUG or DOXYGEN */
-
-#ifdef apr_pool_join
-#undef apr_pool_join
-#endif
-#define apr_pool_join(a,b)
-
-#ifdef apr_pool_lock
-#undef apr_pool_lock
-#endif
-#define apr_pool_lock(pool, lock)
-
-#endif /* APR_POOL_DEBUG or DOXYGEN */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !APR_POOLS_H */

Copied: vendor/apache/apr/1.5.2/include/apr_pools.h (from rev 9273, vendor/apache/apr/dist/include/apr_pools.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_pools.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_pools.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,815 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_POOLS_H
+#define APR_POOLS_H
+
+/**
+ * @file apr_pools.h
+ * @brief APR memory allocation
+ *
+ * Resource allocation routines...
+ *
+ * designed so that we don't have to keep track of EVERYTHING so that
+ * it can be explicitly freed later (a fundamentally unsound strategy ---
+ * particularly in the presence of die()).
+ *
+ * Instead, we maintain pools, and allocate items (both memory and I/O
+ * handlers) from the pools --- currently there are two, one for
+ * per-transaction info, and one for config info.  When a transaction is
+ * over, we can delete everything in the per-transaction apr_pool_t without
+ * fear, and without thinking too hard about it either.
+ *
+ * Note that most operations on pools are not thread-safe: a single pool
+ * should only be accessed by a single thread at any given time. The one
+ * exception to this rule is creating a subpool of a given pool: one or more
+ * threads can safely create subpools at the same time that another thread
+ * accesses the parent pool.
+ */
+
+#include "apr.h"
+#include "apr_errno.h"
+#include "apr_general.h" /* for APR_STRINGIFY */
+#define APR_WANT_MEMFUNC /**< for no good reason? */
+#include "apr_want.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup apr_pools Memory Pool Functions
+ * @ingroup APR 
+ * @{
+ */
+
+/** The fundamental pool type */
+typedef struct apr_pool_t apr_pool_t;
+
+
+/**
+ * Declaration helper macro to construct apr_foo_pool_get()s.
+ *
+ * This standardized macro is used by opaque (APR) data types to return
+ * the apr_pool_t that is associated with the data type.
+ *
+ * APR_POOL_DECLARE_ACCESSOR() is used in a header file to declare the
+ * accessor function. A typical usage and result would be:
+ * <pre>
+ *    APR_POOL_DECLARE_ACCESSOR(file);
+ * becomes:
+ *    APR_DECLARE(apr_pool_t *) apr_file_pool_get(const apr_file_t *thefile);
+ * </pre>
+ * @remark Doxygen unwraps this macro (via doxygen.conf) to provide 
+ * actual help for each specific occurrence of apr_foo_pool_get.
+ * @remark the linkage is specified for APR. It would be possible to expand
+ *       the macros to support other linkages.
+ */
+#define APR_POOL_DECLARE_ACCESSOR(type) \
+    APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \
+        (const apr_##type##_t *the##type)
+
+/** 
+ * Implementation helper macro to provide apr_foo_pool_get()s.
+ *
+ * In the implementation, the APR_POOL_IMPLEMENT_ACCESSOR() is used to
+ * actually define the function. It assumes the field is named "pool".
+ */
+#define APR_POOL_IMPLEMENT_ACCESSOR(type) \
+    APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \
+            (const apr_##type##_t *the##type) \
+        { return the##type->pool; }
+
+
+/**
+ * Pool debug levels
+ *
+ * <pre>
+ * | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+ * ---------------------------------
+ * |   |   |   |   |   |   |   | x |  General debug code enabled (useful in
+ *                                    combination with --with-efence).
+ *
+ * |   |   |   |   |   |   | x |   |  Verbose output on stderr (report
+ *                                    CREATE, CLEAR, DESTROY).
+ *
+ * |   |   |   | x |   |   |   |   |  Verbose output on stderr (report
+ *                                    PALLOC, PCALLOC).
+ *
+ * |   |   |   |   |   | x |   |   |  Lifetime checking. On each use of a
+ *                                    pool, check its lifetime.  If the pool
+ *                                    is out of scope, abort().
+ *                                    In combination with the verbose flag
+ *                                    above, it will output LIFE in such an
+ *                                    event prior to aborting.
+ *
+ * |   |   |   |   | x |   |   |   |  Pool owner checking.  On each use of a
+ *                                    pool, check if the current thread is the
+ *                                    pool's owner.  If not, abort().  In
+ *                                    combination with the verbose flag above,
+ *                                    it will output OWNER in such an event
+ *                                    prior to aborting.  Use the debug
+ *                                    function apr_pool_owner_set() to switch
+ *                                    a pool's ownership.
+ *
+ * When no debug level was specified, assume general debug mode.
+ * If level 0 was specified, debugging is switched off.
+ * </pre>
+ */
+#if defined(APR_POOL_DEBUG)
+/* If APR_POOL_DEBUG is blank, we get 1; if it is a number, we get -1. */
+#if (APR_POOL_DEBUG - APR_POOL_DEBUG -1 == 1)
+#undef APR_POOL_DEBUG
+#define APR_POOL_DEBUG 1
+#endif
+#else
+#define APR_POOL_DEBUG 0
+#endif
+
+/** the place in the code where the particular function was called */
+#define APR_POOL__FILE_LINE__ __FILE__ ":" APR_STRINGIFY(__LINE__)
+
+
+
+/** A function that is called when allocation fails. */
+typedef int (*apr_abortfunc_t)(int retcode);
+
+/*
+ * APR memory structure manipulators (pools, tables, and arrays).
+ */
+
+/*
+ * Initialization
+ */
+
+/**
+ * Setup all of the internal structures required to use pools
+ * @remark Programs do NOT need to call this directly.  APR will call this
+ *      automatically from apr_initialize.
+ * @internal
+ */
+APR_DECLARE(apr_status_t) apr_pool_initialize(void);
+
+/**
+ * Tear down all of the internal structures required to use pools
+ * @remark Programs do NOT need to call this directly.  APR will call this
+ *      automatically from apr_terminate.
+ * @internal
+ */
+APR_DECLARE(void) apr_pool_terminate(void);
+
+
+/*
+ * Pool creation/destruction
+ */
+
+#include "apr_allocator.h"
+
+/**
+ * Create a new pool.
+ * @param newpool The pool we have just created.
+ * @param parent The parent pool.  If this is NULL, the new pool is a root
+ *        pool.  If it is non-NULL, the new pool will inherit all
+ *        of its parent pool's attributes, except the apr_pool_t will
+ *        be a sub-pool.
+ * @param abort_fn A function to use if the pool cannot allocate more memory.
+ * @param allocator The allocator to use with the new pool.  If NULL the
+ *        allocator of the parent pool will be used.
+ * @remark This function is thread-safe, in the sense that multiple threads
+ *         can safely create subpools of the same parent pool concurrently.
+ *         Similarly, a subpool can be created by one thread at the same
+ *         time that another thread accesses the parent pool.
+ */
+APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
+                                             apr_pool_t *parent,
+                                             apr_abortfunc_t abort_fn,
+                                             apr_allocator_t *allocator)
+                          __attribute__((nonnull(1)));
+
+/**
+ * Create a new pool.
+ * @deprecated @see apr_pool_create_unmanaged_ex.
+ */
+APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
+                                                  apr_abortfunc_t abort_fn,
+                                                  apr_allocator_t *allocator);
+
+/**
+ * Create a new unmanaged pool.
+ * @param newpool The pool we have just created.
+ * @param abort_fn A function to use if the pool cannot allocate more memory.
+ * @param allocator The allocator to use with the new pool.  If NULL a
+ *        new allocator will be created with the new pool as owner.
+ * @remark An unmanaged pool is a special pool without a parent; it will
+ *         NOT be destroyed upon apr_terminate.  It must be explicitly
+ *         destroyed by calling apr_pool_destroy, to prevent memory leaks.
+ *         Use of this function is discouraged, think twice about whether
+ *         you really really need it.
+ * @warning Any child cleanups registered against the new pool, or
+ *         against sub-pools thereof, will not be executed during an
+ *         invocation of apr_proc_create(), so resources created in an
+ *         "unmanaged" pool hierarchy will leak to child processes.
+ */
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator)
+                          __attribute__((nonnull(1)));
+
+/**
+ * Debug version of apr_pool_create_ex.
+ * @param newpool @see apr_pool_create.
+ * @param parent @see apr_pool_create.
+ * @param abort_fn @see apr_pool_create.
+ * @param allocator @see apr_pool_create.
+ * @param file_line Where the function is called from.
+ *        This is usually APR_POOL__FILE_LINE__.
+ * @remark Only available when APR_POOL_DEBUG is defined.
+ *         Call this directly if you have your apr_pool_create_ex
+ *         calls in a wrapper function and wish to override
+ *         the file_line argument to reflect the caller of
+ *         your wrapper function.  If you do not have
+ *         apr_pool_create_ex in a wrapper, trust the macro
+ *         and don't call apr_pool_create_ex_debug directly.
+ */
+APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
+                                                   apr_pool_t *parent,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+                          __attribute__((nonnull(1)));
+
+#if APR_POOL_DEBUG
+#define apr_pool_create_ex(newpool, parent, abort_fn, allocator)  \
+    apr_pool_create_ex_debug(newpool, parent, abort_fn, allocator, \
+                             APR_POOL__FILE_LINE__)
+#endif
+
+/**
+ * Debug version of apr_pool_create_core_ex.
+ * @deprecated @see apr_pool_create_unmanaged_ex_debug.
+ */
+APR_DECLARE(apr_status_t) apr_pool_create_core_ex_debug(apr_pool_t **newpool,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line);
+
+/**
+ * Debug version of apr_pool_create_unmanaged_ex.
+ * @param newpool @see apr_pool_create_unmanaged.
+ * @param abort_fn @see apr_pool_create_unmanaged.
+ * @param allocator @see apr_pool_create_unmanaged.
+ * @param file_line Where the function is called from.
+ *        This is usually APR_POOL__FILE_LINE__.
+ * @remark Only available when APR_POOL_DEBUG is defined.
+ *         Call this directly if you have your apr_pool_create_unmanaged_ex
+ *         calls in a wrapper function and wish to override
+ *         the file_line argument to reflect the caller of
+ *         your wrapper function.  If you do not have
+ *         apr_pool_create_core_ex in a wrapper, trust the macro
+ *         and don't call apr_pool_create_core_ex_debug directly.
+ */
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+                          __attribute__((nonnull(1)));
+
+#if APR_POOL_DEBUG
+#define apr_pool_create_core_ex(newpool, abort_fn, allocator)  \
+    apr_pool_create_unmanaged_ex_debug(newpool, abort_fn, allocator, \
+                                  APR_POOL__FILE_LINE__)
+
+#define apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator)  \
+    apr_pool_create_unmanaged_ex_debug(newpool, abort_fn, allocator, \
+                                  APR_POOL__FILE_LINE__)
+
+#endif
+
+/**
+ * Create a new pool.
+ * @param newpool The pool we have just created.
+ * @param parent The parent pool.  If this is NULL, the new pool is a root
+ *        pool.  If it is non-NULL, the new pool will inherit all
+ *        of its parent pool's attributes, except the apr_pool_t will
+ *        be a sub-pool.
+ * @remark This function is thread-safe, in the sense that multiple threads
+ *         can safely create subpools of the same parent pool concurrently.
+ *         Similarly, a subpool can be created by one thread at the same
+ *         time that another thread accesses the parent pool.
+ */
+#if defined(DOXYGEN)
+APR_DECLARE(apr_status_t) apr_pool_create(apr_pool_t **newpool,
+                                          apr_pool_t *parent);
+#else
+#if APR_POOL_DEBUG
+#define apr_pool_create(newpool, parent) \
+    apr_pool_create_ex_debug(newpool, parent, NULL, NULL, \
+                             APR_POOL__FILE_LINE__)
+#else
+#define apr_pool_create(newpool, parent) \
+    apr_pool_create_ex(newpool, parent, NULL, NULL)
+#endif
+#endif
+
+/**
+ * Create a new unmanaged pool.
+ * @param newpool The pool we have just created.
+ */
+#if defined(DOXYGEN)
+APR_DECLARE(apr_status_t) apr_pool_create_core(apr_pool_t **newpool);
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged(apr_pool_t **newpool);
+#else
+#if APR_POOL_DEBUG
+#define apr_pool_create_core(newpool) \
+    apr_pool_create_unmanaged_ex_debug(newpool, NULL, NULL, \
+                                  APR_POOL__FILE_LINE__)
+#define apr_pool_create_unmanaged(newpool) \
+    apr_pool_create_unmanaged_ex_debug(newpool, NULL, NULL, \
+                                  APR_POOL__FILE_LINE__)
+#else
+#define apr_pool_create_core(newpool) \
+    apr_pool_create_unmanaged_ex(newpool, NULL, NULL)
+#define apr_pool_create_unmanaged(newpool) \
+    apr_pool_create_unmanaged_ex(newpool, NULL, NULL)
+#endif
+#endif
+
+/**
+ * Find the pool's allocator
+ * @param pool The pool to get the allocator from.
+ */
+APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool)
+                               __attribute__((nonnull(1)));
+
+/**
+ * Clear all memory in the pool and run all the cleanups. This also destroys all
+ * subpools.
+ * @param p The pool to clear
+ * @remark This does not actually free the memory, it just allows the pool
+ *         to re-use this memory for the next allocation.
+ * @see apr_pool_destroy()
+ */
+APR_DECLARE(void) apr_pool_clear(apr_pool_t *p) __attribute__((nonnull(1)));
+
+/**
+ * Debug version of apr_pool_clear.
+ * @param p See: apr_pool_clear.
+ * @param file_line Where the function is called from.
+ *        This is usually APR_POOL__FILE_LINE__.
+ * @remark Only available when APR_POOL_DEBUG is defined.
+ *         Call this directly if you have your apr_pool_clear
+ *         calls in a wrapper function and wish to override
+ *         the file_line argument to reflect the caller of
+ *         your wrapper function.  If you do not have
+ *         apr_pool_clear in a wrapper, trust the macro
+ *         and don't call apr_pool_destroy_clear directly.
+ */
+APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p,
+                                       const char *file_line)
+                  __attribute__((nonnull(1)));
+
+#if APR_POOL_DEBUG
+#define apr_pool_clear(p) \
+    apr_pool_clear_debug(p, APR_POOL__FILE_LINE__)
+#endif
+
+/**
+ * Destroy the pool. This takes similar action as apr_pool_clear() and then
+ * frees all the memory.
+ * @param p The pool to destroy
+ * @remark This will actually free the memory
+ */
+APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p) __attribute__((nonnull(1)));
+
+/**
+ * Debug version of apr_pool_destroy.
+ * @param p See: apr_pool_destroy.
+ * @param file_line Where the function is called from.
+ *        This is usually APR_POOL__FILE_LINE__.
+ * @remark Only available when APR_POOL_DEBUG is defined.
+ *         Call this directly if you have your apr_pool_destroy
+ *         calls in a wrapper function and wish to override
+ *         the file_line argument to reflect the caller of
+ *         your wrapper function.  If you do not have
+ *         apr_pool_destroy in a wrapper, trust the macro
+ *         and don't call apr_pool_destroy_debug directly.
+ */
+APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p,
+                                         const char *file_line)
+                  __attribute__((nonnull(1)));
+
+#if APR_POOL_DEBUG
+#define apr_pool_destroy(p) \
+    apr_pool_destroy_debug(p, APR_POOL__FILE_LINE__)
+#endif
+
+
+/*
+ * Memory allocation
+ */
+
+/**
+ * Allocate a block of memory from a pool
+ * @param p The pool to allocate from
+ * @param size The amount of memory to allocate
+ * @return The allocated memory
+ */
+APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+                    __attribute__((alloc_size(2)))
+#endif
+                    __attribute__((nonnull(1)));
+
+/**
+ * Debug version of apr_palloc
+ * @param p See: apr_palloc
+ * @param size See: apr_palloc
+ * @param file_line Where the function is called from.
+ *        This is usually APR_POOL__FILE_LINE__.
+ * @return See: apr_palloc
+ */
+APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *p, apr_size_t size,
+                                     const char *file_line)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+                    __attribute__((alloc_size(2)))
+#endif
+                    __attribute__((nonnull(1)));
+
+#if APR_POOL_DEBUG
+#define apr_palloc(p, size) \
+    apr_palloc_debug(p, size, APR_POOL__FILE_LINE__)
+#endif
+
+/**
+ * Allocate a block of memory from a pool and set all of the memory to 0
+ * @param p The pool to allocate from
+ * @param size The amount of memory to allocate
+ * @return The allocated memory
+ */
+#if defined(DOXYGEN)
+APR_DECLARE(void *) apr_pcalloc(apr_pool_t *p, apr_size_t size);
+#elif !APR_POOL_DEBUG
+#define apr_pcalloc(p, size) memset(apr_palloc(p, size), 0, size)
+#endif
+
+/**
+ * Debug version of apr_pcalloc
+ * @param p See: apr_pcalloc
+ * @param size See: apr_pcalloc
+ * @param file_line Where the function is called from.
+ *        This is usually APR_POOL__FILE_LINE__.
+ * @return See: apr_pcalloc
+ */
+APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size,
+                                      const char *file_line)
+                    __attribute__((nonnull(1)));
+
+#if APR_POOL_DEBUG
+#define apr_pcalloc(p, size) \
+    apr_pcalloc_debug(p, size, APR_POOL__FILE_LINE__)
+#endif
+
+
+/*
+ * Pool Properties
+ */
+
+/**
+ * Set the function to be called when an allocation failure occurs.
+ * @remark If the program wants APR to exit on a memory allocation error,
+ *      then this function can be called to set the callback to use (for
+ *      performing cleanup and then exiting). If this function is not called,
+ *      then APR will return an error and expect the calling program to
+ *      deal with the error accordingly.
+ */
+APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abortfunc,
+                                     apr_pool_t *pool)
+                  __attribute__((nonnull(2)));
+
+/**
+ * Get the abort function associated with the specified pool.
+ * @param pool The pool for retrieving the abort function.
+ * @return The abort function for the given pool.
+ */
+APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool)
+                             __attribute__((nonnull(1)));
+
+/**
+ * Get the parent pool of the specified pool.
+ * @param pool The pool for retrieving the parent pool.
+ * @return The parent of the given pool.
+ */
+APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool)
+                          __attribute__((nonnull(1)));
+
+/**
+ * Determine if pool a is an ancestor of pool b.
+ * @param a The pool to search
+ * @param b The pool to search for
+ * @return True if a is an ancestor of b, NULL is considered an ancestor
+ *         of all pools.
+ * @remark if compiled with APR_POOL_DEBUG, this function will also
+ * return true if A is a pool which has been guaranteed by the caller
+ * (using apr_pool_join) to have a lifetime at least as long as some
+ * ancestor of pool B.
+ */
+APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b);
+
+/**
+ * Tag a pool (give it a name)
+ * @param pool The pool to tag
+ * @param tag  The tag
+ */
+APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag)
+                  __attribute__((nonnull(1)));
+
+
+/*
+ * User data management
+ */
+
+/**
+ * Set the data associated with the current pool
+ * @param data The user data associated with the pool.
+ * @param key The key to use for association
+ * @param cleanup The cleanup program to use to cleanup the data (NULL if none)
+ * @param pool The current pool
+ * @warning The data to be attached to the pool should have a life span
+ *          at least as long as the pool it is being attached to.
+ *
+ *      Users of APR must take EXTREME care when choosing a key to
+ *      use for their data.  It is possible to accidentally overwrite
+ *      data by choosing a key that another part of the program is using.
+ *      Therefore it is advised that steps are taken to ensure that unique
+ *      keys are used for all of the userdata objects in a particular pool
+ *      (the same key in two different pools or a pool and one of its
+ *      subpools is okay) at all times.  Careful namespace prefixing of
+ *      key names is a typical way to help ensure this uniqueness.
+ *
+ */
+APR_DECLARE(apr_status_t) apr_pool_userdata_set(const void *data,
+                                                const char *key,
+                                                apr_status_t (*cleanup)(void *),
+                                                apr_pool_t *pool)
+                          __attribute__((nonnull(2,4)));
+
+/**
+ * Set the data associated with the current pool
+ * @param data The user data associated with the pool.
+ * @param key The key to use for association
+ * @param cleanup The cleanup program to use to cleanup the data (NULL if none)
+ * @param pool The current pool
+ * @note same as apr_pool_userdata_set(), except that this version doesn't
+ *       make a copy of the key (this function is useful, for example, when
+ *       the key is a string literal)
+ * @warning This should NOT be used if the key could change addresses by
+ *       any means between the apr_pool_userdata_setn() call and a
+ *       subsequent apr_pool_userdata_get() on that key, such as if a
+ *       static string is used as a userdata key in a DSO and the DSO could
+ *       be unloaded and reloaded between the _setn() and the _get().  You
+ *       MUST use apr_pool_userdata_set() in such cases.
+ * @warning More generally, the key and the data to be attached to the
+ *       pool should have a life span at least as long as the pool itself.
+ *
+ */
+APR_DECLARE(apr_status_t) apr_pool_userdata_setn(
+                                const void *data, const char *key,
+                                apr_status_t (*cleanup)(void *),
+                                apr_pool_t *pool)
+                          __attribute__((nonnull(2,4)));
+
+/**
+ * Return the data associated with the current pool.
+ * @param data The user data associated with the pool.
+ * @param key The key for the data to retrieve
+ * @param pool The current pool.
+ */
+APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key,
+                                                apr_pool_t *pool)
+                          __attribute__((nonnull(1,2,3)));
+
+
+/**
+ * @defgroup PoolCleanup  Pool Cleanup Functions
+ *
+ * Cleanups are performed in the reverse order they were registered.  That is:
+ * Last In, First Out.  A cleanup function can safely allocate memory from
+ * the pool that is being cleaned up. It can also safely register additional
+ * cleanups which will be run LIFO, directly after the current cleanup
+ * terminates.  Cleanups have to take caution in calling functions that
+ * create subpools. Subpools, created during cleanup will NOT automatically
+ * be cleaned up.  In other words, cleanups are to clean up after themselves.
+ *
+ * @{
+ */
+
+/**
+ * Register a function to be called when a pool is cleared or destroyed
+ * @param p The pool to register the cleanup with
+ * @param data The data to pass to the cleanup function.
+ * @param plain_cleanup The function to call when the pool is cleared
+ *                      or destroyed
+ * @param child_cleanup The function to call when a child process is about
+ *                      to exec - this function is called in the child, obviously!
+ */
+APR_DECLARE(void) apr_pool_cleanup_register(
+                            apr_pool_t *p, const void *data,
+                            apr_status_t (*plain_cleanup)(void *),
+                            apr_status_t (*child_cleanup)(void *))
+                  __attribute__((nonnull(3,4)));
+
+/**
+ * Register a function to be called when a pool is cleared or destroyed.
+ *
+ * Unlike apr_pool_cleanup_register which registers a cleanup
+ * that is called AFTER all subpools are destroyed, this function registers
+ * a function that will be called before any of the subpools are destroyed.
+ *
+ * @param p The pool to register the cleanup with
+ * @param data The data to pass to the cleanup function.
+ * @param plain_cleanup The function to call when the pool is cleared
+ *                      or destroyed
+ */
+APR_DECLARE(void) apr_pool_pre_cleanup_register(
+                            apr_pool_t *p, const void *data,
+                            apr_status_t (*plain_cleanup)(void *))
+                  __attribute__((nonnull(3)));
+
+/**
+ * Remove a previously registered cleanup function.
+ * 
+ * The cleanup most recently registered with @a p having the same values of
+ * @a data and @a cleanup will be removed.
+ *
+ * @param p The pool to remove the cleanup from
+ * @param data The data of the registered cleanup
+ * @param cleanup The function to remove from cleanup
+ * @remarks For some strange reason only the plain_cleanup is handled by this
+ *          function
+ */
+APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data,
+                                        apr_status_t (*cleanup)(void *))
+                  __attribute__((nonnull(3)));
+
+/**
+ * Replace the child cleanup function of a previously registered cleanup.
+ * 
+ * The cleanup most recently registered with @a p having the same values of
+ * @a data and @a plain_cleanup will have the registered child cleanup
+ * function replaced with @a child_cleanup.
+ *
+ * @param p The pool of the registered cleanup
+ * @param data The data of the registered cleanup
+ * @param plain_cleanup The plain cleanup function of the registered cleanup
+ * @param child_cleanup The function to register as the child cleanup
+ */
+APR_DECLARE(void) apr_pool_child_cleanup_set(
+                        apr_pool_t *p, const void *data,
+                        apr_status_t (*plain_cleanup)(void *),
+                        apr_status_t (*child_cleanup)(void *))
+                  __attribute__((nonnull(3,4)));
+
+/**
+ * Run the specified cleanup function immediately and unregister it.
+ *
+ * The cleanup most recently registered with @a p having the same values of
+ * @a data and @a cleanup will be removed and @a cleanup will be called
+ * with @a data as the argument.
+ *
+ * @param p The pool to remove the cleanup from
+ * @param data The data to remove from cleanup
+ * @param cleanup The function to remove from cleanup
+ */
+APR_DECLARE(apr_status_t) apr_pool_cleanup_run(apr_pool_t *p, void *data,
+                                               apr_status_t (*cleanup)(void *))
+                          __attribute__((nonnull(3)));
+
+/**
+ * An empty cleanup function.
+ * 
+ * Passed to apr_pool_cleanup_register() when no cleanup is required.
+ *
+ * @param data The data to cleanup, will not be used by this function.
+ */
+APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data);
+
+/**
+ * Run all registered child cleanups, in preparation for an exec()
+ * call in a forked child -- close files, etc., but *don't* flush I/O
+ * buffers, *don't* wait for subprocesses, and *don't* free any
+ * memory.
+ */
+APR_DECLARE(void) apr_pool_cleanup_for_exec(void);
+
+/** @} */
+
+/**
+ * @defgroup PoolDebug Pool Debugging functions.
+ *
+ * pools have nested lifetimes -- sub_pools are destroyed when the
+ * parent pool is cleared.  We allow certain liberties with operations
+ * on things such as tables (and on other structures in a more general
+ * sense) where we allow the caller to insert values into a table which
+ * were not allocated from the table's pool.  The table's data will
+ * remain valid as long as all the pools from which its values are
+ * allocated remain valid.
+ *
+ * For example, if B is a sub pool of A, and you build a table T in
+ * pool B, then it's safe to insert data allocated in A or B into T
+ * (because B lives at most as long as A does, and T is destroyed when
+ * B is cleared/destroyed).  On the other hand, if S is a table in
+ * pool A, it is safe to insert data allocated in A into S, but it
+ * is *not safe* to insert data allocated from B into S... because
+ * B can be cleared/destroyed before A is (which would leave dangling
+ * pointers in T's data structures).
+ *
+ * In general we say that it is safe to insert data into a table T
+ * if the data is allocated in any ancestor of T's pool.  This is the
+ * basis on which the APR_POOL_DEBUG code works -- it tests these ancestor
+ * relationships for all data inserted into tables.  APR_POOL_DEBUG also
+ * provides tools (apr_pool_find, and apr_pool_is_ancestor) for other
+ * folks to implement similar restrictions for their own data
+ * structures.
+ *
+ * However, sometimes this ancestor requirement is inconvenient --
+ * sometimes it's necessary to create a sub pool where the sub pool is
+ * guaranteed to have the same lifetime as the parent pool.  This is a
+ * guarantee implemented by the *caller*, not by the pool code.  That
+ * is, the caller guarantees they won't destroy the sub pool
+ * individually prior to destroying the parent pool.
+ *
+ * In this case the caller must call apr_pool_join() to indicate this
+ * guarantee to the APR_POOL_DEBUG code.
+ *
+ * These functions are only implemented when #APR_POOL_DEBUG is set.
+ *
+ * @{
+ */
+#if APR_POOL_DEBUG || defined(DOXYGEN)
+/**
+ * Guarantee that a subpool has the same lifetime as the parent.
+ * @param p The parent pool
+ * @param sub The subpool
+ */
+APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub)
+                  __attribute__((nonnull(2)));
+
+/**
+ * Find a pool from something allocated in it.
+ * @param mem The thing allocated in the pool
+ * @return The pool it is allocated in
+ */
+APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem);
+
+/**
+ * Report the number of bytes currently in the pool
+ * @param p The pool to inspect
+ * @param recurse Recurse/include the subpools' sizes
+ * @return The number of bytes
+ */
+APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse)
+                        __attribute__((nonnull(1)));
+
+/**
+ * Lock a pool
+ * @param pool The pool to lock
+ * @param flag  The flag
+ */
+APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag);
+
+/* @} */
+
+#else /* APR_POOL_DEBUG or DOXYGEN */
+
+#ifdef apr_pool_join
+#undef apr_pool_join
+#endif
+#define apr_pool_join(a,b)
+
+#ifdef apr_pool_lock
+#undef apr_pool_lock
+#endif
+#define apr_pool_lock(pool, lock)
+
+#endif /* APR_POOL_DEBUG or DOXYGEN */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !APR_POOLS_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_shm.h
===================================================================
--- vendor/apache/apr/dist/include/apr_shm.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_shm.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,146 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_SHM_H
-#define APR_SHM_H
-
-/**
- * @file apr_shm.h
- * @brief APR Shared Memory Routines
- */
-
-#include "apr.h"
-#include "apr_pools.h"
-#include "apr_errno.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_shm Shared Memory Routines
- * @ingroup APR 
- * @{
- */
-
-/**
- * Private, platform-specific data struture representing a shared memory
- * segment.
- */
-typedef struct apr_shm_t apr_shm_t;
-
-/**
- * Create and make accessable a shared memory segment.
- * @param m The shared memory structure to create.
- * @param reqsize The desired size of the segment.
- * @param filename The file to use for shared memory on platforms that
- *        require it.
- * @param pool the pool from which to allocate the shared memory
- *        structure.
- * @remark A note about Anonymous vs. Named shared memory segments:
- *         Not all plaforms support anonymous shared memory segments, but in
- *         some cases it is prefered over other types of shared memory
- *         implementations. Passing a NULL 'file' parameter to this function
- *         will cause the subsystem to use anonymous shared memory segments.
- *         If such a system is not available, APR_ENOTIMPL is returned.
- * @remark A note about allocation sizes:
- *         On some platforms it is necessary to store some metainformation
- *         about the segment within the actual segment. In order to supply
- *         the caller with the requested size it may be necessary for the
- *         implementation to request a slightly greater segment length
- *         from the subsystem. In all cases, the apr_shm_baseaddr_get()
- *         function will return the first usable byte of memory.
- * 
- */
-APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
-                                         apr_size_t reqsize,
-                                         const char *filename,
-                                         apr_pool_t *pool);
-
-/**
- * Remove named resource associated with a shared memory segment,
- * preventing attachments to the resource, but not destroying it.
- * @param filename The filename associated with shared-memory segment which
- *        needs to be removed
- * @param pool The pool used for file operations
- * @remark This function is only supported on platforms which support
- * name-based shared memory segments, and will return APR_ENOTIMPL on
- * platforms without such support.  Removing the file while the shm
- * is in use is not entirely portable, caller may use this to enhance
- * obscurity of the resource, but be prepared for the the call to fail,
- * and for concurrent attempts to create a resource of the same name
- * to also fail.  The pool cleanup of apr_shm_create (apr_shm_destroy)
- * also removes the named resource.
- */
-APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
-                                         apr_pool_t *pool);
-
-/**
- * Destroy a shared memory segment and associated memory.
- * @param m The shared memory segment structure to destroy.
- */
-APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m);
-
-/**
- * Attach to a shared memory segment that was created
- * by another process.
- * @param m The shared memory structure to create.
- * @param filename The file used to create the original segment.
- *        (This MUST match the original filename.)
- * @param pool the pool from which to allocate the shared memory
- *        structure for this process.
- */
-APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
-                                         const char *filename,
-                                         apr_pool_t *pool);
-
-/**
- * Detach from a shared memory segment without destroying it.
- * @param m The shared memory structure representing the segment
- *        to detach from.
- */
-APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m);
-
-/**
- * Retrieve the base address of the shared memory segment.
- * NOTE: This address is only usable within the callers address
- * space, since this API does not guarantee that other attaching
- * processes will maintain the same address mapping.
- * @param m The shared memory segment from which to retrieve
- *        the base address.
- * @return address, aligned by APR_ALIGN_DEFAULT.
- */
-APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m);
-
-/**
- * Retrieve the length of a shared memory segment in bytes.
- * @param m The shared memory segment from which to retrieve
- *        the segment length.
- */
-APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m);
-
-/**
- * Get the pool used by this shared memory segment.
- */
-APR_POOL_DECLARE_ACCESSOR(shm);
-
-/** @} */ 
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* APR_SHM_T */

Copied: vendor/apache/apr/1.5.2/include/apr_shm.h (from rev 9273, vendor/apache/apr/dist/include/apr_shm.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_shm.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_shm.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,208 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_SHM_H
+#define APR_SHM_H
+
+/**
+ * @file apr_shm.h
+ * @brief APR Shared Memory Routines
+ */
+
+#include "apr.h"
+#include "apr_pools.h"
+#include "apr_errno.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_shm Shared Memory Routines
+ * @ingroup APR 
+ * @{
+ */
+
+/**
+ * Private, platform-specific data struture representing a shared memory
+ * segment.
+ */
+typedef struct apr_shm_t apr_shm_t;
+
+/**
+ * Create and make accessible a shared memory segment with default
+ * properties.
+ * @param m The shared memory structure to create.
+ * @param reqsize The desired size of the segment.
+ * @param filename The file to use for shared memory on platforms that
+ *        require it.
+ * @param pool the pool from which to allocate the shared memory
+ *        structure.
+ * @remark A note about Anonymous vs. Named shared memory segments:
+ *         Not all plaforms support anonymous shared memory segments, but in
+ *         some cases it is prefered over other types of shared memory
+ *         implementations. Passing a NULL 'file' parameter to this function
+ *         will cause the subsystem to use anonymous shared memory segments.
+ *         If such a system is not available, APR_ENOTIMPL is returned.
+ * @remark A note about allocation sizes:
+ *         On some platforms it is necessary to store some metainformation
+ *         about the segment within the actual segment. In order to supply
+ *         the caller with the requested size it may be necessary for the
+ *         implementation to request a slightly greater segment length
+ *         from the subsystem. In all cases, the apr_shm_baseaddr_get()
+ *         function will return the first usable byte of memory.
+ * 
+ */
+APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
+                                         apr_size_t reqsize,
+                                         const char *filename,
+                                         apr_pool_t *pool);
+
+/**
+ * Special processing flags for apr_shm_create_ex() and apr_shm_attach_ex().
+ */
+#define APR_SHM_NS_LOCAL    1 /* Create or attach to named shared memory
+                               * segment in the "Local" namespace on
+                               * Windows.  (Ignored on other platforms.)
+                               * By default, the "Global" namespace is
+                               * used for privileged processes and the
+                               * "Local" namespace is used otherwise.
+                               */
+#define APR_SHM_NS_GLOBAL   2 /* Create or attach to named shared memory
+                               * segment in the "Global" namespace on
+                               * Windows.  (Ignored on other platforms.)
+                               */
+
+/**
+ * Create and make accessible a shared memory segment with platform-
+ * specific processing.
+ * @param m The shared memory structure to create.
+ * @param reqsize The desired size of the segment.
+ * @param filename The file to use for shared memory on platforms that
+ *        require it.
+ * @param pool the pool from which to allocate the shared memory
+ *        structure.
+ * @param flags mask of APR_SHM_* (defined above)
+ * @remark A note about Anonymous vs. Named shared memory segments:
+ *         Not all plaforms support anonymous shared memory segments, but in
+ *         some cases it is prefered over other types of shared memory
+ *         implementations. Passing a NULL 'file' parameter to this function
+ *         will cause the subsystem to use anonymous shared memory segments.
+ *         If such a system is not available, APR_ENOTIMPL is returned.
+ * @remark A note about allocation sizes:
+ *         On some platforms it is necessary to store some metainformation
+ *         about the segment within the actual segment. In order to supply
+ *         the caller with the requested size it may be necessary for the
+ *         implementation to request a slightly greater segment length
+ *         from the subsystem. In all cases, the apr_shm_baseaddr_get()
+ *         function will return the first usable byte of memory.
+ * 
+ */
+APR_DECLARE(apr_status_t) apr_shm_create_ex(apr_shm_t **m,
+                                            apr_size_t reqsize,
+                                            const char *filename,
+                                            apr_pool_t *pool,
+                                            apr_int32_t flags);
+
+/**
+ * Remove named resource associated with a shared memory segment,
+ * preventing attachments to the resource, but not destroying it.
+ * @param filename The filename associated with shared-memory segment which
+ *        needs to be removed
+ * @param pool The pool used for file operations
+ * @remark This function is only supported on platforms which support
+ * name-based shared memory segments, and will return APR_ENOTIMPL on
+ * platforms without such support.  Removing the file while the shm
+ * is in use is not entirely portable, caller may use this to enhance
+ * obscurity of the resource, but be prepared for the call to fail,
+ * and for concurrent attempts to create a resource of the same name
+ * to also fail.  The pool cleanup of apr_shm_create (apr_shm_destroy)
+ * also removes the named resource.
+ */
+APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
+                                         apr_pool_t *pool);
+
+/**
+ * Destroy a shared memory segment and associated memory.
+ * @param m The shared memory segment structure to destroy.
+ */
+APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m);
+
+/**
+ * Attach to a shared memory segment that was created
+ * by another process.
+ * @param m The shared memory structure to create.
+ * @param filename The file used to create the original segment.
+ *        (This MUST match the original filename.)
+ * @param pool the pool from which to allocate the shared memory
+ *        structure for this process.
+ */
+APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
+                                         const char *filename,
+                                         apr_pool_t *pool);
+
+/**
+ * Attach to a shared memory segment that was created
+ * by another process, with platform-specific processing.
+ * @param m The shared memory structure to create.
+ * @param filename The file used to create the original segment.
+ *        (This MUST match the original filename.)
+ * @param pool the pool from which to allocate the shared memory
+ *        structure for this process.
+ * @param flags mask of APR_SHM_* (defined above)
+ */
+APR_DECLARE(apr_status_t) apr_shm_attach_ex(apr_shm_t **m,
+                                            const char *filename,
+                                            apr_pool_t *pool,
+                                            apr_int32_t flags);
+
+/**
+ * Detach from a shared memory segment without destroying it.
+ * @param m The shared memory structure representing the segment
+ *        to detach from.
+ */
+APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m);
+
+/**
+ * Retrieve the base address of the shared memory segment.
+ * NOTE: This address is only usable within the callers address
+ * space, since this API does not guarantee that other attaching
+ * processes will maintain the same address mapping.
+ * @param m The shared memory segment from which to retrieve
+ *        the base address.
+ * @return address, aligned by APR_ALIGN_DEFAULT.
+ */
+APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m);
+
+/**
+ * Retrieve the length of a shared memory segment in bytes.
+ * @param m The shared memory segment from which to retrieve
+ *        the segment length.
+ */
+APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m);
+
+/**
+ * Get the pool used by this shared memory segment.
+ */
+APR_POOL_DECLARE_ACCESSOR(shm);
+
+/** @} */ 
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* APR_SHM_T */

Copied: vendor/apache/apr/1.5.2/include/apr_skiplist.h (from rev 9273, vendor/apache/apr/dist/include/apr_skiplist.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_skiplist.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_skiplist.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,263 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_SKIPLIST_H
+#define APR_SKIPLIST_H
+/**
+ * @file apr_skiplist.h
+ * @brief APR skip list implementation
+ */
+
+#include "apr.h"
+#include "apr_portable.h"
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_skiplist Skip list implementation
+ * Refer to http://en.wikipedia.org/wiki/Skip_list for information
+ * about the purpose of and ideas behind skip lists.
+ * @ingroup APR
+ * @{
+ */
+
+/**
+ * apr_skiplist_compare is the function type that must be implemented 
+ * per object type that is used in a skip list for comparisons to maintain
+ * order. A value <0 indicates placement after this node; a value of 0
+ * indicates collision with this exact node; a value >0 indicates placement
+ * before this node.
+ * */
+typedef int (*apr_skiplist_compare) (void *, void *);
+
+/**
+ * apr_skiplist_freefunc is the function type that must be implemented
+ * to handle elements as they are removed from a skip list.
+ */
+typedef void (*apr_skiplist_freefunc) (void *);
+
+/** Opaque structure used to represent the skip list */
+struct apr_skiplist;
+/** Opaque structure used to represent the skip list */
+typedef struct apr_skiplist apr_skiplist;
+
+/** 
+ * Opaque structure used to represent abstract nodes in the skip list
+ * (an abstraction above the raw elements which are collected in the
+ * skip list).
+ */
+struct apr_skiplistnode;
+/** Opaque structure */
+typedef struct apr_skiplistnode apr_skiplistnode;
+
+/**
+ * Allocate memory using the same mechanism as the skip list.
+ * @param sl The skip list
+ * @param size The amount to allocate
+ * @remark If a pool was provided to apr_skiplist_init(), memory will
+ * be allocated from the pool or from a free list maintained with
+ * the skip list.  Otherwise, memory will be allocated using the
+ * C standard library heap functions.
+ */
+APR_DECLARE(void *) apr_skiplist_alloc(apr_skiplist *sl, size_t size);
+
+/**
+ * Free memory using the same mechanism as the skip list.
+ * @param sl The skip list
+ * @param mem The object to free
+ * @remark If a pool was provided to apr_skiplist_init(), memory will
+ * be added to a free list maintained with the skip list and be available
+ * to operations on the skip list or to other calls to apr_skiplist_alloc().
+ * Otherwise, memory will be freed using the  C standard library heap
+ * functions.
+ */
+APR_DECLARE(void) apr_skiplist_free(apr_skiplist *sl, void *mem);
+
+/**
+ * Allocate a new skip list
+ * @param sl The pointer in which to return the newly created skip list
+ * @param p The pool from which to allocate the skip list (optional).
+ * @remark Unlike most APR functions, a pool is optional.  If no pool
+ * is provided, the C standard library heap functions will be used instead.
+ */
+APR_DECLARE(apr_status_t) apr_skiplist_init(apr_skiplist **sl, apr_pool_t *p);
+
+/**
+ * Set the comparison functions to be used for searching the skip list.
+ * @param sl The skip list
+ * @param XXX1 FIXME
+ * @param XXX2 FIXME
+ *
+ * @remark If existing comparison functions are being replaced, the index
+ * will be replaced during this call.  That is a potentially expensive
+ * operation.
+ */
+APR_DECLARE(void) apr_skiplist_set_compare(apr_skiplist *sl, apr_skiplist_compare XXX1,
+                             apr_skiplist_compare XXX2);
+
+/**
+ * Set the indexing functions to the specified comparison functions and
+ * rebuild the index.
+ * @param sl The skip list
+ * @param XXX1 FIXME
+ * @param XXX2 FIXME
+ *
+ * @remark If an index already exists, it will not be replaced and the
+ * comparison functions will not be changed.
+ */
+APR_DECLARE(void) apr_skiplist_add_index(apr_skiplist *sl, apr_skiplist_compare XXX1,
+                        apr_skiplist_compare XXX2);
+
+/**
+ * Return the list maintained by the skip list abstraction.
+ * @param sl The skip list
+ */
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_getlist(apr_skiplist *sl);
+
+/**
+ * Return the next matching element in the skip list using the specified
+ * comparison function.
+ * @param sl The skip list
+ * @param data The value to search for
+ * @param iter A pointer to the returned skip list node representing the element
+ * found
+ * @param func The comparison function to use
+ */
+APR_DECLARE(void *) apr_skiplist_find_compare(apr_skiplist *sl,
+                               void *data,
+                               apr_skiplistnode **iter,
+                               apr_skiplist_compare func);
+
+/**
+ * Return the next matching element in the skip list using the current comparison
+ * function.
+ * @param sl The skip list
+ * @param data The value to search for
+ * @param iter A pointer to the returned skip list node representing the element
+ * found
+ */
+APR_DECLARE(void *) apr_skiplist_find(apr_skiplist *sl, void *data, apr_skiplistnode **iter);
+
+/**
+ * Return the next element in the skip list.
+ * @param sl The skip list
+ * @param iter On entry, a pointer to the skip list node to start with; on return,
+ * a pointer to the skip list node representing the element returned
+ * @remark If iter points to a NULL value on entry, NULL will be returned.
+ */
+APR_DECLARE(void *) apr_skiplist_next(apr_skiplist *sl, apr_skiplistnode **iter);
+
+/**
+ * Return the previous element in the skip list.
+ * @param sl The skip list
+ * @param iter On entry, a pointer to the skip list node to start with; on return,
+ * a pointer to the skip list node representing the element returned
+ * @remark If iter points to a NULL value on entry, NULL will be returned.
+ */
+APR_DECLARE(void *) apr_skiplist_previous(apr_skiplist *sl, apr_skiplistnode **iter);
+
+/**
+ * Insert an element into the skip list using the specified comparison function
+ * if it does not already exist.
+ * @param sl The skip list
+ * @param data The element to insert
+ * @param comp The comparison function to use for placement into the skip list
+ */
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert_compare(apr_skiplist *sl,
+                                          void *data, apr_skiplist_compare comp);
+
+/**
+ * Insert an element into the skip list using the existing comparison function
+ * if it does not already exist (as determined by the comparison function)
+ * @param sl The skip list
+ * @param data The element to insert
+ * @remark If no comparison function has been set for the skip list, the element
+ * will not be inserted and NULL will be returned.
+ */
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert(apr_skiplist* sl, void *data);
+
+/**
+ * Remove an element from the skip list using the specified comparison function for
+ * locating the element. In the case of duplicates, the 1st entry will be removed.
+ * @param sl The skip list
+ * @param data The element to remove
+ * @param myfree A function to be called for each removed element
+ * @param comp The comparison function to use for placement into the skip list
+ * @remark If the element is not found, 0 will be returned.  Otherwise, the heightXXX
+ * will be returned.
+ */
+APR_DECLARE(int) apr_skiplist_remove_compare(apr_skiplist *sl, void *data,
+                               apr_skiplist_freefunc myfree, apr_skiplist_compare comp);
+
+/**
+ * Remove an element from the skip list using the existing comparison function for
+ * locating the element. In the case of duplicates, the 1st entry will be removed.
+ * @param sl The skip list
+ * @param data The element to remove
+ * @param myfree A function to be called for each removed element
+ * @remark If the element is not found, 0 will be returned.  Otherwise, the heightXXX
+ * will be returned.
+ * @remark If no comparison function has been set for the skip list, the element
+ * will not be removed and 0 will be returned.
+ */
+APR_DECLARE(int) apr_skiplist_remove(apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree);
+
+/**
+ * Remove all elements from the skip list.
+ * @param sl The skip list
+ * @param myfree A function to be called for each removed element
+ */
+APR_DECLARE(void) apr_skiplist_remove_all(apr_skiplist *sl, apr_skiplist_freefunc myfree);
+
+/**
+ * Remove each element from the skip list.
+ * @param sl The skip list
+ * @param myfree A function to be called for each removed element
+ */
+APR_DECLARE(void) apr_skiplist_destroy(apr_skiplist *sl, apr_skiplist_freefunc myfree);
+
+/**
+ * Return the first element in the skip list, removing the element from the skip list.
+ * @param sl The skip list
+ * @param myfree A function to be called for the removed element
+ * @remark NULL will be returned if there are no elements
+ */
+APR_DECLARE(void *) apr_skiplist_pop(apr_skiplist *sl, apr_skiplist_freefunc myfree);
+
+/**
+ * Return the first element in the skip list, leaving the element in the skip list.
+ * @param sl The skip list
+ * @remark NULL will be returned if there are no elements
+ */
+APR_DECLARE(void *) apr_skiplist_peek(apr_skiplist *sl);
+
+/**
+ * Merge two skip lists.  XXX SEMANTICS
+ * @param sl1 One of two skip lists to be merged
+ * @param sl2 The other of two skip lists to be merged
+ */
+APR_DECLARE(apr_skiplist *) apr_skiplist_merge(apr_skiplist *sl1, apr_skiplist *sl2);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ! APR_SKIPLIST_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_strings.h
===================================================================
--- vendor/apache/apr/dist/include/apr_strings.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_strings.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,374 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Portions of this file are covered by */
-/* -*- mode: c; c-file-style: "k&r" -*-
-
-  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.
-  Copyright (C) 2000 by Martin Pool <mbp at humbug.org.au>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef APR_STRINGS_H
-#define APR_STRINGS_H
-
-/**
- * @file apr_strings.h
- * @brief APR Strings library
- */
-
-#include "apr.h"
-#include "apr_errno.h"
-#include "apr_pools.h"
-#define APR_WANT_IOVEC
-#include "apr_want.h"
-
-#if APR_HAVE_STDARG_H
-#include <stdarg.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_strings String routines
- * @ingroup APR 
- * @{
- */
-
-/**
- * Do a natural order comparison of two strings.
- * @param a The first string to compare
- * @param b The second string to compare
- * @return Either <0, 0, or >0.  If the first string is less than the second
- *          this returns <0, if they are equivalent it returns 0, and if the
- *          first string is greater than second string it retuns >0.
- */
-APR_DECLARE(int) apr_strnatcmp(char const *a, char const *b);
-
-/**
- * Do a natural order comparison of two strings ignoring the case of the 
- * strings.
- * @param a The first string to compare
- * @param b The second string to compare
- * @return Either <0, 0, or >0.  If the first string is less than the second
- *         this returns <0, if they are equivalent it returns 0, and if the
- *         first string is greater than second string it retuns >0.
- */
-APR_DECLARE(int) apr_strnatcasecmp(char const *a, char const *b);
-
-/**
- * duplicate a string into memory allocated out of a pool
- * @param p The pool to allocate out of
- * @param s The string to duplicate
- * @return The new string
- */
-APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s);
-
-/**
- * Create a null-terminated string by making a copy of a sequence
- * of characters and appending a null byte
- * @param p The pool to allocate out of
- * @param s The block of characters to duplicate
- * @param n The number of characters to duplicate
- * @return The new string
- * @remark This is a faster alternative to apr_pstrndup, for use
- *         when you know that the string being duplicated really
- *         has 'n' or more characters.  If the string might contain
- *         fewer characters, use apr_pstrndup.
- */
-APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n)
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-    __attribute__((alloc_size(3)))
-#endif
-    ;
-
-/**
- * Duplicate at most n characters of a string into memory allocated 
- * out of a pool; the new string will be NUL-terminated
- * @param p The pool to allocate out of
- * @param s The string to duplicate
- * @param n The maximum number of characters to duplicate
- * @return The new string
- * @remark The amount of memory allocated from the pool is the length
- *         of the returned string including the NUL terminator
- */
-APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n);
-
-/**
- * Duplicate a block of memory.
- *
- * @param p The pool to allocate from
- * @param m The memory to duplicate
- * @param n The number of bytes to duplicate
- * @return The new block of memory
- */
-APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n)
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-    __attribute__((alloc_size(3)))
-#endif
-    ;
-
-/**
- * Concatenate multiple strings, allocating memory out a pool
- * @param p The pool to allocate out of
- * @param ... The strings to concatenate.  The final string must be NULL
- * @return The new string
- */
-APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...)
-#if defined(__GNUC__) && __GNUC__ >= 4
-    __attribute__((sentinel))
-#endif
-    ;
-
-/**
- * Concatenate multiple strings specified in a writev-style vector
- * @param p The pool from which to allocate
- * @param vec The strings to concatenate
- * @param nvec The number of strings to concatenate
- * @param nbytes (output) strlen of new string (pass in NULL to omit)
- * @return The new string
- */
-APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *p, const struct iovec *vec,
-                                 apr_size_t nvec, apr_size_t *nbytes);
-
-/**
- * printf-style style printing routine.  The data is output to a string 
- * allocated from a pool
- * @param p The pool to allocate out of
- * @param fmt The format of the string
- * @param ap The arguments to use while printing the data
- * @return The new string
- */
-APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap);
-
-/**
- * printf-style style printing routine.  The data is output to a string 
- * allocated from a pool
- * @param p The pool to allocate out of
- * @param fmt The format of the string
- * @param ... The arguments to use while printing the data
- * @return The new string
- */
-APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...)
-        __attribute__((format(printf,2,3)));
-
-/**
- * Copy up to dst_size characters from src to dst; does not copy
- * past a NUL terminator in src, but always terminates dst with a NUL
- * regardless.
- * @param dst The destination string
- * @param src The source string
- * @param dst_size The space available in dst; dst always receives
- *                 NUL termination, so if src is longer than
- *                 dst_size, the actual number of characters copied is
- *                 dst_size - 1.
- * @return Pointer to the NUL terminator of the destination string, dst
- * @remark
- * <PRE>
- * Note the differences between this function and strncpy():
- *  1) strncpy() doesn't always NUL terminate; apr_cpystrn() does.
- *  2) strncpy() pads the destination string with NULs, which is often 
- *     unnecessary; apr_cpystrn() does not.
- *  3) strncpy() returns a pointer to the beginning of the dst string;
- *     apr_cpystrn() returns a pointer to the NUL terminator of dst, 
- *     to allow a check for truncation.
- * </PRE>
- */
-APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src,
-                                apr_size_t dst_size);
-
-/**
- * Remove all whitespace from a string
- * @param dest The destination string.  It is okay to modify the string
- *             in place.  Namely dest == src
- * @param src The string to rid the spaces from.
- * @return A pointer to the destination string's null terminator.
- */
-APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src);
-
-/**
- * Convert the arguments to a program from one string to an array of 
- * strings terminated by a NULL pointer
- * @param arg_str The arguments to convert
- * @param argv_out Output location.  This is a pointer to an array of strings.
- * @param token_context Pool to use.
- */
-APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str,
-                                               char ***argv_out,
-                                               apr_pool_t *token_context);
-
-/**
- * Split a string into separate null-terminated tokens.  The tokens are 
- * delimited in the string by one or more characters from the sep
- * argument.
- * @param str The string to separate; this should be specified on the
- *            first call to apr_strtok() for a given string, and NULL
- *            on subsequent calls.
- * @param sep The set of delimiters
- * @param last Internal state saved by apr_strtok() between calls.
- * @return The next token from the string
- */
-APR_DECLARE(char *) apr_strtok(char *str, const char *sep, char **last);
-
-/**
- * @defgroup APR_Strings_Snprintf snprintf implementations
- * @warning
- * These are snprintf implementations based on apr_vformatter().
- *
- * Note that various standards and implementations disagree on the return
- * value of snprintf, and side-effects due to %n in the formatting string.
- * apr_snprintf (and apr_vsnprintf) behaves as follows:
- *
- * Process the format string until the entire string is exhausted, or
- * the buffer fills.  If the buffer fills then stop processing immediately
- * (so no further %n arguments are processed), and return the buffer
- * length.  In all cases the buffer is NUL terminated. It will return the
- * number of characters inserted into the buffer, not including the
- * terminating NUL. As a special case, if len is 0, apr_snprintf will
- * return the number of characters that would have been inserted if
- * the buffer had been infinite (in this case, *buffer can be NULL)
- *
- * In no event does apr_snprintf return a negative number.
- * @{
- */
-
-/**
- * snprintf routine based on apr_vformatter.  This means it understands the
- * same extensions.
- * @param buf The buffer to write to
- * @param len The size of the buffer
- * @param format The format string
- * @param ... The arguments to use to fill out the format string.
- */
-APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len,
-                                     const char *format, ...)
-        __attribute__((format(printf,3,4)));
-
-/**
- * vsnprintf routine based on apr_vformatter.  This means it understands the
- * same extensions.
- * @param buf The buffer to write to
- * @param len The size of the buffer
- * @param format The format string
- * @param ap The arguments to use to fill out the format string.
- */
-APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format,
-                               va_list ap);
-/** @} */
-
-/**
- * create a string representation of an int, allocated from a pool
- * @param p The pool from which to allocate
- * @param n The number to format
- * @return The string representation of the number
- */
-APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n);
-
-/**
- * create a string representation of a long, allocated from a pool
- * @param p The pool from which to allocate
- * @param n The number to format
- * @return The string representation of the number
- */
-APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n);
-
-/**
- * create a string representation of an apr_off_t, allocated from a pool
- * @param p The pool from which to allocate
- * @param n The number to format
- * @return The string representation of the number
- */
-APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n);
-
-/**
- * Convert a numeric string into an apr_off_t numeric value.
- * @param offset The value of the parsed string.
- * @param buf The string to parse. It may contain optional whitespace,
- *   followed by an optional '+' (positive, default) or '-' (negative)
- *   character, followed by an optional '0x' prefix if base is 0 or 16,
- *   followed by numeric digits appropriate for base.
- * @param end A pointer to the end of the valid character in buf. If
- *   not NULL, it is set to the first invalid character in buf.
- * @param base A numeric base in the range between 2 and 36 inclusive,
- *   or 0.  If base is zero, buf will be treated as base ten unless its
- *   digits are prefixed with '0x', in which case it will be treated as
- *   base 16.
- * @bug *end breaks type safety; where *buf is const, *end needs to be
- * declared as const in APR 2.0
- */
-APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *buf, 
-                                      char **end, int base);
-
-/**
- * parse a numeric string into a 64-bit numeric value
- * @param buf The string to parse. It may contain optional whitespace,
- *   followed by an optional '+' (positive, default) or '-' (negative)
- *   character, followed by an optional '0x' prefix if base is 0 or 16,
- *   followed by numeric digits appropriate for base.
- * @param end A pointer to the end of the valid character in buf. If
- *   not NULL, it is set to the first invalid character in buf.
- * @param base A numeric base in the range between 2 and 36 inclusive,
- *   or 0.  If base is zero, buf will be treated as base ten unless its
- *   digits are prefixed with '0x', in which case it will be treated as
- *   base 16.
- * @return The numeric value of the string.  On overflow, errno is set
- * to ERANGE.  On success, errno is set to 0.
- */
-APR_DECLARE(apr_int64_t) apr_strtoi64(const char *buf, char **end, int base);
-
-/**
- * parse a base-10 numeric string into a 64-bit numeric value.
- * Equivalent to apr_strtoi64(buf, (char**)NULL, 10).
- * @param buf The string to parse
- * @return The numeric value of the string.  On overflow, errno is set
- * to ERANGE.  On success, errno is set to 0.
- */
-APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf);
-
-/**
- * Format a binary size (magnitiudes are 2^10 rather than 10^3) from an apr_off_t,
- * as bytes, K, M, T, etc, to a four character compacted human readable string.
- * @param size The size to format
- * @param buf The 5 byte text buffer (counting the trailing null)
- * @return The buf passed to apr_strfsize()
- * @remark All negative sizes report '  - ', apr_strfsize only formats positive values.
- */
-APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* !APR_STRINGS_H */

Copied: vendor/apache/apr/1.5.2/include/apr_strings.h (from rev 9273, vendor/apache/apr/dist/include/apr_strings.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_strings.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_strings.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,380 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Portions of this file are covered by */
+/* -*- mode: c; c-file-style: "k&r" -*-
+
+  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.
+  Copyright (C) 2000 by Martin Pool <mbp at humbug.org.au>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef APR_STRINGS_H
+#define APR_STRINGS_H
+
+/**
+ * @file apr_strings.h
+ * @brief APR Strings library
+ */
+
+#include "apr.h"
+#include "apr_errno.h"
+#include "apr_pools.h"
+#define APR_WANT_IOVEC
+#include "apr_want.h"
+
+#if APR_HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_strings String routines
+ * @ingroup APR 
+ * @{
+ */
+
+/**
+ * Do a natural order comparison of two strings.
+ * @param a The first string to compare
+ * @param b The second string to compare
+ * @return Either <0, 0, or >0.  If the first string is less than the second
+ *          this returns <0, if they are equivalent it returns 0, and if the
+ *          first string is greater than second string it retuns >0.
+ */
+APR_DECLARE(int) apr_strnatcmp(char const *a, char const *b);
+
+/**
+ * Do a natural order comparison of two strings ignoring the case of the 
+ * strings.
+ * @param a The first string to compare
+ * @param b The second string to compare
+ * @return Either <0, 0, or >0.  If the first string is less than the second
+ *         this returns <0, if they are equivalent it returns 0, and if the
+ *         first string is greater than second string it retuns >0.
+ */
+APR_DECLARE(int) apr_strnatcasecmp(char const *a, char const *b);
+
+/**
+ * duplicate a string into memory allocated out of a pool
+ * @param p The pool to allocate out of
+ * @param s The string to duplicate
+ * @return The new string or NULL if s == NULL
+ */
+APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s);
+
+/**
+ * Create a null-terminated string by making a copy of a sequence
+ * of characters and appending a null byte
+ * @param p The pool to allocate out of
+ * @param s The block of characters to duplicate
+ * @param n The number of characters to duplicate
+ * @return The new string or NULL if s == NULL
+ * @remark This is a faster alternative to apr_pstrndup, for use
+ *         when you know that the string being duplicated really
+ *         has 'n' or more characters.  If the string might contain
+ *         fewer characters, use apr_pstrndup.
+ */
+APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+    __attribute__((alloc_size(3)))
+#endif
+    ;
+
+/**
+ * Duplicate at most n characters of a string into memory allocated 
+ * out of a pool; the new string will be NUL-terminated
+ * @param p The pool to allocate out of
+ * @param s The string to duplicate
+ * @param n The maximum number of characters to duplicate
+ * @return The new string or NULL if s == NULL
+ * @remark The amount of memory allocated from the pool is the length
+ *         of the returned string including the NUL terminator
+ */
+APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n);
+
+/**
+ * Duplicate a block of memory.
+ *
+ * @param p The pool to allocate from
+ * @param m The memory to duplicate
+ * @param n The number of bytes to duplicate
+ * @return The new block of memory or NULL if m == NULL
+ */
+APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+    __attribute__((alloc_size(3)))
+#endif
+    ;
+
+/**
+ * Concatenate multiple strings, allocating memory out a pool
+ * @param p The pool to allocate out of
+ * @param ... The strings to concatenate.  The final string must be NULL
+ * @return The new string
+ */
+APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...)
+#if defined(__GNUC__) && __GNUC__ >= 4
+    __attribute__((sentinel))
+#endif
+    ;
+
+/**
+ * Concatenate multiple strings specified in a writev-style vector
+ * @param p The pool from which to allocate
+ * @param vec The strings to concatenate
+ * @param nvec The number of strings to concatenate
+ * @param nbytes (output) strlen of new string (pass in NULL to omit)
+ * @return The new string
+ */
+APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *p, const struct iovec *vec,
+                                 apr_size_t nvec, apr_size_t *nbytes);
+
+/**
+ * printf-style style printing routine.  The data is output to a string 
+ * allocated from a pool
+ * @param p The pool to allocate out of
+ * @param fmt The format of the string
+ * @param ap The arguments to use while printing the data
+ * @return The new string
+ */
+APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap);
+
+/**
+ * printf-style style printing routine.  The data is output to a string 
+ * allocated from a pool
+ * @param p The pool to allocate out of
+ * @param fmt The format of the string
+ * @param ... The arguments to use while printing the data
+ * @return The new string
+ */
+APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...)
+        __attribute__((format(printf,2,3)));
+
+/**
+ * Copy up to dst_size characters from src to dst; does not copy
+ * past a NUL terminator in src, but always terminates dst with a NUL
+ * regardless.
+ * @param dst The destination string
+ * @param src The source string
+ * @param dst_size The space available in dst; dst always receives
+ *                 NUL termination, so if src is longer than
+ *                 dst_size, the actual number of characters copied is
+ *                 dst_size - 1.
+ * @return Pointer to the NUL terminator of the destination string, dst
+ * @remark
+ * <PRE>
+ * Note the differences between this function and strncpy():
+ *  1) strncpy() doesn't always NUL terminate; apr_cpystrn() does.
+ *  2) strncpy() pads the destination string with NULs, which is often 
+ *     unnecessary; apr_cpystrn() does not.
+ *  3) strncpy() returns a pointer to the beginning of the dst string;
+ *     apr_cpystrn() returns a pointer to the NUL terminator of dst, 
+ *     to allow a check for truncation.
+ * </PRE>
+ */
+APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src,
+                                apr_size_t dst_size);
+
+/**
+ * Remove all whitespace from a string
+ * @param dest The destination string.  It is okay to modify the string
+ *             in place.  Namely dest == src
+ * @param src The string to rid the spaces from.
+ * @return A pointer to the destination string's null terminator.
+ */
+APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src);
+
+/**
+ * Convert the arguments to a program from one string to an array of 
+ * strings terminated by a NULL pointer
+ * @param arg_str The arguments to convert
+ * @param argv_out Output location.  This is a pointer to an array of strings.
+ * @param token_context Pool to use.
+ */
+APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str,
+                                               char ***argv_out,
+                                               apr_pool_t *token_context);
+
+/**
+ * Split a string into separate null-terminated tokens.  The tokens are 
+ * delimited in the string by one or more characters from the sep
+ * argument.
+ * @param str The string to separate; this should be specified on the
+ *            first call to apr_strtok() for a given string, and NULL
+ *            on subsequent calls.
+ * @param sep The set of delimiters
+ * @param last State saved by apr_strtok() between calls.
+ * @return The next token from the string
+ * @note the 'last' state points to the trailing NUL char of the final
+ * token, otherwise it points to the character following the current
+ * token (all successive or empty occurances of sep are skiped on the
+ * subsequent call to apr_strtok).  Therefore it is possible to avoid
+ * a strlen() determination, with the following logic;
+ * toklen = last - retval; if (*last) --toklen;
+ */
+APR_DECLARE(char *) apr_strtok(char *str, const char *sep, char **last);
+
+/**
+ * @defgroup APR_Strings_Snprintf snprintf implementations
+ * @warning
+ * These are snprintf implementations based on apr_vformatter().
+ *
+ * Note that various standards and implementations disagree on the return
+ * value of snprintf, and side-effects due to %n in the formatting string.
+ * apr_snprintf (and apr_vsnprintf) behaves as follows:
+ *
+ * Process the format string until the entire string is exhausted, or
+ * the buffer fills.  If the buffer fills then stop processing immediately
+ * (so no further %n arguments are processed), and return the buffer
+ * length.  In all cases the buffer is NUL terminated. It will return the
+ * number of characters inserted into the buffer, not including the
+ * terminating NUL. As a special case, if len is 0, apr_snprintf will
+ * return the number of characters that would have been inserted if
+ * the buffer had been infinite (in this case, *buffer can be NULL)
+ *
+ * In no event does apr_snprintf return a negative number.
+ * @{
+ */
+
+/**
+ * snprintf routine based on apr_vformatter.  This means it understands the
+ * same extensions.
+ * @param buf The buffer to write to
+ * @param len The size of the buffer
+ * @param format The format string
+ * @param ... The arguments to use to fill out the format string.
+ */
+APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len,
+                                     const char *format, ...)
+        __attribute__((format(printf,3,4)));
+
+/**
+ * vsnprintf routine based on apr_vformatter.  This means it understands the
+ * same extensions.
+ * @param buf The buffer to write to
+ * @param len The size of the buffer
+ * @param format The format string
+ * @param ap The arguments to use to fill out the format string.
+ */
+APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format,
+                               va_list ap);
+/** @} */
+
+/**
+ * create a string representation of an int, allocated from a pool
+ * @param p The pool from which to allocate
+ * @param n The number to format
+ * @return The string representation of the number
+ */
+APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n);
+
+/**
+ * create a string representation of a long, allocated from a pool
+ * @param p The pool from which to allocate
+ * @param n The number to format
+ * @return The string representation of the number
+ */
+APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n);
+
+/**
+ * create a string representation of an apr_off_t, allocated from a pool
+ * @param p The pool from which to allocate
+ * @param n The number to format
+ * @return The string representation of the number
+ */
+APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n);
+
+/**
+ * Convert a numeric string into an apr_off_t numeric value.
+ * @param offset The value of the parsed string.
+ * @param buf The string to parse. It may contain optional whitespace,
+ *   followed by an optional '+' (positive, default) or '-' (negative)
+ *   character, followed by an optional '0x' prefix if base is 0 or 16,
+ *   followed by numeric digits appropriate for base.
+ * @param end A pointer to the end of the valid character in buf. If
+ *   not NULL, it is set to the first invalid character in buf.
+ * @param base A numeric base in the range between 2 and 36 inclusive,
+ *   or 0.  If base is zero, buf will be treated as base ten unless its
+ *   digits are prefixed with '0x', in which case it will be treated as
+ *   base 16.
+ * @bug *end breaks type safety; where *buf is const, *end needs to be
+ * declared as const in APR 2.0
+ */
+APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *buf, 
+                                      char **end, int base);
+
+/**
+ * parse a numeric string into a 64-bit numeric value
+ * @param buf The string to parse. It may contain optional whitespace,
+ *   followed by an optional '+' (positive, default) or '-' (negative)
+ *   character, followed by an optional '0x' prefix if base is 0 or 16,
+ *   followed by numeric digits appropriate for base.
+ * @param end A pointer to the end of the valid character in buf. If
+ *   not NULL, it is set to the first invalid character in buf.
+ * @param base A numeric base in the range between 2 and 36 inclusive,
+ *   or 0.  If base is zero, buf will be treated as base ten unless its
+ *   digits are prefixed with '0x', in which case it will be treated as
+ *   base 16.
+ * @return The numeric value of the string.  On overflow, errno is set
+ * to ERANGE.  On success, errno is set to 0.
+ */
+APR_DECLARE(apr_int64_t) apr_strtoi64(const char *buf, char **end, int base);
+
+/**
+ * parse a base-10 numeric string into a 64-bit numeric value.
+ * Equivalent to apr_strtoi64(buf, (char**)NULL, 10).
+ * @param buf The string to parse
+ * @return The numeric value of the string.  On overflow, errno is set
+ * to ERANGE.  On success, errno is set to 0.
+ */
+APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf);
+
+/**
+ * Format a binary size (magnitiudes are 2^10 rather than 10^3) from an apr_off_t,
+ * as bytes, K, M, T, etc, to a four character compacted human readable string.
+ * @param size The size to format
+ * @param buf The 5 byte text buffer (counting the trailing null)
+ * @return The buf passed to apr_strfsize()
+ * @remark All negative sizes report '  - ', apr_strfsize only formats positive values.
+ */
+APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* !APR_STRINGS_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_tables.h
===================================================================
--- vendor/apache/apr/dist/include/apr_tables.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_tables.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,487 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_TABLES_H
-#define APR_TABLES_H
-
-/**
- * @file apr_tables.h
- * @brief APR Table library
- */
-
-#include "apr.h"
-#include "apr_pools.h"
-
-#if APR_HAVE_STDARG_H
-#include <stdarg.h>     /* for va_list */
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_tables Table and Array Functions
- * @ingroup APR 
- * Arrays are used to store data which is referenced sequentially or
- * as a stack.  Functions are provided to push and pop individual
- * elements as well as to operate on the entire array.
- *
- * Tables are used to store data which can be referenced by key.
- * Limited capabilities are provided for tables with multiple elements
- * which share a key; while key lookup will return only a single
- * element, iteration is available.  Additionally, a table can be
- * compressed to resolve duplicates.
- *
- * Both arrays and tables may store string or binary data; some features,
- * such as concatenation or merging of elements, work only for string
- * data.
- * @{
- */
-
-/** the table abstract data type */
-typedef struct apr_table_t apr_table_t;
-
-/** @see apr_array_header_t */
-typedef struct apr_array_header_t apr_array_header_t;
-
-/** An opaque array type */
-struct apr_array_header_t {
-    /** The pool the array is allocated out of */
-    apr_pool_t *pool;
-    /** The amount of memory allocated for each element of the array */
-    int elt_size;
-    /** The number of active elements in the array */
-    int nelts;
-    /** The number of elements allocated in the array */
-    int nalloc;
-    /** The elements in the array */
-    char *elts;
-};
-
-/**
- * The (opaque) structure for string-content tables.
- */
-typedef struct apr_table_entry_t apr_table_entry_t;
-
-/** The type for each entry in a string-content table */
-struct apr_table_entry_t {
-    /** The key for the current table entry */
-    char *key;          /* maybe NULL in future;
-                         * check when iterating thru table_elts
-                         */
-    /** The value for the current table entry */
-    char *val;
-
-    /** A checksum for the key, for use by the apr_table internals */
-    apr_uint32_t key_checksum;
-};
-
-/**
- * Get the elements from a table.
- * @param t The table
- * @return An array containing the contents of the table
- */
-APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t);
-
-/**
- * Determine if the table is empty (either NULL or having no elements).
- * @param t The table to check
- * @return True if empty, False otherwise
- */
-APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t);
-
-/**
- * Determine if the array is empty (either NULL or having no elements).
- * @param a The array to check
- * @return True if empty, False otherwise
- */
-APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a);
-
-/**
- * Create an array.
- * @param p The pool to allocate the memory out of
- * @param nelts the number of elements in the initial array
- * @param elt_size The size of each element in the array.
- * @return The new array
- */
-APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p,
-                                                 int nelts, int elt_size);
-
-/**
- * Add a new element to an array (as a first-in, last-out stack).
- * @param arr The array to add an element to.
- * @return Location for the new element in the array.
- * @remark If there are no free spots in the array, then this function will
- *         allocate new space for the new element.
- */
-APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr);
-
-/** A helper macro for accessing a member of an APR array.
- *
- * @param ary the array
- * @param i the index into the array to return
- * @param type the type of the objects stored in the array
- *
- * @return the item at index i
- */
-#define APR_ARRAY_IDX(ary,i,type) (((type *)(ary)->elts)[i])
-
-/** A helper macro for pushing elements into an APR array.
- *
- * @param ary the array
- * @param type the type of the objects stored in the array
- *
- * @return the location where the new object should be placed
- */
-#define APR_ARRAY_PUSH(ary,type) (*((type *)apr_array_push(ary)))
-
-/**
- * Remove an element from an array (as a first-in, last-out stack).
- * @param arr The array to remove an element from.
- * @return Location of the element in the array.
- * @remark If there are no elements in the array, NULL is returned.
- */
-APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr);
-
-/**
- * Remove all elements from an array.
- * @param arr The array to remove all elements from.
- * @remark As the underlying storage is allocated from a pool, no
- * memory is freed by this operation, but is available for reuse.
- */
-APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr);
-
-/**
- * Concatenate two arrays together.
- * @param dst The destination array, and the one to go first in the combined 
- *            array
- * @param src The source array to add to the destination array
- */
-APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst,
-			        const apr_array_header_t *src);
-
-/**
- * Copy the entire array.
- * @param p The pool to allocate the copy of the array out of
- * @param arr The array to copy
- * @return An exact copy of the array passed in
- * @remark The alternate apr_array_copy_hdr copies only the header, and arranges 
- *         for the elements to be copied if (and only if) the code subsequently
- *         does a push or arraycat.
- */
-APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p,
-                                      const apr_array_header_t *arr);
-/**
- * Copy the headers of the array, and arrange for the elements to be copied if
- * and only if the code subsequently does a push or arraycat.
- * @param p The pool to allocate the copy of the array out of
- * @param arr The array to copy
- * @return An exact copy of the array passed in
- * @remark The alternate apr_array_copy copies the *entire* array.
- */
-APR_DECLARE(apr_array_header_t *) apr_array_copy_hdr(apr_pool_t *p,
-                                      const apr_array_header_t *arr);
-
-/**
- * Append one array to the end of another, creating a new array in the process.
- * @param p The pool to allocate the new array out of
- * @param first The array to put first in the new array.
- * @param second The array to put second in the new array.
- * @return A new array containing the data from the two arrays passed in.
-*/
-APR_DECLARE(apr_array_header_t *) apr_array_append(apr_pool_t *p,
-                                      const apr_array_header_t *first,
-                                      const apr_array_header_t *second);
-
-/**
- * Generate a new string from the apr_pool_t containing the concatenated 
- * sequence of substrings referenced as elements within the array.  The string 
- * will be empty if all substrings are empty or null, or if there are no 
- * elements in the array.  If sep is non-NUL, it will be inserted between 
- * elements as a separator.
- * @param p The pool to allocate the string out of
- * @param arr The array to generate the string from
- * @param sep The separator to use
- * @return A string containing all of the data in the array.
- */
-APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p,
-				      const apr_array_header_t *arr,
-				      const char sep);
-
-/**
- * Make a new table.
- * @param p The pool to allocate the pool out of
- * @param nelts The number of elements in the initial table.
- * @return The new table.
- * @warning This table can only store text data
- */
-APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts);
-
-/**
- * Create a new table and copy another table into it.
- * @param p The pool to allocate the new table out of
- * @param t The table to copy
- * @return A copy of the table passed in
- * @warning The table keys and respective values are not copied
- */
-APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p,
-                                          const apr_table_t *t);
-
-/**
- * Create a new table whose contents are deep copied from the given
- * table. A deep copy operation copies all fields, and makes copies
- * of dynamically allocated memory pointed to by the fields.
- * @param p The pool to allocate the new table out of
- * @param t The table to clone
- * @return A deep copy of the table passed in
- */
-APR_DECLARE(apr_table_t *) apr_table_clone(apr_pool_t *p,
-                                           const apr_table_t *t);
-
-/**
- * Delete all of the elements from a table.
- * @param t The table to clear
- */
-APR_DECLARE(void) apr_table_clear(apr_table_t *t);
-
-/**
- * Get the value associated with a given key from the table.  After this call,
- * the data is still in the table.
- * @param t The table to search for the key
- * @param key The key to search for (case does not matter)
- * @return The value associated with the key, or NULL if the key does not exist. 
- */
-APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key);
-
-/**
- * Add a key/value pair to a table.  If another element already exists with the
- * same key, this will overwrite the old data.
- * @param t The table to add the data to.
- * @param key The key to use (case does not matter)
- * @param val The value to add
- * @remark When adding data, this function makes a copy of both the key and the
- *         value.
- */
-APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key,
-                                const char *val);
-
-/**
- * Add a key/value pair to a table.  If another element already exists with the
- * same key, this will overwrite the old data.
- * @param t The table to add the data to.
- * @param key The key to use (case does not matter)
- * @param val The value to add
- * @warning When adding data, this function does not make a copy of the key or 
- *          the value, so care should be taken to ensure that the values will 
- *          not change after they have been added..
- */
-APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key,
-                                 const char *val);
-
-/**
- * Remove data from the table.
- * @param t The table to remove data from
- * @param key The key of the data being removed (case does not matter)
- */
-APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key);
-
-/**
- * Add data to a table by merging the value with data that has already been 
- * stored. The merging is done by concatenating the two values, separated
- * by the string ", ".
- * @param t The table to search for the data
- * @param key The key to merge data for (case does not matter)
- * @param val The data to add
- * @remark If the key is not found, then this function acts like apr_table_add
- */
-APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key,
-                                  const char *val);
-
-/**
- * Add data to a table by merging the value with data that has already been 
- * stored. The merging is done by concatenating the two values, separated
- * by the string ", ".
- * @param t The table to search for the data
- * @param key The key to merge data for (case does not matter)
- * @param val The data to add
- * @remark If the key is not found, then this function acts like apr_table_addn
- */
-APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key,
-                                   const char *val);
-
-/**
- * Add data to a table, regardless of whether there is another element with the
- * same key.
- * @param t The table to add to
- * @param key The key to use
- * @param val The value to add.
- * @remark When adding data, this function makes a copy of both the key and the
- *         value.
- */
-APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key,
-                                const char *val);
-
-/**
- * Add data to a table, regardless of whether there is another element with the
- * same key.
- * @param t The table to add to
- * @param key The key to use
- * @param val The value to add.
- * @remark When adding data, this function does not make a copy of the key or the
- *         value, so care should be taken to ensure that the values will not 
- *         change after they have been added.
- */
-APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key,
-                                 const char *val);
-
-/**
- * Merge two tables into one new table.
- * @param p The pool to use for the new table
- * @param overlay The first table to put in the new table
- * @param base The table to add at the end of the new table
- * @return A new table containing all of the data from the two passed in
- */
-APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p,
-                                             const apr_table_t *overlay,
-                                             const apr_table_t *base);
-
-/**
- * Declaration prototype for the iterator callback function of apr_table_do()
- * and apr_table_vdo().
- * @param rec The data passed as the first argument to apr_table_[v]do()
- * @param key The key from this iteration of the table
- * @param value The value from this iteration of the table
- * @remark Iteration continues while this callback function returns non-zero.
- * To export the callback function for apr_table_[v]do() it must be declared 
- * in the _NONSTD convention.
- */
-typedef int (apr_table_do_callback_fn_t)(void *rec, const char *key, 
-                                                    const char *value);
-
-/** 
- * Iterate over a table running the provided function once for every
- * element in the table.  The varargs array must be a list of zero or
- * more (char *) keys followed by a NULL pointer.  If zero keys are
- * given, the @param comp function will be invoked for every element
- * in the table.  Otherwise, the function is invoked only for those
- * elements matching the keys specified.
- *
- * If an invocation of the @param comp function returns zero,
- * iteration will continue using the next specified key, if any.
- *
- * @param comp The function to run
- * @param rec The data to pass as the first argument to the function
- * @param t The table to iterate over
- * @param ... A varargs array of zero or more (char *) keys followed by NULL
- * @return FALSE if one of the comp() iterations returned zero; TRUE if all
- *            iterations returned non-zero
- * @see apr_table_do_callback_fn_t
- */
-APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp,
-                                     void *rec, const apr_table_t *t, ...)
-#if defined(__GNUC__) && __GNUC__ >= 4
-    __attribute__((sentinel))
-#endif
-    ;
-
-/** 
- * Iterate over a table running the provided function once for every
- * element in the table.  The @param vp varargs parameter must be a
- * list of zero or more (char *) keys followed by a NULL pointer.  If
- * zero keys are given, the @param comp function will be invoked for
- * every element in the table.  Otherwise, the function is invoked
- * only for those elements matching the keys specified.
- *
- * If an invocation of the @param comp function returns zero,
- * iteration will continue using the next specified key, if any.
- *
- * @param comp The function to run
- * @param rec The data to pass as the first argument to the function
- * @param t The table to iterate over
- * @param vp List of zero or more (char *) keys followed by NULL
- * @return FALSE if one of the comp() iterations returned zero; TRUE if all
- *            iterations returned non-zero
- * @see apr_table_do_callback_fn_t
- */
-APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp,
-                               void *rec, const apr_table_t *t, va_list vp);
-
-/** flag for overlap to use apr_table_setn */
-#define APR_OVERLAP_TABLES_SET   (0)
-/** flag for overlap to use apr_table_mergen */
-#define APR_OVERLAP_TABLES_MERGE (1)
-/**
- * For each element in table b, either use setn or mergen to add the data
- * to table a.  Which method is used is determined by the flags passed in.
- * @param a The table to add the data to.
- * @param b The table to iterate over, adding its data to table a
- * @param flags How to add the table to table a.  One of:
- *          APR_OVERLAP_TABLES_SET        Use apr_table_setn
- *          APR_OVERLAP_TABLES_MERGE      Use apr_table_mergen
- * @remark  When merging duplicates, the two values are concatenated,
- *          separated by the string ", ".
- * @remark  This function is highly optimized, and uses less memory and CPU cycles
- *          than a function that just loops through table b calling other functions.
- */
-/**
- * Conceptually, apr_table_overlap does this:
- *
- * <pre>
- *  apr_array_header_t *barr = apr_table_elts(b);
- *  apr_table_entry_t *belt = (apr_table_entry_t *)barr->elts;
- *  int i;
- *
- *  for (i = 0; i < barr->nelts; ++i) {
- *      if (flags & APR_OVERLAP_TABLES_MERGE) {
- *          apr_table_mergen(a, belt[i].key, belt[i].val);
- *      }
- *      else {
- *          apr_table_setn(a, belt[i].key, belt[i].val);
- *      }
- *  }
- * </pre>
- *
- *  Except that it is more efficient (less space and cpu-time) especially
- *  when b has many elements.
- *
- *  Notice the assumptions on the keys and values in b -- they must be
- *  in an ancestor of a's pool.  In practice b and a are usually from
- *  the same pool.
- */
-
-APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b,
-                                     unsigned flags);
-
-/**
- * Eliminate redundant entries in a table by either overwriting
- * or merging duplicates.
- *
- * @param t Table.
- * @param flags APR_OVERLAP_TABLES_MERGE to merge, or
- *              APR_OVERLAP_TABLES_SET to overwrite
- * @remark When merging duplicates, the two values are concatenated,
- *         separated by the string ", ".
- */
-APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif	/* ! APR_TABLES_H */

Copied: vendor/apache/apr/1.5.2/include/apr_tables.h (from rev 9273, vendor/apache/apr/dist/include/apr_tables.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_tables.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_tables.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,499 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_TABLES_H
+#define APR_TABLES_H
+
+/**
+ * @file apr_tables.h
+ * @brief APR Table library
+ */
+
+#include "apr.h"
+#include "apr_pools.h"
+
+#if APR_HAVE_STDARG_H
+#include <stdarg.h>     /* for va_list */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_tables Table and Array Functions
+ * @ingroup APR 
+ * Arrays are used to store data which is referenced sequentially or
+ * as a stack.  Functions are provided to push and pop individual
+ * elements as well as to operate on the entire array.
+ *
+ * Tables are used to store data which can be referenced by key.
+ * Limited capabilities are provided for tables with multiple elements
+ * which share a key; while key lookup will return only a single
+ * element, iteration is available.  Additionally, a table can be
+ * compressed to resolve duplicates.
+ *
+ * Both arrays and tables may store string or binary data; some features,
+ * such as concatenation or merging of elements, work only for string
+ * data.
+ * @{
+ */
+
+/** the table abstract data type */
+typedef struct apr_table_t apr_table_t;
+
+/** @see apr_array_header_t */
+typedef struct apr_array_header_t apr_array_header_t;
+
+/** An opaque array type */
+struct apr_array_header_t {
+    /** The pool the array is allocated out of */
+    apr_pool_t *pool;
+    /** The amount of memory allocated for each element of the array */
+    int elt_size;
+    /** The number of active elements in the array */
+    int nelts;
+    /** The number of elements allocated in the array */
+    int nalloc;
+    /** The elements in the array */
+    char *elts;
+};
+
+/**
+ * The (opaque) structure for string-content tables.
+ */
+typedef struct apr_table_entry_t apr_table_entry_t;
+
+/** The type for each entry in a string-content table */
+struct apr_table_entry_t {
+    /** The key for the current table entry */
+    char *key;          /* maybe NULL in future;
+                         * check when iterating thru table_elts
+                         */
+    /** The value for the current table entry */
+    char *val;
+
+    /** A checksum for the key, for use by the apr_table internals */
+    apr_uint32_t key_checksum;
+};
+
+/**
+ * Get the elements from a table.
+ * @param t The table
+ * @return An array containing the contents of the table
+ */
+APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t);
+
+/**
+ * Determine if the table is empty (either NULL or having no elements).
+ * @param t The table to check
+ * @return True if empty, False otherwise
+ */
+APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t);
+
+/**
+ * Determine if the array is empty (either NULL or having no elements).
+ * @param a The array to check
+ * @return True if empty, False otherwise
+ */
+APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a);
+
+/**
+ * Create an array.
+ * @param p The pool to allocate the memory out of
+ * @param nelts the number of elements in the initial array
+ * @param elt_size The size of each element in the array.
+ * @return The new array
+ */
+APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p,
+                                                 int nelts, int elt_size);
+
+/**
+ * Add a new element to an array (as a first-in, last-out stack).
+ * @param arr The array to add an element to.
+ * @return Location for the new element in the array.
+ * @remark If there are no free spots in the array, then this function will
+ *         allocate new space for the new element.
+ */
+APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr);
+
+/** A helper macro for accessing a member of an APR array.
+ *
+ * @param ary the array
+ * @param i the index into the array to return
+ * @param type the type of the objects stored in the array
+ *
+ * @return the item at index i
+ */
+#define APR_ARRAY_IDX(ary,i,type) (((type *)(ary)->elts)[i])
+
+/** A helper macro for pushing elements into an APR array.
+ *
+ * @param ary the array
+ * @param type the type of the objects stored in the array
+ *
+ * @return the location where the new object should be placed
+ */
+#define APR_ARRAY_PUSH(ary,type) (*((type *)apr_array_push(ary)))
+
+/**
+ * Remove an element from an array (as a first-in, last-out stack).
+ * @param arr The array to remove an element from.
+ * @return Location of the element in the array.
+ * @remark If there are no elements in the array, NULL is returned.
+ */
+APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr);
+
+/**
+ * Remove all elements from an array.
+ * @param arr The array to remove all elements from.
+ * @remark As the underlying storage is allocated from a pool, no
+ * memory is freed by this operation, but is available for reuse.
+ */
+APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr);
+
+/**
+ * Concatenate two arrays together.
+ * @param dst The destination array, and the one to go first in the combined 
+ *            array
+ * @param src The source array to add to the destination array
+ */
+APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst,
+			        const apr_array_header_t *src);
+
+/**
+ * Copy the entire array.
+ * @param p The pool to allocate the copy of the array out of
+ * @param arr The array to copy
+ * @return An exact copy of the array passed in
+ * @remark The alternate apr_array_copy_hdr copies only the header, and arranges 
+ *         for the elements to be copied if (and only if) the code subsequently
+ *         does a push or arraycat.
+ */
+APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p,
+                                      const apr_array_header_t *arr);
+/**
+ * Copy the headers of the array, and arrange for the elements to be copied if
+ * and only if the code subsequently does a push or arraycat.
+ * @param p The pool to allocate the copy of the array out of
+ * @param arr The array to copy
+ * @return An exact copy of the array passed in
+ * @remark The alternate apr_array_copy copies the *entire* array.
+ */
+APR_DECLARE(apr_array_header_t *) apr_array_copy_hdr(apr_pool_t *p,
+                                      const apr_array_header_t *arr);
+
+/**
+ * Append one array to the end of another, creating a new array in the process.
+ * @param p The pool to allocate the new array out of
+ * @param first The array to put first in the new array.
+ * @param second The array to put second in the new array.
+ * @return A new array containing the data from the two arrays passed in.
+*/
+APR_DECLARE(apr_array_header_t *) apr_array_append(apr_pool_t *p,
+                                      const apr_array_header_t *first,
+                                      const apr_array_header_t *second);
+
+/**
+ * Generate a new string from the apr_pool_t containing the concatenated 
+ * sequence of substrings referenced as elements within the array.  The string 
+ * will be empty if all substrings are empty or null, or if there are no 
+ * elements in the array.  If sep is non-NUL, it will be inserted between 
+ * elements as a separator.
+ * @param p The pool to allocate the string out of
+ * @param arr The array to generate the string from
+ * @param sep The separator to use
+ * @return A string containing all of the data in the array.
+ */
+APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p,
+				      const apr_array_header_t *arr,
+				      const char sep);
+
+/**
+ * Make a new table.
+ * @param p The pool to allocate the pool out of
+ * @param nelts The number of elements in the initial table.
+ * @return The new table.
+ * @warning This table can only store text data
+ */
+APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts);
+
+/**
+ * Create a new table and copy another table into it.
+ * @param p The pool to allocate the new table out of
+ * @param t The table to copy
+ * @return A copy of the table passed in
+ * @warning The table keys and respective values are not copied
+ */
+APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p,
+                                          const apr_table_t *t);
+
+/**
+ * Create a new table whose contents are deep copied from the given
+ * table. A deep copy operation copies all fields, and makes copies
+ * of dynamically allocated memory pointed to by the fields.
+ * @param p The pool to allocate the new table out of
+ * @param t The table to clone
+ * @return A deep copy of the table passed in
+ */
+APR_DECLARE(apr_table_t *) apr_table_clone(apr_pool_t *p,
+                                           const apr_table_t *t);
+
+/**
+ * Delete all of the elements from a table.
+ * @param t The table to clear
+ */
+APR_DECLARE(void) apr_table_clear(apr_table_t *t);
+
+/**
+ * Get the value associated with a given key from the table.  After this call,
+ * the data is still in the table.
+ * @param t The table to search for the key
+ * @param key The key to search for (case does not matter)
+ * @return The value associated with the key, or NULL if the key does not exist. 
+ */
+APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key);
+
+/**
+ * Get values associated with a given key from the table.      If more than one
+ * value exists, return a comma separated list of values.  After this call, the
+ * data is still in the table.
+ * @param p The pool to allocate the combined value from, if necessary
+ * @param t The table to search for the key
+ * @param key The key to search for (case does not matter)
+ * @return The value associated with the key, or NULL if the key does not exist.
+ */
+APR_DECLARE(const char *) apr_table_getm(apr_pool_t *p, const apr_table_t *t,
+                                         const char *key);
+
+/**
+ * Add a key/value pair to a table.  If another element already exists with the
+ * same key, this will overwrite the old data.
+ * @param t The table to add the data to.
+ * @param key The key to use (case does not matter)
+ * @param val The value to add
+ * @remark When adding data, this function makes a copy of both the key and the
+ *         value.
+ */
+APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key,
+                                const char *val);
+
+/**
+ * Add a key/value pair to a table.  If another element already exists with the
+ * same key, this will overwrite the old data.
+ * @param t The table to add the data to.
+ * @param key The key to use (case does not matter)
+ * @param val The value to add
+ * @warning When adding data, this function does not make a copy of the key or 
+ *          the value, so care should be taken to ensure that the values will 
+ *          not change after they have been added..
+ */
+APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key,
+                                 const char *val);
+
+/**
+ * Remove data from the table.
+ * @param t The table to remove data from
+ * @param key The key of the data being removed (case does not matter)
+ */
+APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key);
+
+/**
+ * Add data to a table by merging the value with data that has already been 
+ * stored. The merging is done by concatenating the two values, separated
+ * by the string ", ".
+ * @param t The table to search for the data
+ * @param key The key to merge data for (case does not matter)
+ * @param val The data to add
+ * @remark If the key is not found, then this function acts like apr_table_add
+ */
+APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key,
+                                  const char *val);
+
+/**
+ * Add data to a table by merging the value with data that has already been 
+ * stored. The merging is done by concatenating the two values, separated
+ * by the string ", ".
+ * @param t The table to search for the data
+ * @param key The key to merge data for (case does not matter)
+ * @param val The data to add
+ * @remark If the key is not found, then this function acts like apr_table_addn
+ */
+APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key,
+                                   const char *val);
+
+/**
+ * Add data to a table, regardless of whether there is another element with the
+ * same key.
+ * @param t The table to add to
+ * @param key The key to use
+ * @param val The value to add.
+ * @remark When adding data, this function makes a copy of both the key and the
+ *         value.
+ */
+APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key,
+                                const char *val);
+
+/**
+ * Add data to a table, regardless of whether there is another element with the
+ * same key.
+ * @param t The table to add to
+ * @param key The key to use
+ * @param val The value to add.
+ * @remark When adding data, this function does not make a copy of the key or the
+ *         value, so care should be taken to ensure that the values will not 
+ *         change after they have been added.
+ */
+APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key,
+                                 const char *val);
+
+/**
+ * Merge two tables into one new table.
+ * @param p The pool to use for the new table
+ * @param overlay The first table to put in the new table
+ * @param base The table to add at the end of the new table
+ * @return A new table containing all of the data from the two passed in
+ */
+APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p,
+                                             const apr_table_t *overlay,
+                                             const apr_table_t *base);
+
+/**
+ * Declaration prototype for the iterator callback function of apr_table_do()
+ * and apr_table_vdo().
+ * @param rec The data passed as the first argument to apr_table_[v]do()
+ * @param key The key from this iteration of the table
+ * @param value The value from this iteration of the table
+ * @remark Iteration continues while this callback function returns non-zero.
+ * To export the callback function for apr_table_[v]do() it must be declared 
+ * in the _NONSTD convention.
+ */
+typedef int (apr_table_do_callback_fn_t)(void *rec, const char *key, 
+                                                    const char *value);
+
+/** 
+ * Iterate over a table running the provided function once for every
+ * element in the table.  The varargs array must be a list of zero or
+ * more (char *) keys followed by a NULL pointer.  If zero keys are
+ * given, the @param comp function will be invoked for every element
+ * in the table.  Otherwise, the function is invoked only for those
+ * elements matching the keys specified.
+ *
+ * If an invocation of the @param comp function returns zero,
+ * iteration will continue using the next specified key, if any.
+ *
+ * @param comp The function to run
+ * @param rec The data to pass as the first argument to the function
+ * @param t The table to iterate over
+ * @param ... A varargs array of zero or more (char *) keys followed by NULL
+ * @return FALSE if one of the comp() iterations returned zero; TRUE if all
+ *            iterations returned non-zero
+ * @see apr_table_do_callback_fn_t
+ */
+APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp,
+                                     void *rec, const apr_table_t *t, ...)
+#if defined(__GNUC__) && __GNUC__ >= 4
+    __attribute__((sentinel))
+#endif
+    ;
+
+/** 
+ * Iterate over a table running the provided function once for every
+ * element in the table.  The @param vp varargs parameter must be a
+ * list of zero or more (char *) keys followed by a NULL pointer.  If
+ * zero keys are given, the @param comp function will be invoked for
+ * every element in the table.  Otherwise, the function is invoked
+ * only for those elements matching the keys specified.
+ *
+ * If an invocation of the @param comp function returns zero,
+ * iteration will continue using the next specified key, if any.
+ *
+ * @param comp The function to run
+ * @param rec The data to pass as the first argument to the function
+ * @param t The table to iterate over
+ * @param vp List of zero or more (char *) keys followed by NULL
+ * @return FALSE if one of the comp() iterations returned zero; TRUE if all
+ *            iterations returned non-zero
+ * @see apr_table_do_callback_fn_t
+ */
+APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp,
+                               void *rec, const apr_table_t *t, va_list vp);
+
+/** flag for overlap to use apr_table_setn */
+#define APR_OVERLAP_TABLES_SET   (0)
+/** flag for overlap to use apr_table_mergen */
+#define APR_OVERLAP_TABLES_MERGE (1)
+/**
+ * For each element in table b, either use setn or mergen to add the data
+ * to table a.  Which method is used is determined by the flags passed in.
+ * @param a The table to add the data to.
+ * @param b The table to iterate over, adding its data to table a
+ * @param flags How to add the table to table a.  One of:
+ *          APR_OVERLAP_TABLES_SET        Use apr_table_setn
+ *          APR_OVERLAP_TABLES_MERGE      Use apr_table_mergen
+ * @remark  When merging duplicates, the two values are concatenated,
+ *          separated by the string ", ".
+ * @remark  This function is highly optimized, and uses less memory and CPU cycles
+ *          than a function that just loops through table b calling other functions.
+ */
+/**
+ * Conceptually, apr_table_overlap does this:
+ *
+ * <pre>
+ *  apr_array_header_t *barr = apr_table_elts(b);
+ *  apr_table_entry_t *belt = (apr_table_entry_t *)barr->elts;
+ *  int i;
+ *
+ *  for (i = 0; i < barr->nelts; ++i) {
+ *      if (flags & APR_OVERLAP_TABLES_MERGE) {
+ *          apr_table_mergen(a, belt[i].key, belt[i].val);
+ *      }
+ *      else {
+ *          apr_table_setn(a, belt[i].key, belt[i].val);
+ *      }
+ *  }
+ * </pre>
+ *
+ *  Except that it is more efficient (less space and cpu-time) especially
+ *  when b has many elements.
+ *
+ *  Notice the assumptions on the keys and values in b -- they must be
+ *  in an ancestor of a's pool.  In practice b and a are usually from
+ *  the same pool.
+ */
+
+APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b,
+                                     unsigned flags);
+
+/**
+ * Eliminate redundant entries in a table by either overwriting
+ * or merging duplicates.
+ *
+ * @param t Table.
+ * @param flags APR_OVERLAP_TABLES_MERGE to merge, or
+ *              APR_OVERLAP_TABLES_SET to overwrite
+ * @remark When merging duplicates, the two values are concatenated,
+ *         separated by the string ", ".
+ */
+APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ! APR_TABLES_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_thread_mutex.h
===================================================================
--- vendor/apache/apr/dist/include/apr_thread_mutex.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_thread_mutex.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,110 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_THREAD_MUTEX_H
-#define APR_THREAD_MUTEX_H
-
-/**
- * @file apr_thread_mutex.h
- * @brief APR Thread Mutex Routines
- */
-
-#include "apr.h"
-#include "apr_errno.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#if APR_HAS_THREADS || defined(DOXYGEN)
-
-/**
- * @defgroup apr_thread_mutex Thread Mutex Routines
- * @ingroup APR 
- * @{
- */
-
-/** Opaque thread-local mutex structure */
-typedef struct apr_thread_mutex_t apr_thread_mutex_t;
-
-#define APR_THREAD_MUTEX_DEFAULT  0x0   /**< platform-optimal lock behavior */
-#define APR_THREAD_MUTEX_NESTED   0x1   /**< enable nested (recursive) locks */
-#define APR_THREAD_MUTEX_UNNESTED 0x2   /**< disable nested locks */
-
-/* Delayed the include to avoid a circular reference */
-#include "apr_pools.h"
-
-/**
- * Create and initialize a mutex that can be used to synchronize threads.
- * @param mutex the memory address where the newly created mutex will be
- *        stored.
- * @param flags Or'ed value of:
- * <PRE>
- *           APR_THREAD_MUTEX_DEFAULT   platform-optimal lock behavior.
- *           APR_THREAD_MUTEX_NESTED    enable nested (recursive) locks.
- *           APR_THREAD_MUTEX_UNNESTED  disable nested locks (non-recursive).
- * </PRE>
- * @param pool the pool from which to allocate the mutex.
- * @warning Be cautious in using APR_THREAD_MUTEX_DEFAULT.  While this is the
- * most optimial mutex based on a given platform's performance charateristics,
- * it will behave as either a nested or an unnested lock.
- */
-APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex,
-                                                  unsigned int flags,
-                                                  apr_pool_t *pool);
-/**
- * Acquire the lock for the given mutex. If the mutex is already locked,
- * the current thread will be put to sleep until the lock becomes available.
- * @param mutex the mutex on which to acquire the lock.
- */
-APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex);
-
-/**
- * Attempt to acquire the lock for the given mutex. If the mutex has already
- * been acquired, the call returns immediately with APR_EBUSY. Note: it
- * is important that the APR_STATUS_IS_EBUSY(s) macro be used to determine
- * if the return value was APR_EBUSY, for portability reasons.
- * @param mutex the mutex on which to attempt the lock acquiring.
- */
-APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex);
-
-/**
- * Release the lock for the given mutex.
- * @param mutex the mutex from which to release the lock.
- */
-APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex);
-
-/**
- * Destroy the mutex and free the memory associated with the lock.
- * @param mutex the mutex to destroy.
- */
-APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex);
-
-/**
- * Get the pool used by this thread_mutex.
- * @return apr_pool_t the pool
- */
-APR_POOL_DECLARE_ACCESSOR(thread_mutex);
-
-#endif /* APR_HAS_THREADS */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_THREAD_MUTEX_H */

Copied: vendor/apache/apr/1.5.2/include/apr_thread_mutex.h (from rev 9273, vendor/apache/apr/dist/include/apr_thread_mutex.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_thread_mutex.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_thread_mutex.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,110 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_THREAD_MUTEX_H
+#define APR_THREAD_MUTEX_H
+
+/**
+ * @file apr_thread_mutex.h
+ * @brief APR Thread Mutex Routines
+ */
+
+#include "apr.h"
+#include "apr_errno.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#if APR_HAS_THREADS || defined(DOXYGEN)
+
+/**
+ * @defgroup apr_thread_mutex Thread Mutex Routines
+ * @ingroup APR 
+ * @{
+ */
+
+/** Opaque thread-local mutex structure */
+typedef struct apr_thread_mutex_t apr_thread_mutex_t;
+
+#define APR_THREAD_MUTEX_DEFAULT  0x0   /**< platform-optimal lock behavior */
+#define APR_THREAD_MUTEX_NESTED   0x1   /**< enable nested (recursive) locks */
+#define APR_THREAD_MUTEX_UNNESTED 0x2   /**< disable nested locks */
+
+/* Delayed the include to avoid a circular reference */
+#include "apr_pools.h"
+
+/**
+ * Create and initialize a mutex that can be used to synchronize threads.
+ * @param mutex the memory address where the newly created mutex will be
+ *        stored.
+ * @param flags Or'ed value of:
+ * <PRE>
+ *           APR_THREAD_MUTEX_DEFAULT   platform-optimal lock behavior.
+ *           APR_THREAD_MUTEX_NESTED    enable nested (recursive) locks.
+ *           APR_THREAD_MUTEX_UNNESTED  disable nested locks (non-recursive).
+ * </PRE>
+ * @param pool the pool from which to allocate the mutex.
+ * @warning Be cautious in using APR_THREAD_MUTEX_DEFAULT.  While this is the
+ * most optimal mutex based on a given platform's performance characteristics,
+ * it will behave as either a nested or an unnested lock.
+ */
+APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex,
+                                                  unsigned int flags,
+                                                  apr_pool_t *pool);
+/**
+ * Acquire the lock for the given mutex. If the mutex is already locked,
+ * the current thread will be put to sleep until the lock becomes available.
+ * @param mutex the mutex on which to acquire the lock.
+ */
+APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex);
+
+/**
+ * Attempt to acquire the lock for the given mutex. If the mutex has already
+ * been acquired, the call returns immediately with APR_EBUSY. Note: it
+ * is important that the APR_STATUS_IS_EBUSY(s) macro be used to determine
+ * if the return value was APR_EBUSY, for portability reasons.
+ * @param mutex the mutex on which to attempt the lock acquiring.
+ */
+APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex);
+
+/**
+ * Release the lock for the given mutex.
+ * @param mutex the mutex from which to release the lock.
+ */
+APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex);
+
+/**
+ * Destroy the mutex and free the memory associated with the lock.
+ * @param mutex the mutex to destroy.
+ */
+APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex);
+
+/**
+ * Get the pool used by this thread_mutex.
+ * @return apr_pool_t the pool
+ */
+APR_POOL_DECLARE_ACCESSOR(thread_mutex);
+
+#endif /* APR_HAS_THREADS */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_THREAD_MUTEX_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_thread_proc.h
===================================================================
--- vendor/apache/apr/dist/include/apr_thread_proc.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_thread_proc.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,824 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_THREAD_PROC_H
-#define APR_THREAD_PROC_H
-
-/**
- * @file apr_thread_proc.h
- * @brief APR Thread and Process Library
- */
-
-#include "apr.h"
-#include "apr_file_io.h"
-#include "apr_pools.h"
-#include "apr_errno.h"
-
-#if APR_HAVE_STRUCT_RLIMIT
-#include <sys/time.h>
-#include <sys/resource.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_thread_proc Threads and Process Functions
- * @ingroup APR 
- * @{
- */
-
-typedef enum {
-    APR_SHELLCMD,           /**< use the shell to invoke the program */
-    APR_PROGRAM,            /**< invoke the program directly, no copied env */
-    APR_PROGRAM_ENV,        /**< invoke the program, replicating our environment */
-    APR_PROGRAM_PATH,       /**< find program on PATH, use our environment */
-    APR_SHELLCMD_ENV        /**< use the shell to invoke the program,
-                             *   replicating our environment
-                             */
-} apr_cmdtype_e;
-
-typedef enum {
-    APR_WAIT,           /**< wait for the specified process to finish */
-    APR_NOWAIT          /**< do not wait -- just see if it has finished */
-} apr_wait_how_e;
-
-/* I am specifically calling out the values so that the macros below make
- * more sense.  Yes, I know I don't need to, but I am hoping this makes what
- * I am doing more clear.  If you want to add more reasons to exit, continue
- * to use bitmasks.
- */
-typedef enum {
-    APR_PROC_EXIT = 1,          /**< process exited normally */
-    APR_PROC_SIGNAL = 2,        /**< process exited due to a signal */
-    APR_PROC_SIGNAL_CORE = 4    /**< process exited and dumped a core file */
-} apr_exit_why_e;
-
-/** did we exit the process */
-#define APR_PROC_CHECK_EXIT(x)        (x & APR_PROC_EXIT)
-/** did we get a signal */
-#define APR_PROC_CHECK_SIGNALED(x)    (x & APR_PROC_SIGNAL)
-/** did we get core */
-#define APR_PROC_CHECK_CORE_DUMP(x)   (x & APR_PROC_SIGNAL_CORE)
-
-/** @see apr_procattr_io_set */
-#define APR_NO_PIPE          0
-/** @see apr_procattr_io_set and apr_file_pipe_create_ex */
-#define APR_FULL_BLOCK       1
-/** @see apr_procattr_io_set and apr_file_pipe_create_ex */
-#define APR_FULL_NONBLOCK    2
-/** @see apr_procattr_io_set */
-#define APR_PARENT_BLOCK     3
-/** @see apr_procattr_io_set */
-#define APR_CHILD_BLOCK      4
-/** @see apr_procattr_io_set */
-#define APR_NO_FILE          8
-
-/** @see apr_file_pipe_create_ex */
-#define APR_READ_BLOCK       3
-/** @see apr_file_pipe_create_ex */
-#define APR_WRITE_BLOCK      4
-
-/** @see apr_procattr_io_set 
- * @note Win32 only effective with version 1.2.12, portably introduced in 1.3.0
- */
-#define APR_NO_FILE          8
-
-/** @see apr_procattr_limit_set */
-#define APR_LIMIT_CPU        0
-/** @see apr_procattr_limit_set */
-#define APR_LIMIT_MEM        1
-/** @see apr_procattr_limit_set */
-#define APR_LIMIT_NPROC      2
-/** @see apr_procattr_limit_set */
-#define APR_LIMIT_NOFILE     3
-
-/**
- * @defgroup APR_OC Other Child Flags
- * @{
- */
-#define APR_OC_REASON_DEATH         0     /**< child has died, caller must call
-                                           * unregister still */
-#define APR_OC_REASON_UNWRITABLE    1     /**< write_fd is unwritable */
-#define APR_OC_REASON_RESTART       2     /**< a restart is occuring, perform
-                                           * any necessary cleanup (including
-                                           * sending a special signal to child)
-                                           */
-#define APR_OC_REASON_UNREGISTER    3     /**< unregister has been called, do
-                                           * whatever is necessary (including
-                                           * kill the child) */
-#define APR_OC_REASON_LOST          4     /**< somehow the child exited without
-                                           * us knowing ... buggy os? */
-#define APR_OC_REASON_RUNNING       5     /**< a health check is occuring, 
-                                           * for most maintainence functions
-                                           * this is a no-op.
-                                           */
-/** @} */
-
-/** The APR process type */
-typedef struct apr_proc_t {
-    /** The process ID */
-    pid_t pid;
-    /** Parent's side of pipe to child's stdin */
-    apr_file_t *in;
-    /** Parent's side of pipe to child's stdout */
-    apr_file_t *out;
-    /** Parent's side of pipe to child's stdouterr */
-    apr_file_t *err;
-#if APR_HAS_PROC_INVOKED || defined(DOXYGEN)
-    /** Diagnositics/debugging string of the command invoked for 
-     *  this process [only present if APR_HAS_PROC_INVOKED is true]
-     * @remark Only enabled on Win32 by default.
-     * @bug This should either always or never be present in release
-     * builds - since it breaks binary compatibility.  We may enable
-     * it always in APR 1.0 yet leave it undefined in most cases.
-     */
-    char *invoked;
-#endif
-#if defined(WIN32) || defined(DOXYGEN)
-    /** (Win32 only) Creator's handle granting access to the process
-     * @remark This handle is closed and reset to NULL in every case
-     * corresponding to a waitpid() on Unix which returns the exit status.
-     * Therefore Win32 correspond's to Unix's zombie reaping characteristics
-     * and avoids potential handle leaks.
-     */
-    HANDLE hproc;
-#endif
-} apr_proc_t;
-
-/**
- * The prototype for APR child errfn functions.  (See the description
- * of apr_procattr_child_errfn_set() for more information.)
- * It is passed the following parameters:
- * @param pool Pool associated with the apr_proc_t.  If your child
- *             error function needs user data, associate it with this
- *             pool.
- * @param err APR error code describing the error
- * @param description Text description of type of processing which failed
- */
-typedef void (apr_child_errfn_t)(apr_pool_t *proc, apr_status_t err,
-                                 const char *description);
-
-/** Opaque Thread structure. */
-typedef struct apr_thread_t           apr_thread_t;
-
-/** Opaque Thread attributes structure. */
-typedef struct apr_threadattr_t       apr_threadattr_t;
-
-/** Opaque Process attributes structure. */
-typedef struct apr_procattr_t         apr_procattr_t;
-
-/** Opaque control variable for one-time atomic variables.  */
-typedef struct apr_thread_once_t      apr_thread_once_t;
-
-/** Opaque thread private address space. */
-typedef struct apr_threadkey_t        apr_threadkey_t;
-
-/** Opaque record of child process. */
-typedef struct apr_other_child_rec_t  apr_other_child_rec_t;
-
-/**
- * The prototype for any APR thread worker functions.
- */
-typedef void *(APR_THREAD_FUNC *apr_thread_start_t)(apr_thread_t*, void*);
-
-typedef enum {
-    APR_KILL_NEVER,             /**< process is never sent any signals */
-    APR_KILL_ALWAYS,            /**< process is sent SIGKILL on apr_pool_t cleanup */
-    APR_KILL_AFTER_TIMEOUT,     /**< SIGTERM, wait 3 seconds, SIGKILL */
-    APR_JUST_WAIT,              /**< wait forever for the process to complete */
-    APR_KILL_ONLY_ONCE          /**< send SIGTERM and then wait */
-} apr_kill_conditions_e;
-
-/* Thread Function definitions */
-
-#if APR_HAS_THREADS
-
-/**
- * Create and initialize a new threadattr variable
- * @param new_attr The newly created threadattr.
- * @param cont The pool to use
- */
-APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new_attr, 
-                                                apr_pool_t *cont);
-
-/**
- * Set if newly created threads should be created in detached state.
- * @param attr The threadattr to affect 
- * @param on Non-zero if detached threads should be created.
- */
-APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, 
-                                                    apr_int32_t on);
-
-/**
- * Get the detach state for this threadattr.
- * @param attr The threadattr to reference
- * @return APR_DETACH if threads are to be detached, or APR_NOTDETACH
- * if threads are to be joinable. 
- */
-APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr);
-
-/**
- * Set the stack size of newly created threads.
- * @param attr The threadattr to affect 
- * @param stacksize The stack size in bytes
- */
-APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr,
-                                                       apr_size_t stacksize);
-
-/**
- * Set the stack guard area size of newly created threads.
- * @param attr The threadattr to affect 
- * @param guardsize The stack guard area size in bytes
- * @note Thread library implementations commonly use a "guard area"
- * after each thread's stack which is not readable or writable such that
- * stack overflows cause a segfault; this consumes e.g. 4K of memory
- * and increases memory management overhead.  Setting the guard area
- * size to zero hence trades off reliable behaviour on stack overflow
- * for performance. */
-APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr,
-                                                       apr_size_t guardsize);
-
-/**
- * Create a new thread of execution
- * @param new_thread The newly created thread handle.
- * @param attr The threadattr to use to determine how to create the thread
- * @param func The function to start the new thread in
- * @param data Any data to be passed to the starting function
- * @param cont The pool to use
- */
-APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new_thread, 
-                                            apr_threadattr_t *attr, 
-                                            apr_thread_start_t func, 
-                                            void *data, apr_pool_t *cont);
-
-/**
- * stop the current thread
- * @param thd The thread to stop
- * @param retval The return value to pass back to any thread that cares
- */
-APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, 
-                                          apr_status_t retval);
-
-/**
- * block until the desired thread stops executing.
- * @param retval The return value from the dead thread.
- * @param thd The thread to join
- */
-APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, 
-                                          apr_thread_t *thd); 
-
-/**
- * force the current thread to yield the processor
- */
-APR_DECLARE(void) apr_thread_yield(void);
-
-/**
- * Initialize the control variable for apr_thread_once.  If this isn't
- * called, apr_initialize won't work.
- * @param control The control variable to initialize
- * @param p The pool to allocate data from.
- */
-APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control,
-                                               apr_pool_t *p);
-
-/**
- * Run the specified function one time, regardless of how many threads
- * call it.
- * @param control The control variable.  The same variable should
- *                be passed in each time the function is tried to be
- *                called.  This is how the underlying functions determine
- *                if the function has ever been called before.
- * @param func The function to call.
- */
-APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control,
-                                          void (*func)(void));
-
-/**
- * detach a thread
- * @param thd The thread to detach 
- */
-APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd);
-
-/**
- * Return user data associated with the current thread.
- * @param data The user data associated with the thread.
- * @param key The key to associate with the data
- * @param thread The currently open thread.
- */
-APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key,
-                                             apr_thread_t *thread);
-
-/**
- * Set user data associated with the current thread.
- * @param data The user data to associate with the thread.
- * @param key The key to use for associating the data with the thread
- * @param cleanup The cleanup routine to use when the thread is destroyed.
- * @param thread The currently open thread.
- */
-APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key,
-                                             apr_status_t (*cleanup) (void *),
-                                             apr_thread_t *thread);
-
-/**
- * Create and initialize a new thread private address space
- * @param key The thread private handle.
- * @param dest The destructor to use when freeing the private memory.
- * @param cont The pool to use
- */
-APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, 
-                                                    void (*dest)(void *),
-                                                    apr_pool_t *cont);
-
-/**
- * Get a pointer to the thread private memory
- * @param new_mem The data stored in private memory 
- * @param key The handle for the desired thread private memory 
- */
-APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new_mem, 
-                                                 apr_threadkey_t *key);
-
-/**
- * Set the data to be stored in thread private memory
- * @param priv The data to be stored in private memory 
- * @param key The handle for the desired thread private memory 
- */
-APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, 
-                                                 apr_threadkey_t *key);
-
-/**
- * Free the thread private memory
- * @param key The handle for the desired thread private memory 
- */
-APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key);
-
-/**
- * Return the pool associated with the current threadkey.
- * @param data The user data associated with the threadkey.
- * @param key The key associated with the data
- * @param threadkey The currently open threadkey.
- */
-APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key,
-                                                apr_threadkey_t *threadkey);
-
-/**
- * Return the pool associated with the current threadkey.
- * @param data The data to set.
- * @param key The key to associate with the data.
- * @param cleanup The cleanup routine to use when the file is destroyed.
- * @param threadkey The currently open threadkey.
- */
-APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key,
-                                                apr_status_t (*cleanup) (void *),
-                                                apr_threadkey_t *threadkey);
-
-#endif
-
-/**
- * Create and initialize a new procattr variable
- * @param new_attr The newly created procattr. 
- * @param cont The pool to use
- */
-APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new_attr,
-                                                  apr_pool_t *cont);
-
-/**
- * Determine if any of stdin, stdout, or stderr should be linked to pipes 
- * when starting a child process.
- * @param attr The procattr we care about. 
- * @param in Should stdin be a pipe back to the parent?
- * @param out Should stdout be a pipe back to the parent?
- * @param err Should stderr be a pipe back to the parent?
- * @note If APR_NO_PIPE, there will be no special channel, the child
- * inherits the parent's corresponding stdio stream.  If APR_NO_FILE is 
- * specified, that corresponding stream is closed in the child (and will
- * be INVALID_HANDLE_VALUE when inspected on Win32). This can have ugly 
- * side effects, as the next file opened in the child on Unix will fall
- * into the stdio stream fd slot!
- */
-APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, 
-                                             apr_int32_t in, apr_int32_t out,
-                                             apr_int32_t err);
-
-/**
- * Set the child_in and/or parent_in values to existing apr_file_t values.
- * @param attr The procattr we care about. 
- * @param child_in apr_file_t value to use as child_in. Must be a valid file.
- * @param parent_in apr_file_t value to use as parent_in. Must be a valid file.
- * @remark  This is NOT a required initializer function. This is
- *          useful if you have already opened a pipe (or multiple files)
- *          that you wish to use, perhaps persistently across multiple
- *          process invocations - such as a log file. You can save some 
- *          extra function calls by not creating your own pipe since this
- *          creates one in the process space for you.
- * @bug Note that calling this function with two NULL files on some platforms
- * creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor
- * is it supported.  @see apr_procattr_io_set instead for simple pipes.
- */
-APR_DECLARE(apr_status_t) apr_procattr_child_in_set(struct apr_procattr_t *attr,
-                                                  apr_file_t *child_in,
-                                                  apr_file_t *parent_in);
-
-/**
- * Set the child_out and parent_out values to existing apr_file_t values.
- * @param attr The procattr we care about. 
- * @param child_out apr_file_t value to use as child_out. Must be a valid file.
- * @param parent_out apr_file_t value to use as parent_out. Must be a valid file.
- * @remark This is NOT a required initializer function. This is
- *         useful if you have already opened a pipe (or multiple files)
- *         that you wish to use, perhaps persistently across multiple
- *         process invocations - such as a log file. 
- * @bug Note that calling this function with two NULL files on some platforms
- * creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor
- * is it supported.  @see apr_procattr_io_set instead for simple pipes.
- */
-APR_DECLARE(apr_status_t) apr_procattr_child_out_set(struct apr_procattr_t *attr,
-                                                   apr_file_t *child_out,
-                                                   apr_file_t *parent_out);
-
-/**
- * Set the child_err and parent_err values to existing apr_file_t values.
- * @param attr The procattr we care about. 
- * @param child_err apr_file_t value to use as child_err. Must be a valid file.
- * @param parent_err apr_file_t value to use as parent_err. Must be a valid file.
- * @remark This is NOT a required initializer function. This is
- *         useful if you have already opened a pipe (or multiple files)
- *         that you wish to use, perhaps persistently across multiple
- *         process invocations - such as a log file. 
- * @bug Note that calling this function with two NULL files on some platforms
- * creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor
- * is it supported.  @see apr_procattr_io_set instead for simple pipes.
- */
-APR_DECLARE(apr_status_t) apr_procattr_child_err_set(struct apr_procattr_t *attr,
-                                                   apr_file_t *child_err,
-                                                   apr_file_t *parent_err);
-
-/**
- * Set which directory the child process should start executing in.
- * @param attr The procattr we care about. 
- * @param dir Which dir to start in.  By default, this is the same dir as
- *            the parent currently resides in, when the createprocess call
- *            is made. 
- */
-APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, 
-                                              const char *dir);
-
-/**
- * Set what type of command the child process will call.
- * @param attr The procattr we care about. 
- * @param cmd The type of command.  One of:
- * <PRE>
- *            APR_SHELLCMD     --  Anything that the shell can handle
- *            APR_PROGRAM      --  Executable program   (default) 
- *            APR_PROGRAM_ENV  --  Executable program, copy environment
- *            APR_PROGRAM_PATH --  Executable program on PATH, copy env
- * </PRE>
- */
-APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr,
-                                                  apr_cmdtype_e cmd);
-
-/**
- * Determine if the child should start in detached state.
- * @param attr The procattr we care about. 
- * @param detach Should the child start in detached state?  Default is no. 
- */
-APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, 
-                                                 apr_int32_t detach);
-
-#if APR_HAVE_STRUCT_RLIMIT
-/**
- * Set the Resource Utilization limits when starting a new process.
- * @param attr The procattr we care about. 
- * @param what Which limit to set, one of:
- * <PRE>
- *                 APR_LIMIT_CPU
- *                 APR_LIMIT_MEM
- *                 APR_LIMIT_NPROC
- *                 APR_LIMIT_NOFILE
- * </PRE>
- * @param limit Value to set the limit to.
- */
-APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, 
-                                                apr_int32_t what,
-                                                struct rlimit *limit);
-#endif
-
-/**
- * Specify an error function to be called in the child process if APR
- * encounters an error in the child prior to running the specified program.
- * @param attr The procattr describing the child process to be created.
- * @param errfn The function to call in the child process.
- * @remark At the present time, it will only be called from apr_proc_create()
- *         on platforms where fork() is used.  It will never be called on other
- *         platforms, on those platforms apr_proc_create() will return the error
- *         in the parent process rather than invoke the callback in the now-forked
- *         child process.
- */
-APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr,
-                                                       apr_child_errfn_t *errfn);
-
-/**
- * Specify that apr_proc_create() should do whatever it can to report
- * failures to the caller of apr_proc_create(), rather than find out in
- * the child.
- * @param attr The procattr describing the child process to be created.
- * @param chk Flag to indicate whether or not extra work should be done
- *            to try to report failures to the caller.
- * @remark This flag only affects apr_proc_create() on platforms where
- *         fork() is used.  This leads to extra overhead in the calling
- *         process, but that may help the application handle such
- *         errors more gracefully.
- */
-APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr,
-                                                       apr_int32_t chk);
-
-/**
- * Determine if the child should start in its own address space or using the 
- * current one from its parent
- * @param attr The procattr we care about. 
- * @param addrspace Should the child start in its own address space?  Default
- *                  is no on NetWare and yes on other platforms.
- */
-APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr,
-                                                       apr_int32_t addrspace);
-
-/**
- * Set the username used for running process
- * @param attr The procattr we care about. 
- * @param username The username used
- * @param password User password if needed. Password is needed on WIN32
- *                 or any other platform having
- *                 APR_PROCATTR_USER_SET_REQUIRES_PASSWORD set.
- */
-APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr,
-                                                const char *username,
-                                                const char *password);
-
-/**
- * Set the group used for running process
- * @param attr The procattr we care about. 
- * @param groupname The group name  used
- */
-APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr,
-                                                 const char *groupname);
-
-
-#if APR_HAS_FORK
-/**
- * This is currently the only non-portable call in APR.  This executes 
- * a standard unix fork.
- * @param proc The resulting process handle. 
- * @param cont The pool to use. 
- * @remark returns APR_INCHILD for the child, and APR_INPARENT for the parent
- * or an error.
- */
-APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont);
-#endif
-
-/**
- * Create a new process and execute a new program within that process.
- * @param new_proc The resulting process handle.
- * @param progname The program to run 
- * @param args the arguments to pass to the new program.  The first 
- *             one should be the program name.
- * @param env The new environment table for the new process.  This 
- *            should be a list of NULL-terminated strings. This argument
- *            is ignored for APR_PROGRAM_ENV, APR_PROGRAM_PATH, and
- *            APR_SHELLCMD_ENV types of commands.
- * @param attr the procattr we should use to determine how to create the new
- *         process
- * @param pool The pool to use.
- * @note This function returns without waiting for the new process to terminate;
- * use apr_proc_wait for that.
- */
-APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new_proc,
-                                          const char *progname,
-                                          const char * const *args,
-                                          const char * const *env, 
-                                          apr_procattr_t *attr, 
-                                          apr_pool_t *pool);
-
-/**
- * Wait for a child process to die
- * @param proc The process handle that corresponds to the desired child process 
- * @param exitcode The returned exit status of the child, if a child process 
- *                 dies, or the signal that caused the child to die.
- *                 On platforms that don't support obtaining this information, 
- *                 the status parameter will be returned as APR_ENOTIMPL.
- * @param exitwhy Why the child died, the bitwise or of:
- * <PRE>
- *            APR_PROC_EXIT         -- process terminated normally
- *            APR_PROC_SIGNAL       -- process was killed by a signal
- *            APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
- *                                     generated a core dump.
- * </PRE>
- * @param waithow How should we wait.  One of:
- * <PRE>
- *            APR_WAIT   -- block until the child process dies.
- *            APR_NOWAIT -- return immediately regardless of if the 
- *                          child is dead or not.
- * </PRE>
- * @remark The childs status is in the return code to this process.  It is one of:
- * <PRE>
- *            APR_CHILD_DONE     -- child is no longer running.
- *            APR_CHILD_NOTDONE  -- child is still running.
- * </PRE>
- */
-APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc,
-                                        int *exitcode, apr_exit_why_e *exitwhy,
-                                        apr_wait_how_e waithow);
-
-/**
- * Wait for any current child process to die and return information 
- * about that child.
- * @param proc Pointer to NULL on entry, will be filled out with child's 
- *             information 
- * @param exitcode The returned exit status of the child, if a child process 
- *                 dies, or the signal that caused the child to die.
- *                 On platforms that don't support obtaining this information, 
- *                 the status parameter will be returned as APR_ENOTIMPL.
- * @param exitwhy Why the child died, the bitwise or of:
- * <PRE>
- *            APR_PROC_EXIT         -- process terminated normally
- *            APR_PROC_SIGNAL       -- process was killed by a signal
- *            APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
- *                                     generated a core dump.
- * </PRE>
- * @param waithow How should we wait.  One of:
- * <PRE>
- *            APR_WAIT   -- block until the child process dies.
- *            APR_NOWAIT -- return immediately regardless of if the 
- *                          child is dead or not.
- * </PRE>
- * @param p Pool to allocate child information out of.
- * @bug Passing proc as a *proc rather than **proc was an odd choice
- * for some platforms... this should be revisited in 1.0
- */
-APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc,
-                                                  int *exitcode,
-                                                  apr_exit_why_e *exitwhy,
-                                                  apr_wait_how_e waithow,
-                                                  apr_pool_t *p);
-
-#define APR_PROC_DETACH_FOREGROUND 0    /**< Do not detach */
-#define APR_PROC_DETACH_DAEMONIZE 1     /**< Detach */
-
-/**
- * Detach the process from the controlling terminal.
- * @param daemonize set to non-zero if the process should daemonize
- *                  and become a background process, else it will
- *                  stay in the foreground.
- */
-APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize);
-
-/**
- * Register an other_child -- a child associated to its registered 
- * maintence callback.  This callback is invoked when the process
- * dies, is disconnected or disappears.
- * @param proc The child process to register.
- * @param maintenance maintenance is a function that is invoked with a 
- *                    reason and the data pointer passed here.
- * @param data Opaque context data passed to the maintenance function.
- * @param write_fd An fd that is probed for writing.  If it is ever unwritable
- *                 then the maintenance is invoked with reason 
- *                 OC_REASON_UNWRITABLE.
- * @param p The pool to use for allocating memory.
- * @bug write_fd duplicates the proc->out stream, it's really redundant
- * and should be replaced in the APR 1.0 API with a bitflag of which
- * proc->in/out/err handles should be health checked.
- * @bug no platform currently tests the pipes health.
- */
-APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, 
-                                           void (*maintenance) (int reason, 
-                                                                void *, 
-                                                                int status),
-                                           void *data, apr_file_t *write_fd,
-                                           apr_pool_t *p);
-
-/**
- * Stop watching the specified other child.  
- * @param data The data to pass to the maintenance function.  This is
- *             used to find the process to unregister.
- * @warning Since this can be called by a maintenance function while we're
- *          scanning the other_children list, all scanners should protect 
- *          themself by loading ocr->next before calling any maintenance 
- *          function.
- */
-APR_DECLARE(void) apr_proc_other_child_unregister(void *data);
-
-/**
- * Notify the maintenance callback of a registered other child process
- * that application has detected an event, such as death.
- * @param proc The process to check
- * @param reason The reason code to pass to the maintenance function
- * @param status The status to pass to the maintenance function
- * @remark An example of code using this behavior;
- * <pre>
- * rv = apr_proc_wait_all_procs(&proc, &exitcode, &status, APR_WAIT, p);
- * if (APR_STATUS_IS_CHILD_DONE(rv)) {
- * \#if APR_HAS_OTHER_CHILD
- *     if (apr_proc_other_child_alert(&proc, APR_OC_REASON_DEATH, status)
- *             == APR_SUCCESS) {
- *         ;  (already handled)
- *     }
- *     else
- * \#endif
- *         [... handling non-otherchild processes death ...]
- * </pre>
- */
-APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, 
-                                                     int reason,
-                                                     int status);
-
-/**
- * Test one specific other child processes and invoke the maintenance callback 
- * with the appropriate reason code, if still running, or the appropriate reason 
- * code if the process is no longer healthy.
- * @param ocr The registered other child
- * @param reason The reason code (e.g. APR_OC_REASON_RESTART) if still running
- */
-APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr,
-                                               int reason);
-
-/**
- * Test all registered other child processes and invoke the maintenance callback 
- * with the appropriate reason code, if still running, or the appropriate reason 
- * code if the process is no longer healthy.
- * @param reason The reason code (e.g. APR_OC_REASON_RESTART) to running processes
- */
-APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason);
-
-/** 
- * Terminate a process.
- * @param proc The process to terminate.
- * @param sig How to kill the process.
- */
-APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int sig);
-
-/**
- * Register a process to be killed when a pool dies.
- * @param a The pool to use to define the processes lifetime 
- * @param proc The process to register
- * @param how How to kill the process, one of:
- * <PRE>
- *         APR_KILL_NEVER         -- process is never sent any signals
- *         APR_KILL_ALWAYS        -- process is sent SIGKILL on apr_pool_t cleanup
- *         APR_KILL_AFTER_TIMEOUT -- SIGTERM, wait 3 seconds, SIGKILL
- *         APR_JUST_WAIT          -- wait forever for the process to complete
- *         APR_KILL_ONLY_ONCE     -- send SIGTERM and then wait
- * </PRE>
- */
-APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *a, apr_proc_t *proc,
-                                           apr_kill_conditions_e how);
-
-#if APR_HAS_THREADS 
-
-#if (APR_HAVE_SIGWAIT || APR_HAVE_SIGSUSPEND) && !defined(OS2)
-
-/**
- * Setup the process for a single thread to be used for all signal handling.
- * @warning This must be called before any threads are created
- */
-APR_DECLARE(apr_status_t) apr_setup_signal_thread(void);
-
-/**
- * Make the current thread listen for signals.  This thread will loop
- * forever, calling a provided function whenever it receives a signal.  That
- * functions should return 1 if the signal has been handled, 0 otherwise.
- * @param signal_handler The function to call when a signal is received
- * apr_status_t apr_signal_thread((int)(*signal_handler)(int signum))
- */
-APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum));
-
-#endif /* (APR_HAVE_SIGWAIT || APR_HAVE_SIGSUSPEND) && !defined(OS2) */
-
-/**
- * Get the child-pool used by the thread from the thread info.
- * @return apr_pool_t the pool
- */
-APR_POOL_DECLARE_ACCESSOR(thread);
-
-#endif /* APR_HAS_THREADS */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_THREAD_PROC_H */
-

Copied: vendor/apache/apr/1.5.2/include/apr_thread_proc.h (from rev 9273, vendor/apache/apr/dist/include/apr_thread_proc.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_thread_proc.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_thread_proc.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,826 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_THREAD_PROC_H
+#define APR_THREAD_PROC_H
+
+/**
+ * @file apr_thread_proc.h
+ * @brief APR Thread and Process Library
+ */
+
+#include "apr.h"
+#include "apr_file_io.h"
+#include "apr_pools.h"
+#include "apr_errno.h"
+
+#if APR_HAVE_STRUCT_RLIMIT
+#include <sys/time.h>
+#include <sys/resource.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_thread_proc Threads and Process Functions
+ * @ingroup APR 
+ * @{
+ */
+
+typedef enum {
+    APR_SHELLCMD,           /**< use the shell to invoke the program */
+    APR_PROGRAM,            /**< invoke the program directly, no copied env */
+    APR_PROGRAM_ENV,        /**< invoke the program, replicating our environment */
+    APR_PROGRAM_PATH,       /**< find program on PATH, use our environment */
+    APR_SHELLCMD_ENV        /**< use the shell to invoke the program,
+                             *   replicating our environment
+                             */
+} apr_cmdtype_e;
+
+typedef enum {
+    APR_WAIT,           /**< wait for the specified process to finish */
+    APR_NOWAIT          /**< do not wait -- just see if it has finished */
+} apr_wait_how_e;
+
+/* I am specifically calling out the values so that the macros below make
+ * more sense.  Yes, I know I don't need to, but I am hoping this makes what
+ * I am doing more clear.  If you want to add more reasons to exit, continue
+ * to use bitmasks.
+ */
+typedef enum {
+    APR_PROC_EXIT = 1,          /**< process exited normally */
+    APR_PROC_SIGNAL = 2,        /**< process exited due to a signal */
+    APR_PROC_SIGNAL_CORE = 4    /**< process exited and dumped a core file */
+} apr_exit_why_e;
+
+/** did we exit the process */
+#define APR_PROC_CHECK_EXIT(x)        (x & APR_PROC_EXIT)
+/** did we get a signal */
+#define APR_PROC_CHECK_SIGNALED(x)    (x & APR_PROC_SIGNAL)
+/** did we get core */
+#define APR_PROC_CHECK_CORE_DUMP(x)   (x & APR_PROC_SIGNAL_CORE)
+
+/** @see apr_procattr_io_set */
+#define APR_NO_PIPE          0
+/** @see apr_procattr_io_set and apr_file_pipe_create_ex */
+#define APR_FULL_BLOCK       1
+/** @see apr_procattr_io_set and apr_file_pipe_create_ex */
+#define APR_FULL_NONBLOCK    2
+/** @see apr_procattr_io_set */
+#define APR_PARENT_BLOCK     3
+/** @see apr_procattr_io_set */
+#define APR_CHILD_BLOCK      4
+/** @see apr_procattr_io_set */
+#define APR_NO_FILE          8
+
+/** @see apr_file_pipe_create_ex */
+#define APR_READ_BLOCK       3
+/** @see apr_file_pipe_create_ex */
+#define APR_WRITE_BLOCK      4
+
+/** @see apr_procattr_io_set 
+ * @note Win32 only effective with version 1.2.12, portably introduced in 1.3.0
+ */
+#define APR_NO_FILE          8
+
+/** @see apr_procattr_limit_set */
+#define APR_LIMIT_CPU        0
+/** @see apr_procattr_limit_set */
+#define APR_LIMIT_MEM        1
+/** @see apr_procattr_limit_set */
+#define APR_LIMIT_NPROC      2
+/** @see apr_procattr_limit_set */
+#define APR_LIMIT_NOFILE     3
+
+/**
+ * @defgroup APR_OC Other Child Flags
+ * @{
+ */
+#define APR_OC_REASON_DEATH         0     /**< child has died, caller must call
+                                           * unregister still */
+#define APR_OC_REASON_UNWRITABLE    1     /**< write_fd is unwritable */
+#define APR_OC_REASON_RESTART       2     /**< a restart is occurring, perform
+                                           * any necessary cleanup (including
+                                           * sending a special signal to child)
+                                           */
+#define APR_OC_REASON_UNREGISTER    3     /**< unregister has been called, do
+                                           * whatever is necessary (including
+                                           * kill the child) */
+#define APR_OC_REASON_LOST          4     /**< somehow the child exited without
+                                           * us knowing ... buggy os? */
+#define APR_OC_REASON_RUNNING       5     /**< a health check is occurring, 
+                                           * for most maintainence functions
+                                           * this is a no-op.
+                                           */
+/** @} */
+
+/** The APR process type */
+typedef struct apr_proc_t {
+    /** The process ID */
+    pid_t pid;
+    /** Parent's side of pipe to child's stdin */
+    apr_file_t *in;
+    /** Parent's side of pipe to child's stdout */
+    apr_file_t *out;
+    /** Parent's side of pipe to child's stdouterr */
+    apr_file_t *err;
+#if APR_HAS_PROC_INVOKED || defined(DOXYGEN)
+    /** Diagnositics/debugging string of the command invoked for 
+     *  this process [only present if APR_HAS_PROC_INVOKED is true]
+     * @remark Only enabled on Win32 by default.
+     * @bug This should either always or never be present in release
+     * builds - since it breaks binary compatibility.  We may enable
+     * it always in APR 1.0 yet leave it undefined in most cases.
+     */
+    char *invoked;
+#endif
+#if defined(WIN32) || defined(DOXYGEN)
+    /** (Win32 only) Creator's handle granting access to the process
+     * @remark This handle is closed and reset to NULL in every case
+     * corresponding to a waitpid() on Unix which returns the exit status.
+     * Therefore Win32 correspond's to Unix's zombie reaping characteristics
+     * and avoids potential handle leaks.
+     */
+    HANDLE hproc;
+#endif
+} apr_proc_t;
+
+/**
+ * The prototype for APR child errfn functions.  (See the description
+ * of apr_procattr_child_errfn_set() for more information.)
+ * It is passed the following parameters:
+ * @param pool Pool associated with the apr_proc_t.  If your child
+ *             error function needs user data, associate it with this
+ *             pool.
+ * @param err APR error code describing the error
+ * @param description Text description of type of processing which failed
+ */
+typedef void (apr_child_errfn_t)(apr_pool_t *proc, apr_status_t err,
+                                 const char *description);
+
+/** Opaque Thread structure. */
+typedef struct apr_thread_t           apr_thread_t;
+
+/** Opaque Thread attributes structure. */
+typedef struct apr_threadattr_t       apr_threadattr_t;
+
+/** Opaque Process attributes structure. */
+typedef struct apr_procattr_t         apr_procattr_t;
+
+/** Opaque control variable for one-time atomic variables.  */
+typedef struct apr_thread_once_t      apr_thread_once_t;
+
+/** Opaque thread private address space. */
+typedef struct apr_threadkey_t        apr_threadkey_t;
+
+/** Opaque record of child process. */
+typedef struct apr_other_child_rec_t  apr_other_child_rec_t;
+
+/**
+ * The prototype for any APR thread worker functions.
+ */
+typedef void *(APR_THREAD_FUNC *apr_thread_start_t)(apr_thread_t*, void*);
+
+typedef enum {
+    APR_KILL_NEVER,             /**< process is never killed (i.e., never sent
+                                 * any signals), but it will be reaped if it exits
+                                 * before the pool is cleaned up */
+    APR_KILL_ALWAYS,            /**< process is sent SIGKILL on apr_pool_t cleanup */
+    APR_KILL_AFTER_TIMEOUT,     /**< SIGTERM, wait 3 seconds, SIGKILL */
+    APR_JUST_WAIT,              /**< wait forever for the process to complete */
+    APR_KILL_ONLY_ONCE          /**< send SIGTERM and then wait */
+} apr_kill_conditions_e;
+
+/* Thread Function definitions */
+
+#if APR_HAS_THREADS
+
+/**
+ * Create and initialize a new threadattr variable
+ * @param new_attr The newly created threadattr.
+ * @param cont The pool to use
+ */
+APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new_attr, 
+                                                apr_pool_t *cont);
+
+/**
+ * Set if newly created threads should be created in detached state.
+ * @param attr The threadattr to affect 
+ * @param on Non-zero if detached threads should be created.
+ */
+APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, 
+                                                    apr_int32_t on);
+
+/**
+ * Get the detach state for this threadattr.
+ * @param attr The threadattr to reference
+ * @return APR_DETACH if threads are to be detached, or APR_NOTDETACH
+ * if threads are to be joinable. 
+ */
+APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr);
+
+/**
+ * Set the stack size of newly created threads.
+ * @param attr The threadattr to affect 
+ * @param stacksize The stack size in bytes
+ */
+APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr,
+                                                       apr_size_t stacksize);
+
+/**
+ * Set the stack guard area size of newly created threads.
+ * @param attr The threadattr to affect 
+ * @param guardsize The stack guard area size in bytes
+ * @note Thread library implementations commonly use a "guard area"
+ * after each thread's stack which is not readable or writable such that
+ * stack overflows cause a segfault; this consumes e.g. 4K of memory
+ * and increases memory management overhead.  Setting the guard area
+ * size to zero hence trades off reliable behaviour on stack overflow
+ * for performance. */
+APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr,
+                                                       apr_size_t guardsize);
+
+/**
+ * Create a new thread of execution
+ * @param new_thread The newly created thread handle.
+ * @param attr The threadattr to use to determine how to create the thread
+ * @param func The function to start the new thread in
+ * @param data Any data to be passed to the starting function
+ * @param cont The pool to use
+ */
+APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new_thread, 
+                                            apr_threadattr_t *attr, 
+                                            apr_thread_start_t func, 
+                                            void *data, apr_pool_t *cont);
+
+/**
+ * stop the current thread
+ * @param thd The thread to stop
+ * @param retval The return value to pass back to any thread that cares
+ */
+APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, 
+                                          apr_status_t retval);
+
+/**
+ * block until the desired thread stops executing.
+ * @param retval The return value from the dead thread.
+ * @param thd The thread to join
+ */
+APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, 
+                                          apr_thread_t *thd); 
+
+/**
+ * force the current thread to yield the processor
+ */
+APR_DECLARE(void) apr_thread_yield(void);
+
+/**
+ * Initialize the control variable for apr_thread_once.  If this isn't
+ * called, apr_initialize won't work.
+ * @param control The control variable to initialize
+ * @param p The pool to allocate data from.
+ */
+APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control,
+                                               apr_pool_t *p);
+
+/**
+ * Run the specified function one time, regardless of how many threads
+ * call it.
+ * @param control The control variable.  The same variable should
+ *                be passed in each time the function is tried to be
+ *                called.  This is how the underlying functions determine
+ *                if the function has ever been called before.
+ * @param func The function to call.
+ */
+APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control,
+                                          void (*func)(void));
+
+/**
+ * detach a thread
+ * @param thd The thread to detach 
+ */
+APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd);
+
+/**
+ * Return user data associated with the current thread.
+ * @param data The user data associated with the thread.
+ * @param key The key to associate with the data
+ * @param thread The currently open thread.
+ */
+APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key,
+                                             apr_thread_t *thread);
+
+/**
+ * Set user data associated with the current thread.
+ * @param data The user data to associate with the thread.
+ * @param key The key to use for associating the data with the thread
+ * @param cleanup The cleanup routine to use when the thread is destroyed.
+ * @param thread The currently open thread.
+ */
+APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key,
+                                             apr_status_t (*cleanup) (void *),
+                                             apr_thread_t *thread);
+
+/**
+ * Create and initialize a new thread private address space
+ * @param key The thread private handle.
+ * @param dest The destructor to use when freeing the private memory.
+ * @param cont The pool to use
+ */
+APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, 
+                                                    void (*dest)(void *),
+                                                    apr_pool_t *cont);
+
+/**
+ * Get a pointer to the thread private memory
+ * @param new_mem The data stored in private memory 
+ * @param key The handle for the desired thread private memory 
+ */
+APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new_mem, 
+                                                 apr_threadkey_t *key);
+
+/**
+ * Set the data to be stored in thread private memory
+ * @param priv The data to be stored in private memory 
+ * @param key The handle for the desired thread private memory 
+ */
+APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, 
+                                                 apr_threadkey_t *key);
+
+/**
+ * Free the thread private memory
+ * @param key The handle for the desired thread private memory 
+ */
+APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key);
+
+/**
+ * Return the pool associated with the current threadkey.
+ * @param data The user data associated with the threadkey.
+ * @param key The key associated with the data
+ * @param threadkey The currently open threadkey.
+ */
+APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key,
+                                                apr_threadkey_t *threadkey);
+
+/**
+ * Return the pool associated with the current threadkey.
+ * @param data The data to set.
+ * @param key The key to associate with the data.
+ * @param cleanup The cleanup routine to use when the file is destroyed.
+ * @param threadkey The currently open threadkey.
+ */
+APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key,
+                                                apr_status_t (*cleanup) (void *),
+                                                apr_threadkey_t *threadkey);
+
+#endif
+
+/**
+ * Create and initialize a new procattr variable
+ * @param new_attr The newly created procattr. 
+ * @param cont The pool to use
+ */
+APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new_attr,
+                                                  apr_pool_t *cont);
+
+/**
+ * Determine if any of stdin, stdout, or stderr should be linked to pipes 
+ * when starting a child process.
+ * @param attr The procattr we care about. 
+ * @param in Should stdin be a pipe back to the parent?
+ * @param out Should stdout be a pipe back to the parent?
+ * @param err Should stderr be a pipe back to the parent?
+ * @note If APR_NO_PIPE, there will be no special channel, the child
+ * inherits the parent's corresponding stdio stream.  If APR_NO_FILE is 
+ * specified, that corresponding stream is closed in the child (and will
+ * be INVALID_HANDLE_VALUE when inspected on Win32). This can have ugly 
+ * side effects, as the next file opened in the child on Unix will fall
+ * into the stdio stream fd slot!
+ */
+APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, 
+                                             apr_int32_t in, apr_int32_t out,
+                                             apr_int32_t err);
+
+/**
+ * Set the child_in and/or parent_in values to existing apr_file_t values.
+ * @param attr The procattr we care about. 
+ * @param child_in apr_file_t value to use as child_in. Must be a valid file.
+ * @param parent_in apr_file_t value to use as parent_in. Must be a valid file.
+ * @remark  This is NOT a required initializer function. This is
+ *          useful if you have already opened a pipe (or multiple files)
+ *          that you wish to use, perhaps persistently across multiple
+ *          process invocations - such as a log file. You can save some 
+ *          extra function calls by not creating your own pipe since this
+ *          creates one in the process space for you.
+ * @bug Note that calling this function with two NULL files on some platforms
+ * creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor
+ * is it supported.  @see apr_procattr_io_set instead for simple pipes.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_child_in_set(struct apr_procattr_t *attr,
+                                                  apr_file_t *child_in,
+                                                  apr_file_t *parent_in);
+
+/**
+ * Set the child_out and parent_out values to existing apr_file_t values.
+ * @param attr The procattr we care about. 
+ * @param child_out apr_file_t value to use as child_out. Must be a valid file.
+ * @param parent_out apr_file_t value to use as parent_out. Must be a valid file.
+ * @remark This is NOT a required initializer function. This is
+ *         useful if you have already opened a pipe (or multiple files)
+ *         that you wish to use, perhaps persistently across multiple
+ *         process invocations - such as a log file. 
+ * @bug Note that calling this function with two NULL files on some platforms
+ * creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor
+ * is it supported.  @see apr_procattr_io_set instead for simple pipes.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_child_out_set(struct apr_procattr_t *attr,
+                                                   apr_file_t *child_out,
+                                                   apr_file_t *parent_out);
+
+/**
+ * Set the child_err and parent_err values to existing apr_file_t values.
+ * @param attr The procattr we care about. 
+ * @param child_err apr_file_t value to use as child_err. Must be a valid file.
+ * @param parent_err apr_file_t value to use as parent_err. Must be a valid file.
+ * @remark This is NOT a required initializer function. This is
+ *         useful if you have already opened a pipe (or multiple files)
+ *         that you wish to use, perhaps persistently across multiple
+ *         process invocations - such as a log file. 
+ * @bug Note that calling this function with two NULL files on some platforms
+ * creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor
+ * is it supported.  @see apr_procattr_io_set instead for simple pipes.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_child_err_set(struct apr_procattr_t *attr,
+                                                   apr_file_t *child_err,
+                                                   apr_file_t *parent_err);
+
+/**
+ * Set which directory the child process should start executing in.
+ * @param attr The procattr we care about. 
+ * @param dir Which dir to start in.  By default, this is the same dir as
+ *            the parent currently resides in, when the createprocess call
+ *            is made. 
+ */
+APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, 
+                                              const char *dir);
+
+/**
+ * Set what type of command the child process will call.
+ * @param attr The procattr we care about. 
+ * @param cmd The type of command.  One of:
+ * <PRE>
+ *            APR_SHELLCMD     --  Anything that the shell can handle
+ *            APR_PROGRAM      --  Executable program   (default) 
+ *            APR_PROGRAM_ENV  --  Executable program, copy environment
+ *            APR_PROGRAM_PATH --  Executable program on PATH, copy env
+ * </PRE>
+ */
+APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr,
+                                                  apr_cmdtype_e cmd);
+
+/**
+ * Determine if the child should start in detached state.
+ * @param attr The procattr we care about. 
+ * @param detach Should the child start in detached state?  Default is no. 
+ */
+APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, 
+                                                 apr_int32_t detach);
+
+#if APR_HAVE_STRUCT_RLIMIT
+/**
+ * Set the Resource Utilization limits when starting a new process.
+ * @param attr The procattr we care about. 
+ * @param what Which limit to set, one of:
+ * <PRE>
+ *                 APR_LIMIT_CPU
+ *                 APR_LIMIT_MEM
+ *                 APR_LIMIT_NPROC
+ *                 APR_LIMIT_NOFILE
+ * </PRE>
+ * @param limit Value to set the limit to.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, 
+                                                apr_int32_t what,
+                                                struct rlimit *limit);
+#endif
+
+/**
+ * Specify an error function to be called in the child process if APR
+ * encounters an error in the child prior to running the specified program.
+ * @param attr The procattr describing the child process to be created.
+ * @param errfn The function to call in the child process.
+ * @remark At the present time, it will only be called from apr_proc_create()
+ *         on platforms where fork() is used.  It will never be called on other
+ *         platforms, on those platforms apr_proc_create() will return the error
+ *         in the parent process rather than invoke the callback in the now-forked
+ *         child process.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr,
+                                                       apr_child_errfn_t *errfn);
+
+/**
+ * Specify that apr_proc_create() should do whatever it can to report
+ * failures to the caller of apr_proc_create(), rather than find out in
+ * the child.
+ * @param attr The procattr describing the child process to be created.
+ * @param chk Flag to indicate whether or not extra work should be done
+ *            to try to report failures to the caller.
+ * @remark This flag only affects apr_proc_create() on platforms where
+ *         fork() is used.  This leads to extra overhead in the calling
+ *         process, but that may help the application handle such
+ *         errors more gracefully.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr,
+                                                       apr_int32_t chk);
+
+/**
+ * Determine if the child should start in its own address space or using the 
+ * current one from its parent
+ * @param attr The procattr we care about. 
+ * @param addrspace Should the child start in its own address space?  Default
+ *                  is no on NetWare and yes on other platforms.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr,
+                                                       apr_int32_t addrspace);
+
+/**
+ * Set the username used for running process
+ * @param attr The procattr we care about. 
+ * @param username The username used
+ * @param password User password if needed. Password is needed on WIN32
+ *                 or any other platform having
+ *                 APR_PROCATTR_USER_SET_REQUIRES_PASSWORD set.
+ */
+APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr,
+                                                const char *username,
+                                                const char *password);
+
+/**
+ * Set the group used for running process
+ * @param attr The procattr we care about. 
+ * @param groupname The group name  used
+ */
+APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr,
+                                                 const char *groupname);
+
+
+#if APR_HAS_FORK
+/**
+ * This is currently the only non-portable call in APR.  This executes 
+ * a standard unix fork.
+ * @param proc The resulting process handle. 
+ * @param cont The pool to use. 
+ * @remark returns APR_INCHILD for the child, and APR_INPARENT for the parent
+ * or an error.
+ */
+APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont);
+#endif
+
+/**
+ * Create a new process and execute a new program within that process.
+ * @param new_proc The resulting process handle.
+ * @param progname The program to run 
+ * @param args the arguments to pass to the new program.  The first 
+ *             one should be the program name.
+ * @param env The new environment table for the new process.  This 
+ *            should be a list of NULL-terminated strings. This argument
+ *            is ignored for APR_PROGRAM_ENV, APR_PROGRAM_PATH, and
+ *            APR_SHELLCMD_ENV types of commands.
+ * @param attr the procattr we should use to determine how to create the new
+ *         process
+ * @param pool The pool to use.
+ * @note This function returns without waiting for the new process to terminate;
+ * use apr_proc_wait for that.
+ */
+APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new_proc,
+                                          const char *progname,
+                                          const char * const *args,
+                                          const char * const *env, 
+                                          apr_procattr_t *attr, 
+                                          apr_pool_t *pool);
+
+/**
+ * Wait for a child process to die
+ * @param proc The process handle that corresponds to the desired child process 
+ * @param exitcode The returned exit status of the child, if a child process 
+ *                 dies, or the signal that caused the child to die.
+ *                 On platforms that don't support obtaining this information, 
+ *                 the status parameter will be returned as APR_ENOTIMPL.
+ * @param exitwhy Why the child died, the bitwise or of:
+ * <PRE>
+ *            APR_PROC_EXIT         -- process terminated normally
+ *            APR_PROC_SIGNAL       -- process was killed by a signal
+ *            APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
+ *                                     generated a core dump.
+ * </PRE>
+ * @param waithow How should we wait.  One of:
+ * <PRE>
+ *            APR_WAIT   -- block until the child process dies.
+ *            APR_NOWAIT -- return immediately regardless of if the 
+ *                          child is dead or not.
+ * </PRE>
+ * @remark The child's status is in the return code to this process.  It is one of:
+ * <PRE>
+ *            APR_CHILD_DONE     -- child is no longer running.
+ *            APR_CHILD_NOTDONE  -- child is still running.
+ * </PRE>
+ */
+APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc,
+                                        int *exitcode, apr_exit_why_e *exitwhy,
+                                        apr_wait_how_e waithow);
+
+/**
+ * Wait for any current child process to die and return information 
+ * about that child.
+ * @param proc Pointer to NULL on entry, will be filled out with child's 
+ *             information 
+ * @param exitcode The returned exit status of the child, if a child process 
+ *                 dies, or the signal that caused the child to die.
+ *                 On platforms that don't support obtaining this information, 
+ *                 the status parameter will be returned as APR_ENOTIMPL.
+ * @param exitwhy Why the child died, the bitwise or of:
+ * <PRE>
+ *            APR_PROC_EXIT         -- process terminated normally
+ *            APR_PROC_SIGNAL       -- process was killed by a signal
+ *            APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
+ *                                     generated a core dump.
+ * </PRE>
+ * @param waithow How should we wait.  One of:
+ * <PRE>
+ *            APR_WAIT   -- block until the child process dies.
+ *            APR_NOWAIT -- return immediately regardless of if the 
+ *                          child is dead or not.
+ * </PRE>
+ * @param p Pool to allocate child information out of.
+ * @bug Passing proc as a *proc rather than **proc was an odd choice
+ * for some platforms... this should be revisited in 1.0
+ */
+APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc,
+                                                  int *exitcode,
+                                                  apr_exit_why_e *exitwhy,
+                                                  apr_wait_how_e waithow,
+                                                  apr_pool_t *p);
+
+#define APR_PROC_DETACH_FOREGROUND 0    /**< Do not detach */
+#define APR_PROC_DETACH_DAEMONIZE 1     /**< Detach */
+
+/**
+ * Detach the process from the controlling terminal.
+ * @param daemonize set to non-zero if the process should daemonize
+ *                  and become a background process, else it will
+ *                  stay in the foreground.
+ */
+APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize);
+
+/**
+ * Register an other_child -- a child associated to its registered 
+ * maintence callback.  This callback is invoked when the process
+ * dies, is disconnected or disappears.
+ * @param proc The child process to register.
+ * @param maintenance maintenance is a function that is invoked with a 
+ *                    reason and the data pointer passed here.
+ * @param data Opaque context data passed to the maintenance function.
+ * @param write_fd An fd that is probed for writing.  If it is ever unwritable
+ *                 then the maintenance is invoked with reason 
+ *                 OC_REASON_UNWRITABLE.
+ * @param p The pool to use for allocating memory.
+ * @bug write_fd duplicates the proc->out stream, it's really redundant
+ * and should be replaced in the APR 1.0 API with a bitflag of which
+ * proc->in/out/err handles should be health checked.
+ * @bug no platform currently tests the pipes health.
+ */
+APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, 
+                                           void (*maintenance) (int reason, 
+                                                                void *, 
+                                                                int status),
+                                           void *data, apr_file_t *write_fd,
+                                           apr_pool_t *p);
+
+/**
+ * Stop watching the specified other child.  
+ * @param data The data to pass to the maintenance function.  This is
+ *             used to find the process to unregister.
+ * @warning Since this can be called by a maintenance function while we're
+ *          scanning the other_children list, all scanners should protect 
+ *          themself by loading ocr->next before calling any maintenance 
+ *          function.
+ */
+APR_DECLARE(void) apr_proc_other_child_unregister(void *data);
+
+/**
+ * Notify the maintenance callback of a registered other child process
+ * that application has detected an event, such as death.
+ * @param proc The process to check
+ * @param reason The reason code to pass to the maintenance function
+ * @param status The status to pass to the maintenance function
+ * @remark An example of code using this behavior;
+ * <pre>
+ * rv = apr_proc_wait_all_procs(&proc, &exitcode, &status, APR_WAIT, p);
+ * if (APR_STATUS_IS_CHILD_DONE(rv)) {
+ * \#if APR_HAS_OTHER_CHILD
+ *     if (apr_proc_other_child_alert(&proc, APR_OC_REASON_DEATH, status)
+ *             == APR_SUCCESS) {
+ *         ;  (already handled)
+ *     }
+ *     else
+ * \#endif
+ *         [... handling non-otherchild processes death ...]
+ * </pre>
+ */
+APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, 
+                                                     int reason,
+                                                     int status);
+
+/**
+ * Test one specific other child processes and invoke the maintenance callback 
+ * with the appropriate reason code, if still running, or the appropriate reason 
+ * code if the process is no longer healthy.
+ * @param ocr The registered other child
+ * @param reason The reason code (e.g. APR_OC_REASON_RESTART) if still running
+ */
+APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr,
+                                               int reason);
+
+/**
+ * Test all registered other child processes and invoke the maintenance callback 
+ * with the appropriate reason code, if still running, or the appropriate reason 
+ * code if the process is no longer healthy.
+ * @param reason The reason code (e.g. APR_OC_REASON_RESTART) to running processes
+ */
+APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason);
+
+/** 
+ * Terminate a process.
+ * @param proc The process to terminate.
+ * @param sig How to kill the process.
+ */
+APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int sig);
+
+/**
+ * Register a process to be killed when a pool dies.
+ * @param a The pool to use to define the processes lifetime 
+ * @param proc The process to register
+ * @param how How to kill the process, one of:
+ * <PRE>
+ *         APR_KILL_NEVER         -- process is never sent any signals
+ *         APR_KILL_ALWAYS        -- process is sent SIGKILL on apr_pool_t cleanup
+ *         APR_KILL_AFTER_TIMEOUT -- SIGTERM, wait 3 seconds, SIGKILL
+ *         APR_JUST_WAIT          -- wait forever for the process to complete
+ *         APR_KILL_ONLY_ONCE     -- send SIGTERM and then wait
+ * </PRE>
+ */
+APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *a, apr_proc_t *proc,
+                                           apr_kill_conditions_e how);
+
+#if APR_HAS_THREADS 
+
+#if (APR_HAVE_SIGWAIT || APR_HAVE_SIGSUSPEND) && !defined(OS2)
+
+/**
+ * Setup the process for a single thread to be used for all signal handling.
+ * @warning This must be called before any threads are created
+ */
+APR_DECLARE(apr_status_t) apr_setup_signal_thread(void);
+
+/**
+ * Make the current thread listen for signals.  This thread will loop
+ * forever, calling a provided function whenever it receives a signal.  That
+ * functions should return 1 if the signal has been handled, 0 otherwise.
+ * @param signal_handler The function to call when a signal is received
+ * apr_status_t apr_signal_thread((int)(*signal_handler)(int signum))
+ */
+APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum));
+
+#endif /* (APR_HAVE_SIGWAIT || APR_HAVE_SIGSUSPEND) && !defined(OS2) */
+
+/**
+ * Get the child-pool used by the thread from the thread info.
+ * @return apr_pool_t the pool
+ */
+APR_POOL_DECLARE_ACCESSOR(thread);
+
+#endif /* APR_HAS_THREADS */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_THREAD_PROC_H */
+

Deleted: vendor/apache/apr/1.5.2/include/apr_time.h
===================================================================
--- vendor/apache/apr/dist/include/apr_time.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_time.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,235 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_TIME_H
-#define APR_TIME_H
-
-/**
- * @file apr_time.h
- * @brief APR Time Library
- */
-
-#include "apr.h"
-#include "apr_pools.h"
-#include "apr_errno.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_time Time Routines
- * @ingroup APR 
- * @{
- */
-
-/** month names */
-APR_DECLARE_DATA extern const char apr_month_snames[12][4];
-/** day names */
-APR_DECLARE_DATA extern const char apr_day_snames[7][4];
-
-
-/** number of microseconds since 00:00:00 january 1, 1970 UTC */
-typedef apr_int64_t apr_time_t;
-
-
-/** mechanism to properly type apr_time_t literals */
-#define APR_TIME_C(val) APR_INT64_C(val)
-
-/** mechanism to properly print apr_time_t values */
-#define APR_TIME_T_FMT APR_INT64_T_FMT
-
-/** intervals for I/O timeouts, in microseconds */
-typedef apr_int64_t apr_interval_time_t;
-/** short interval for I/O timeouts, in microseconds */
-typedef apr_int32_t apr_short_interval_time_t;
-
-/** number of microseconds per second */
-#define APR_USEC_PER_SEC APR_TIME_C(1000000)
-
-/** @return apr_time_t as a second */
-#define apr_time_sec(time) ((time) / APR_USEC_PER_SEC)
-
-/** @return apr_time_t as a usec */
-#define apr_time_usec(time) ((time) % APR_USEC_PER_SEC)
-
-/** @return apr_time_t as a msec */
-#define apr_time_msec(time) (((time) / 1000) % 1000)
-
-/** @return apr_time_t as a msec */
-#define apr_time_as_msec(time) ((time) / 1000)
-
-/** @return milliseconds as an apr_time_t */
-#define apr_time_from_msec(msec) ((apr_time_t)(msec) * 1000)
-
-/** @return seconds as an apr_time_t */
-#define apr_time_from_sec(sec) ((apr_time_t)(sec) * APR_USEC_PER_SEC)
-
-/** @return a second and usec combination as an apr_time_t */
-#define apr_time_make(sec, usec) ((apr_time_t)(sec) * APR_USEC_PER_SEC \
-                                + (apr_time_t)(usec))
-
-/**
- * @return the current time
- */
-APR_DECLARE(apr_time_t) apr_time_now(void);
-
-/** @see apr_time_exp_t */
-typedef struct apr_time_exp_t apr_time_exp_t;
-
-/**
- * a structure similar to ANSI struct tm with the following differences:
- *  - tm_usec isn't an ANSI field
- *  - tm_gmtoff isn't an ANSI field (it's a bsdism)
- */
-struct apr_time_exp_t {
-    /** microseconds past tm_sec */
-    apr_int32_t tm_usec;
-    /** (0-61) seconds past tm_min */
-    apr_int32_t tm_sec;
-    /** (0-59) minutes past tm_hour */
-    apr_int32_t tm_min;
-    /** (0-23) hours past midnight */
-    apr_int32_t tm_hour;
-    /** (1-31) day of the month */
-    apr_int32_t tm_mday;
-    /** (0-11) month of the year */
-    apr_int32_t tm_mon;
-    /** year since 1900 */
-    apr_int32_t tm_year;
-    /** (0-6) days since sunday */
-    apr_int32_t tm_wday;
-    /** (0-365) days since jan 1 */
-    apr_int32_t tm_yday;
-    /** daylight saving time */
-    apr_int32_t tm_isdst;
-    /** seconds east of UTC */
-    apr_int32_t tm_gmtoff;
-};
-
-/**
- * convert an ansi time_t to an apr_time_t
- * @param result the resulting apr_time_t
- * @param input the time_t to convert
- */
-APR_DECLARE(apr_status_t) apr_time_ansi_put(apr_time_t *result, 
-                                                    time_t input);
-
-/**
- * convert a time to its human readable components using an offset
- * from GMT
- * @param result the exploded time
- * @param input the time to explode
- * @param offs the number of seconds offset to apply
- */
-APR_DECLARE(apr_status_t) apr_time_exp_tz(apr_time_exp_t *result,
-                                          apr_time_t input,
-                                          apr_int32_t offs);
-
-/**
- * convert a time to its human readable components in GMT timezone
- * @param result the exploded time
- * @param input the time to explode
- */
-APR_DECLARE(apr_status_t) apr_time_exp_gmt(apr_time_exp_t *result, 
-                                           apr_time_t input);
-
-/**
- * convert a time to its human readable components in local timezone
- * @param result the exploded time
- * @param input the time to explode
- */
-APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, 
-                                          apr_time_t input);
-
-/**
- * Convert time value from human readable format to a numeric apr_time_t 
- * e.g. elapsed usec since epoch
- * @param result the resulting imploded time
- * @param input the input exploded time
- */
-APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *result, 
-                                           apr_time_exp_t *input);
-
-/**
- * Convert time value from human readable format to a numeric apr_time_t that
- * always represents GMT
- * @param result the resulting imploded time
- * @param input the input exploded time
- */
-APR_DECLARE(apr_status_t) apr_time_exp_gmt_get(apr_time_t *result, 
-                                               apr_time_exp_t *input);
-
-/**
- * Sleep for the specified number of micro-seconds.
- * @param t desired amount of time to sleep.
- * @warning May sleep for longer than the specified time. 
- */
-APR_DECLARE(void) apr_sleep(apr_interval_time_t t);
-
-/** length of a RFC822 Date */
-#define APR_RFC822_DATE_LEN (30)
-/**
- * apr_rfc822_date formats dates in the RFC822
- * format in an efficient manner.  It is a fixed length
- * format which requires the indicated amount of storage,
- * including the trailing NUL terminator.
- * @param date_str String to write to.
- * @param t the time to convert 
- */
-APR_DECLARE(apr_status_t) apr_rfc822_date(char *date_str, apr_time_t t);
-
-/** length of a CTIME date */
-#define APR_CTIME_LEN (25)
-/**
- * apr_ctime formats dates in the ctime() format
- * in an efficient manner.  it is a fixed length format
- * and requires the indicated amount of storage including
- * the trailing NUL terminator.
- * Unlike ANSI/ISO C ctime(), apr_ctime() does not include
- * a \n at the end of the string.
- * @param date_str String to write to.
- * @param t the time to convert 
- */
-APR_DECLARE(apr_status_t) apr_ctime(char *date_str, apr_time_t t);
-
-/**
- * formats the exploded time according to the format specified
- * @param s string to write to
- * @param retsize The length of the returned string
- * @param max The maximum length of the string
- * @param format The format for the time string
- * @param tm The time to convert
- */
-APR_DECLARE(apr_status_t) apr_strftime(char *s, apr_size_t *retsize, 
-                                       apr_size_t max, const char *format, 
-                                       apr_time_exp_t *tm);
-
-/**
- * Improve the clock resolution for the lifetime of the given pool.
- * Generally this is only desireable on benchmarking and other very
- * time-sensitive applications, and has no impact on most platforms.
- * @param p The pool to associate the finer clock resolution 
- */
-APR_DECLARE(void) apr_time_clock_hires(apr_pool_t *p);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_TIME_H */

Copied: vendor/apache/apr/1.5.2/include/apr_time.h (from rev 9273, vendor/apache/apr/dist/include/apr_time.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_time.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_time.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,235 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_TIME_H
+#define APR_TIME_H
+
+/**
+ * @file apr_time.h
+ * @brief APR Time Library
+ */
+
+#include "apr.h"
+#include "apr_pools.h"
+#include "apr_errno.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_time Time Routines
+ * @ingroup APR 
+ * @{
+ */
+
+/** month names */
+APR_DECLARE_DATA extern const char apr_month_snames[12][4];
+/** day names */
+APR_DECLARE_DATA extern const char apr_day_snames[7][4];
+
+
+/** number of microseconds since 00:00:00 January 1, 1970 UTC */
+typedef apr_int64_t apr_time_t;
+
+
+/** mechanism to properly type apr_time_t literals */
+#define APR_TIME_C(val) APR_INT64_C(val)
+
+/** mechanism to properly print apr_time_t values */
+#define APR_TIME_T_FMT APR_INT64_T_FMT
+
+/** intervals for I/O timeouts, in microseconds */
+typedef apr_int64_t apr_interval_time_t;
+/** short interval for I/O timeouts, in microseconds */
+typedef apr_int32_t apr_short_interval_time_t;
+
+/** number of microseconds per second */
+#define APR_USEC_PER_SEC APR_TIME_C(1000000)
+
+/** @return apr_time_t as a second */
+#define apr_time_sec(time) ((time) / APR_USEC_PER_SEC)
+
+/** @return apr_time_t as a usec */
+#define apr_time_usec(time) ((time) % APR_USEC_PER_SEC)
+
+/** @return apr_time_t as a msec */
+#define apr_time_msec(time) (((time) / 1000) % 1000)
+
+/** @return apr_time_t as a msec */
+#define apr_time_as_msec(time) ((time) / 1000)
+
+/** @return milliseconds as an apr_time_t */
+#define apr_time_from_msec(msec) ((apr_time_t)(msec) * 1000)
+
+/** @return seconds as an apr_time_t */
+#define apr_time_from_sec(sec) ((apr_time_t)(sec) * APR_USEC_PER_SEC)
+
+/** @return a second and usec combination as an apr_time_t */
+#define apr_time_make(sec, usec) ((apr_time_t)(sec) * APR_USEC_PER_SEC \
+                                + (apr_time_t)(usec))
+
+/**
+ * @return the current time
+ */
+APR_DECLARE(apr_time_t) apr_time_now(void);
+
+/** @see apr_time_exp_t */
+typedef struct apr_time_exp_t apr_time_exp_t;
+
+/**
+ * a structure similar to ANSI struct tm with the following differences:
+ *  - tm_usec isn't an ANSI field
+ *  - tm_gmtoff isn't an ANSI field (it's a BSDism)
+ */
+struct apr_time_exp_t {
+    /** microseconds past tm_sec */
+    apr_int32_t tm_usec;
+    /** (0-61) seconds past tm_min */
+    apr_int32_t tm_sec;
+    /** (0-59) minutes past tm_hour */
+    apr_int32_t tm_min;
+    /** (0-23) hours past midnight */
+    apr_int32_t tm_hour;
+    /** (1-31) day of the month */
+    apr_int32_t tm_mday;
+    /** (0-11) month of the year */
+    apr_int32_t tm_mon;
+    /** year since 1900 */
+    apr_int32_t tm_year;
+    /** (0-6) days since Sunday */
+    apr_int32_t tm_wday;
+    /** (0-365) days since January 1 */
+    apr_int32_t tm_yday;
+    /** daylight saving time */
+    apr_int32_t tm_isdst;
+    /** seconds east of UTC */
+    apr_int32_t tm_gmtoff;
+};
+
+/**
+ * Convert an ansi time_t to an apr_time_t
+ * @param result the resulting apr_time_t
+ * @param input the time_t to convert
+ */
+APR_DECLARE(apr_status_t) apr_time_ansi_put(apr_time_t *result, 
+                                                    time_t input);
+
+/**
+ * Convert a time to its human readable components using an offset
+ * from GMT.
+ * @param result the exploded time
+ * @param input the time to explode
+ * @param offs the number of seconds offset to apply
+ */
+APR_DECLARE(apr_status_t) apr_time_exp_tz(apr_time_exp_t *result,
+                                          apr_time_t input,
+                                          apr_int32_t offs);
+
+/**
+ * Convert a time to its human readable components (GMT).
+ * @param result the exploded time
+ * @param input the time to explode
+ */
+APR_DECLARE(apr_status_t) apr_time_exp_gmt(apr_time_exp_t *result, 
+                                           apr_time_t input);
+
+/**
+ * Convert a time to its human readable components in the local timezone.
+ * @param result the exploded time
+ * @param input the time to explode
+ */
+APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, 
+                                          apr_time_t input);
+
+/**
+ * Convert time value from human readable format to a numeric apr_time_t
+ * (elapsed microseconds since the epoch).
+ * @param result the resulting imploded time
+ * @param input the input exploded time
+ */
+APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *result, 
+                                           apr_time_exp_t *input);
+
+/**
+ * Convert time value from human readable format to a numeric apr_time_t that
+ * always represents GMT.
+ * @param result the resulting imploded time
+ * @param input the input exploded time
+ */
+APR_DECLARE(apr_status_t) apr_time_exp_gmt_get(apr_time_t *result, 
+                                               apr_time_exp_t *input);
+
+/**
+ * Sleep for the specified number of micro-seconds.
+ * @param t desired amount of time to sleep.
+ * @warning May sleep for longer than the specified time. 
+ */
+APR_DECLARE(void) apr_sleep(apr_interval_time_t t);
+
+/** length of a RFC822 Date */
+#define APR_RFC822_DATE_LEN (30)
+/**
+ * apr_rfc822_date formats dates in the RFC822
+ * format in an efficient manner.  It is a fixed length
+ * format which requires APR_RFC822_DATA_LEN bytes of storage,
+ * including the trailing NUL terminator.
+ * @param date_str String to write to.
+ * @param t the time to convert 
+ */
+APR_DECLARE(apr_status_t) apr_rfc822_date(char *date_str, apr_time_t t);
+
+/** length of a CTIME date */
+#define APR_CTIME_LEN (25)
+/**
+ * apr_ctime formats dates in the ctime() format
+ * in an efficient manner.  It is a fixed length format
+ * and requires APR_CTIME_LEN bytes of storage including
+ * the trailing NUL terminator.
+ * Unlike ANSI/ISO C ctime(), apr_ctime() does not include
+ * a \\n at the end of the string.
+ * @param date_str String to write to.
+ * @param t the time to convert 
+ */
+APR_DECLARE(apr_status_t) apr_ctime(char *date_str, apr_time_t t);
+
+/**
+ * Formats the exploded time according to the format specified
+ * @param s string to write to
+ * @param retsize The length of the returned string
+ * @param max The maximum length of the string
+ * @param format The format for the time string
+ * @param tm The time to convert
+ */
+APR_DECLARE(apr_status_t) apr_strftime(char *s, apr_size_t *retsize, 
+                                       apr_size_t max, const char *format, 
+                                       apr_time_exp_t *tm);
+
+/**
+ * Improve the clock resolution for the lifetime of the given pool.
+ * Generally this is only desirable on benchmarking and other very
+ * time-sensitive applications, and has no impact on most platforms.
+ * @param p The pool to associate the finer clock resolution 
+ */
+APR_DECLARE(void) apr_time_clock_hires(apr_pool_t *p);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_TIME_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_user.h
===================================================================
--- vendor/apache/apr/dist/include/apr_user.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_user.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,158 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_USER_H
-#define APR_USER_H
-
-/**
- * @file apr_user.h
- * @brief APR User ID Services 
- */
-
-#include "apr.h"
-#include "apr_errno.h"
-#include "apr_pools.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @defgroup apr_user User and Group ID Services
- * @ingroup APR 
- * @{
- */
-
-/**
- * Structure for determining user ownership.
- */
-#ifdef WIN32
-typedef PSID                      apr_uid_t;
-#else
-typedef uid_t                     apr_uid_t;
-#endif
-
-/**
- * Structure for determining group ownership.
- */
-#ifdef WIN32
-typedef PSID                      apr_gid_t;
-#else
-typedef gid_t                     apr_gid_t;
-#endif
-
-#if APR_HAS_USER 
-
-/**
- * Get the userid (and groupid) of the calling process
- * @param userid   Returns the user id
- * @param groupid  Returns the user's group id
- * @param p The pool from which to allocate working space
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *userid,
-                                          apr_gid_t *groupid,
-                                          apr_pool_t *p);
-
-/**
- * Get the user name for a specified userid
- * @param username Pointer to new string containing user name (on output)
- * @param userid The userid
- * @param p The pool from which to allocate the string
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid,
-                                           apr_pool_t *p);
-
-/**
- * Get the userid (and groupid) for the specified username
- * @param userid   Returns the user id
- * @param groupid  Returns the user's group id
- * @param username The username to lookup
- * @param p The pool from which to allocate working space
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *userid, apr_gid_t *groupid,
-                                      const char *username, apr_pool_t *p);
-
-/**
- * Get the home directory for the named user
- * @param dirname Pointer to new string containing directory name (on output)
- * @param username The named user
- * @param p The pool from which to allocate the string
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, 
-                                               const char *username, 
-                                               apr_pool_t *p);
-
-/**
- * Compare two user identifiers for equality.
- * @param left One uid to test
- * @param right Another uid to test
- * @return APR_SUCCESS if the apr_uid_t strutures identify the same user,
- * APR_EMISMATCH if not, APR_BADARG if an apr_uid_t is invalid.
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-#if defined(WIN32)
-APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right);
-#else
-#define apr_uid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH)
-#endif
-
-/**
- * Get the group name for a specified groupid
- * @param groupname Pointer to new string containing group name (on output)
- * @param groupid The groupid
- * @param p The pool from which to allocate the string
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, 
-                                             apr_gid_t groupid, apr_pool_t *p);
-
-/**
- * Get the groupid for a specified group name
- * @param groupid Pointer to the group id (on output)
- * @param groupname The group name to look up
- * @param p The pool from which to allocate the string
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *groupid, 
-                                      const char *groupname, apr_pool_t *p);
-
-/**
- * Compare two group identifiers for equality.
- * @param left One gid to test
- * @param right Another gid to test
- * @return APR_SUCCESS if the apr_gid_t strutures identify the same group,
- * APR_EMISMATCH if not, APR_BADARG if an apr_gid_t is invalid.
- * @remark This function is available only if APR_HAS_USER is defined.
- */
-#if defined(WIN32)
-APR_DECLARE(apr_status_t) apr_gid_compare(apr_gid_t left, apr_gid_t right);
-#else
-#define apr_gid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH)
-#endif
-
-#endif  /* ! APR_HAS_USER */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* ! APR_USER_H */

Copied: vendor/apache/apr/1.5.2/include/apr_user.h (from rev 9273, vendor/apache/apr/dist/include/apr_user.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_user.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_user.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,158 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_USER_H
+#define APR_USER_H
+
+/**
+ * @file apr_user.h
+ * @brief APR User ID Services 
+ */
+
+#include "apr.h"
+#include "apr_errno.h"
+#include "apr_pools.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @defgroup apr_user User and Group ID Services
+ * @ingroup APR 
+ * @{
+ */
+
+/**
+ * Structure for determining user ownership.
+ */
+#ifdef WIN32
+typedef PSID                      apr_uid_t;
+#else
+typedef uid_t                     apr_uid_t;
+#endif
+
+/**
+ * Structure for determining group ownership.
+ */
+#ifdef WIN32
+typedef PSID                      apr_gid_t;
+#else
+typedef gid_t                     apr_gid_t;
+#endif
+
+#if APR_HAS_USER 
+
+/**
+ * Get the userid (and groupid) of the calling process
+ * @param userid   Returns the user id
+ * @param groupid  Returns the user's group id
+ * @param p The pool from which to allocate working space
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *userid,
+                                          apr_gid_t *groupid,
+                                          apr_pool_t *p);
+
+/**
+ * Get the user name for a specified userid
+ * @param username Pointer to new string containing user name (on output)
+ * @param userid The userid
+ * @param p The pool from which to allocate the string
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid,
+                                           apr_pool_t *p);
+
+/**
+ * Get the userid (and groupid) for the specified username
+ * @param userid   Returns the user id
+ * @param groupid  Returns the user's group id
+ * @param username The username to look up
+ * @param p The pool from which to allocate working space
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *userid, apr_gid_t *groupid,
+                                      const char *username, apr_pool_t *p);
+
+/**
+ * Get the home directory for the named user
+ * @param dirname Pointer to new string containing directory name (on output)
+ * @param username The named user
+ * @param p The pool from which to allocate the string
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, 
+                                               const char *username, 
+                                               apr_pool_t *p);
+
+/**
+ * Compare two user identifiers for equality.
+ * @param left One uid to test
+ * @param right Another uid to test
+ * @return APR_SUCCESS if the apr_uid_t structures identify the same user,
+ * APR_EMISMATCH if not, APR_BADARG if an apr_uid_t is invalid.
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+#if defined(WIN32)
+APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right);
+#else
+#define apr_uid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH)
+#endif
+
+/**
+ * Get the group name for a specified groupid
+ * @param groupname Pointer to new string containing group name (on output)
+ * @param groupid The groupid
+ * @param p The pool from which to allocate the string
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, 
+                                             apr_gid_t groupid, apr_pool_t *p);
+
+/**
+ * Get the groupid for a specified group name
+ * @param groupid Pointer to the group id (on output)
+ * @param groupname The group name to look up
+ * @param p The pool from which to allocate the string
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *groupid, 
+                                      const char *groupname, apr_pool_t *p);
+
+/**
+ * Compare two group identifiers for equality.
+ * @param left One gid to test
+ * @param right Another gid to test
+ * @return APR_SUCCESS if the apr_gid_t structures identify the same group,
+ * APR_EMISMATCH if not, APR_BADARG if an apr_gid_t is invalid.
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+#if defined(WIN32)
+APR_DECLARE(apr_status_t) apr_gid_compare(apr_gid_t left, apr_gid_t right);
+#else
+#define apr_gid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH)
+#endif
+
+#endif  /* ! APR_HAS_USER */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* ! APR_USER_H */

Deleted: vendor/apache/apr/1.5.2/include/apr_version.h
===================================================================
--- vendor/apache/apr/dist/include/apr_version.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/apr_version.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,164 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_VERSION_H
-#define APR_VERSION_H
-
-/**
- * @file apr_version.h
- * @brief APR Versioning Interface
- * 
- * APR's Version
- *
- * There are several different mechanisms for accessing the version. There
- * is a string form, and a set of numbers; in addition, there are constants
- * which can be compiled into your application, and you can query the library
- * being used for its actual version.
- *
- * Note that it is possible for an application to detect that it has been
- * compiled against a different version of APR by use of the compile-time
- * constants and the use of the run-time query function.
- *
- * APR version numbering follows the guidelines specified in:
- *
- *     http://apr.apache.org/versioning.html
- */
-
-
-#define APR_COPYRIGHT "Copyright (c) 2013 The Apache Software " \
-                      "Foundation or its licensors, as applicable."
-
-/* The numeric compile-time version constants. These constants are the
- * authoritative version numbers for APR. 
- */
-
-/** major version 
- * Major API changes that could cause compatibility problems for older
- * programs such as structure size changes.  No binary compatibility is
- * possible across a change in the major version.
- */
-#define APR_MAJOR_VERSION       1
-
-/** minor version
- * Minor API changes that do not cause binary compatibility problems.
- * Reset to 0 when upgrading APR_MAJOR_VERSION
- */
-#define APR_MINOR_VERSION       4
-
-/** patch level 
- * The Patch Level never includes API changes, simply bug fixes.
- * Reset to 0 when upgrading APR_MINOR_VERSION
- */
-#define APR_PATCH_VERSION       8
-
-/** 
- * The symbol APR_IS_DEV_VERSION is only defined for internal,
- * "development" copies of APR.  It is undefined for released versions
- * of APR.
- */
-/* #define APR_IS_DEV_VERSION */
-
-/**
- * Check at compile time if the APR version is at least a certain
- * level.
- * @param major The major version component of the version checked
- * for (e.g., the "1" of "1.3.0").
- * @param minor The minor version component of the version checked
- * for (e.g., the "3" of "1.3.0").
- * @param patch The patch level component of the version checked
- * for (e.g., the "0" of "1.3.0").
- * @remark This macro is available with APR versions starting with
- * 1.3.0.
- */
-#define APR_VERSION_AT_LEAST(major,minor,patch)                    \
-(((major) < APR_MAJOR_VERSION)                                     \
- || ((major) == APR_MAJOR_VERSION && (minor) < APR_MINOR_VERSION) \
- || ((major) == APR_MAJOR_VERSION && (minor) == APR_MINOR_VERSION && (patch) <= APR_PATCH_VERSION))
-
-#if defined(APR_IS_DEV_VERSION) || defined(DOXYGEN)
-/** Internal: string form of the "is dev" flag */
-#ifndef APR_IS_DEV_STRING
-#define APR_IS_DEV_STRING "-dev"
-#endif
-#else
-#define APR_IS_DEV_STRING ""
-#endif
-
-/* APR_STRINGIFY is defined here, and also in apr_general.h, so wrap it */
-#ifndef APR_STRINGIFY
-/** Properly quote a value as a string in the C preprocessor */
-#define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n)
-/** Helper macro for APR_STRINGIFY */
-#define APR_STRINGIFY_HELPER(n) #n
-#endif
-
-/** The formatted string of APR's version */
-#define APR_VERSION_STRING \
-     APR_STRINGIFY(APR_MAJOR_VERSION) "." \
-     APR_STRINGIFY(APR_MINOR_VERSION) "." \
-     APR_STRINGIFY(APR_PATCH_VERSION) \
-     APR_IS_DEV_STRING
-
-/** An alternative formatted string of APR's version */
-/* macro for Win32 .rc files using numeric csv representation */
-#define APR_VERSION_STRING_CSV APR_MAJOR_VERSION ##, \
-                             ##APR_MINOR_VERSION ##, \
-                             ##APR_PATCH_VERSION
-
-
-#ifndef APR_VERSION_ONLY
-
-/* The C language API to access the version at run time, 
- * as opposed to compile time.  APR_VERSION_ONLY may be defined 
- * externally when preprocessing apr_version.h to obtain strictly 
- * the C Preprocessor macro declarations.
- */
-
-#include "apr.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** 
- * The numeric version information is broken out into fields within this 
- * structure. 
- */
-typedef struct {
-    int major;      /**< major number */
-    int minor;      /**< minor number */
-    int patch;      /**< patch number */
-    int is_dev;     /**< is development (1 or 0) */
-} apr_version_t;
-
-/**
- * Return APR's version information information in a numeric form.
- *
- *  @param pvsn Pointer to a version structure for returning the version
- *              information.
- */
-APR_DECLARE(void) apr_version(apr_version_t *pvsn);
-
-/** Return APR's version information as a string. */
-APR_DECLARE(const char *) apr_version_string(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ndef APR_VERSION_ONLY */
-
-#endif /* ndef APR_VERSION_H */

Copied: vendor/apache/apr/1.5.2/include/apr_version.h (from rev 9273, vendor/apache/apr/dist/include/apr_version.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/apr_version.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/apr_version.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,164 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_VERSION_H
+#define APR_VERSION_H
+
+/**
+ * @file apr_version.h
+ * @brief APR Versioning Interface
+ * 
+ * APR's Version
+ *
+ * There are several different mechanisms for accessing the version. There
+ * is a string form, and a set of numbers; in addition, there are constants
+ * which can be compiled into your application, and you can query the library
+ * being used for its actual version.
+ *
+ * Note that it is possible for an application to detect that it has been
+ * compiled against a different version of APR by use of the compile-time
+ * constants and the use of the run-time query function.
+ *
+ * APR version numbering follows the guidelines specified in:
+ *
+ *     http://apr.apache.org/versioning.html
+ */
+
+
+#define APR_COPYRIGHT "Copyright (c) 2000-2015 The Apache Software " \
+                      "Foundation or its licensors, as applicable."
+
+/* The numeric compile-time version constants. These constants are the
+ * authoritative version numbers for APR. 
+ */
+
+/** major version 
+ * Major API changes that could cause compatibility problems for older
+ * programs such as structure size changes.  No binary compatibility is
+ * possible across a change in the major version.
+ */
+#define APR_MAJOR_VERSION       1
+
+/** minor version
+ * Minor API changes that do not cause binary compatibility problems.
+ * Reset to 0 when upgrading APR_MAJOR_VERSION
+ */
+#define APR_MINOR_VERSION       5
+
+/** patch level 
+ * The Patch Level never includes API changes, simply bug fixes.
+ * Reset to 0 when upgrading APR_MINOR_VERSION
+ */
+#define APR_PATCH_VERSION       2
+
+/** 
+ * The symbol APR_IS_DEV_VERSION is only defined for internal,
+ * "development" copies of APR.  It is undefined for released versions
+ * of APR.
+ */
+/* #define APR_IS_DEV_VERSION */
+
+/**
+ * Check at compile time if the APR version is at least a certain
+ * level.
+ * @param major The major version component of the version checked
+ * for (e.g., the "1" of "1.3.0").
+ * @param minor The minor version component of the version checked
+ * for (e.g., the "3" of "1.3.0").
+ * @param patch The patch level component of the version checked
+ * for (e.g., the "0" of "1.3.0").
+ * @remark This macro is available with APR versions starting with
+ * 1.3.0.
+ */
+#define APR_VERSION_AT_LEAST(major,minor,patch)                    \
+(((major) < APR_MAJOR_VERSION)                                     \
+ || ((major) == APR_MAJOR_VERSION && (minor) < APR_MINOR_VERSION) \
+ || ((major) == APR_MAJOR_VERSION && (minor) == APR_MINOR_VERSION && (patch) <= APR_PATCH_VERSION))
+
+#if defined(APR_IS_DEV_VERSION) || defined(DOXYGEN)
+/** Internal: string form of the "is dev" flag */
+#ifndef APR_IS_DEV_STRING
+#define APR_IS_DEV_STRING "-dev"
+#endif
+#else
+#define APR_IS_DEV_STRING ""
+#endif
+
+/* APR_STRINGIFY is defined here, and also in apr_general.h, so wrap it */
+#ifndef APR_STRINGIFY
+/** Properly quote a value as a string in the C preprocessor */
+#define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n)
+/** Helper macro for APR_STRINGIFY */
+#define APR_STRINGIFY_HELPER(n) #n
+#endif
+
+/** The formatted string of APR's version */
+#define APR_VERSION_STRING \
+     APR_STRINGIFY(APR_MAJOR_VERSION) "." \
+     APR_STRINGIFY(APR_MINOR_VERSION) "." \
+     APR_STRINGIFY(APR_PATCH_VERSION) \
+     APR_IS_DEV_STRING
+
+/** An alternative formatted string of APR's version */
+/* macro for Win32 .rc files using numeric csv representation */
+#define APR_VERSION_STRING_CSV APR_MAJOR_VERSION ##, \
+                             ##APR_MINOR_VERSION ##, \
+                             ##APR_PATCH_VERSION
+
+
+#ifndef APR_VERSION_ONLY
+
+/* The C language API to access the version at run time, 
+ * as opposed to compile time.  APR_VERSION_ONLY may be defined 
+ * externally when preprocessing apr_version.h to obtain strictly 
+ * the C Preprocessor macro declarations.
+ */
+
+#include "apr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** 
+ * The numeric version information is broken out into fields within this 
+ * structure. 
+ */
+typedef struct {
+    int major;      /**< major number */
+    int minor;      /**< minor number */
+    int patch;      /**< patch number */
+    int is_dev;     /**< is development (1 or 0) */
+} apr_version_t;
+
+/**
+ * Return APR's version information information in a numeric form.
+ *
+ *  @param pvsn Pointer to a version structure for returning the version
+ *              information.
+ */
+APR_DECLARE(void) apr_version(apr_version_t *pvsn);
+
+/** Return APR's version information as a string. */
+APR_DECLARE(const char *) apr_version_string(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ndef APR_VERSION_ONLY */
+
+#endif /* ndef APR_VERSION_H */

Deleted: vendor/apache/apr/1.5.2/include/arch/netware/apr_private.h
===================================================================
--- vendor/apache/apr/dist/include/arch/netware/apr_private.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/arch/netware/apr_private.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,205 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Note: 
- * This is the netware-specific autoconf-like config file
- * which unix creates at ./configure time.
- */
-
-#ifdef NETWARE
-
-#ifndef APR_PRIVATE_H
-#define APR_PRIVATE_H
-
-/* Pick up publicly advertised headers and symbols before the
- * APR internal private headers and symbols
- */
-#include <apr.h>
-
-/* Pick up privately consumed headers */
-#include <ndkvers.h>
-
-/* Include alloca.h to get compiler-dependent defines */ 
-#include <alloca.h>
-
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <library.h>
-#include <netware.h>
-
-/* Use this section to define all of the HAVE_FOO_H
- * that are required to build properly.
- */
-#define HAVE_DLFCN_H    1
-#define HAVE_LIMITS_H   1
-#define HAVE_SIGNAL_H   1
-#define HAVE_STDDEF_H   1
-#define HAVE_STDLIB_H   1
-#ifndef USE_WINSOCK
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_WRITEV       1
-#endif
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_MMAN_H 1
-#define HAVE_FCNTL_H    1
-#define HAVE_ICONV_H    1
-#define HAVE_UTIME_H    1
-
-#define HAVE_STRICMP    1
-#define HAVE_STRNICMP   1
-#define HAVE_STRDUP     1
-#define HAVE_STRSTR     1
-#define HAVE_MEMCHR     1
-#define HAVE_CALLOC     1
-#define HAVE_UTIME      1
-
-#define HAVE_GETENV     1
-#define HAVE_SETENV     1
-#define HAVE_UNSETENV   1
-
-#define HAVE_WRITEV     1
-
-#define HAVE_GETPASS_R  1
-/*
- * Hack around older NDKs which have only the getpassword() function,
- * a threadsafe, API-equivilant of getpass_r().
- */
-#if (CURRENT_NDK_THRESHOLD < 709060000)
-#define getpass_r       getpassword
-#endif
-
-/*#define DSO_USE_DLFCN */
-
-#ifdef NW_BUILD_IPV6
-#define HAVE_GETADDRINFO 1
-#define HAVE_GETNAMEINFO 1
-#endif
-
-/* 1 is used for SIGABRT on netware */
-/* 2 is used for SIGFPE on netware */
-/* 3 is used for SIGILL on netware */
-/* 4 is used for SIGINT on netware */
-/* 5 is used for SIGSEGV on netware */
-/* 6 is used for SIGTERM on netware */
-/* 7 is used for SIGPOLL on netware */
-
-#if (CURRENT_NDK_THRESHOLD < 306030000)
-#define SIGKILL         11
-#define SIGALRM         13
-#define SIGCHLD         14 
-#define SIGCONT         15
-#define SIGHUP          16
-#define SIGPIPE         17
-#define SIGQUIT         18
-#define SIGSTOP         19
-#define SIGTSTP         20
-#define SIGTTIN         21
-#define SIGTTOU         22
-#define SIGUSR1         23
-#define SIGUSR2         24
-#endif
-
-#define SIGTRAP         25
-#define SIGIOT          26
-#define SIGSTKFLT       28
-#define SIGURG          29
-#define SIGXCPU         30
-#define SIGXFSZ         31
-#define SIGVTALRM       32
-#define SIGPROF         33
-#define SIGWINCH        34
-#define SIGIO           35
-
-#if (CURRENT_NDK_THRESHOLD < 406230000)
-#undef  SA_NOCLDSTOP
-#define SA_NOCLDSTOP    0x00000001
-#endif
-#ifndef SIGBUS
-#define SIGBUS          SIGSEGV
-#endif
-
-#define _getch          getcharacter
-
-#define SIZEOF_SHORT    2
-#define SIZEOF_INT      4
-#define SIZEOF_LONGLONG 8
-#define SIZEOF_CHAR     1
-#define SIZEOF_SSIZE_T  SIZEOF_INT
-
-void netware_pool_proc_cleanup();
-
-/* NLM registration routines for managing which NLMs
-    are using the library. */
-int register_NLM(void *NLMHandle);
-int unregister_NLM(void *NLMHandle);
-
-/* Application global data management */
-extern int  gLibId;
-extern void *gLibHandle;
-
-typedef struct app_data {
-    int     initialized;
-    void*   gPool;
-    void*   gs_aHooksToSort;
-    void*   gs_phOptionalHooks;
-    void*   gs_phOptionalFunctions;
-    void*   gs_nlmhandle;
-    rtag_t  gs_startup_rtag;
-    rtag_t  gs_socket_rtag;
-    rtag_t  gs_lookup_rtag;
-    rtag_t  gs_event_rtag;
-    rtag_t  gs_pcp_rtag;
-    void*   gs_ldap_xref_lock;
-    void*   gs_xref_head;
-} APP_DATA;
-
-int setGlobalPool(void *data);
-void* getGlobalPool();
-int setStatCache(void *data);
-void* getStatCache();
-
-/* Redefine malloc to use the library malloc call so 
-    that all of the memory resources will be owned
-    and can be shared by the library. */
-#undef malloc
-#define malloc(x) library_malloc(gLibHandle,x)
-#ifndef __MWERKS__
-#define _alloca         alloca
-#endif
-
-/* 64-bit integer conversion function */
-#define APR_INT64_STRFN strtoll
-
-#if APR_HAS_LARGE_FILES
-#define APR_OFF_T_STRFN strtoll
-#else
-#define APR_OFF_T_STRFN strtol
-#endif
-
-/* used to check DWORD overflow for 64bit compiles */
-#define APR_DWORD_MAX   0xFFFFFFFFUL
-
-/*
- * Include common private declarations.
- */
-#include "../apr_private_common.h"
-
-#endif  /*APR_PRIVATE_H*/
-#endif  /*NETWARE*/

Copied: vendor/apache/apr/1.5.2/include/arch/netware/apr_private.h (from rev 9273, vendor/apache/apr/dist/include/arch/netware/apr_private.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/arch/netware/apr_private.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/arch/netware/apr_private.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,205 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Note: 
+ * This is the netware-specific autoconf-like config file
+ * which unix creates at ./configure time.
+ */
+
+#ifdef NETWARE
+
+#ifndef APR_PRIVATE_H
+#define APR_PRIVATE_H
+
+/* Pick up publicly advertised headers and symbols before the
+ * APR internal private headers and symbols
+ */
+#include <apr.h>
+
+/* Pick up privately consumed headers */
+#include <ndkvers.h>
+
+/* Include alloca.h to get compiler-dependent defines */ 
+#include <alloca.h>
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <library.h>
+#include <netware.h>
+
+/* Use this section to define all of the HAVE_FOO_H
+ * that are required to build properly.
+ */
+#define HAVE_DLFCN_H    1
+#define HAVE_LIMITS_H   1
+#define HAVE_SIGNAL_H   1
+#define HAVE_STDDEF_H   1
+#define HAVE_STDLIB_H   1
+#ifndef USE_WINSOCK
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_WRITEV       1
+#endif
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_MMAN_H 1
+#define HAVE_FCNTL_H    1
+#define HAVE_ICONV_H    1
+#define HAVE_UTIME_H    1
+
+#define HAVE_STRICMP    1
+#define HAVE_STRNICMP   1
+#define HAVE_STRDUP     1
+#define HAVE_STRSTR     1
+#define HAVE_MEMCHR     1
+#define HAVE_CALLOC     1
+#define HAVE_UTIME      1
+
+#define HAVE_GETENV     1
+#define HAVE_SETENV     1
+#define HAVE_UNSETENV   1
+
+#define HAVE_WRITEV     1
+
+#define HAVE_GETPASS_R  1
+/*
+ * Hack around older NDKs which have only the getpassword() function,
+ * a threadsafe, API-equivalent of getpass_r().
+ */
+#if (CURRENT_NDK_THRESHOLD < 709060000)
+#define getpass_r       getpassword
+#endif
+
+/*#define DSO_USE_DLFCN */
+
+#ifdef NW_BUILD_IPV6
+#define HAVE_GETADDRINFO 1
+#define HAVE_GETNAMEINFO 1
+#endif
+
+/* 1 is used for SIGABRT on netware */
+/* 2 is used for SIGFPE on netware */
+/* 3 is used for SIGILL on netware */
+/* 4 is used for SIGINT on netware */
+/* 5 is used for SIGSEGV on netware */
+/* 6 is used for SIGTERM on netware */
+/* 7 is used for SIGPOLL on netware */
+
+#if (CURRENT_NDK_THRESHOLD < 306030000)
+#define SIGKILL         11
+#define SIGALRM         13
+#define SIGCHLD         14 
+#define SIGCONT         15
+#define SIGHUP          16
+#define SIGPIPE         17
+#define SIGQUIT         18
+#define SIGSTOP         19
+#define SIGTSTP         20
+#define SIGTTIN         21
+#define SIGTTOU         22
+#define SIGUSR1         23
+#define SIGUSR2         24
+#endif
+
+#define SIGTRAP         25
+#define SIGIOT          26
+#define SIGSTKFLT       28
+#define SIGURG          29
+#define SIGXCPU         30
+#define SIGXFSZ         31
+#define SIGVTALRM       32
+#define SIGPROF         33
+#define SIGWINCH        34
+#define SIGIO           35
+
+#if (CURRENT_NDK_THRESHOLD < 406230000)
+#undef  SA_NOCLDSTOP
+#define SA_NOCLDSTOP    0x00000001
+#endif
+#ifndef SIGBUS
+#define SIGBUS          SIGSEGV
+#endif
+
+#define _getch          getcharacter
+
+#define SIZEOF_SHORT    2
+#define SIZEOF_INT      4
+#define SIZEOF_LONGLONG 8
+#define SIZEOF_CHAR     1
+#define SIZEOF_SSIZE_T  SIZEOF_INT
+
+void netware_pool_proc_cleanup();
+
+/* NLM registration routines for managing which NLMs
+    are using the library. */
+int register_NLM(void *NLMHandle);
+int unregister_NLM(void *NLMHandle);
+
+/* Application global data management */
+extern int  gLibId;
+extern void *gLibHandle;
+
+typedef struct app_data {
+    int     initialized;
+    void*   gPool;
+    void*   gs_aHooksToSort;
+    void*   gs_phOptionalHooks;
+    void*   gs_phOptionalFunctions;
+    void*   gs_nlmhandle;
+    rtag_t  gs_startup_rtag;
+    rtag_t  gs_socket_rtag;
+    rtag_t  gs_lookup_rtag;
+    rtag_t  gs_event_rtag;
+    rtag_t  gs_pcp_rtag;
+    void*   gs_ldap_xref_lock;
+    void*   gs_xref_head;
+} APP_DATA;
+
+int setGlobalPool(void *data);
+void* getGlobalPool();
+int setStatCache(void *data);
+void* getStatCache();
+
+/* Redefine malloc to use the library malloc call so 
+    that all of the memory resources will be owned
+    and can be shared by the library. */
+#undef malloc
+#define malloc(x) library_malloc(gLibHandle,x)
+#ifndef __MWERKS__
+#define _alloca         alloca
+#endif
+
+/* 64-bit integer conversion function */
+#define APR_INT64_STRFN strtoll
+
+#if APR_HAS_LARGE_FILES
+#define APR_OFF_T_STRFN strtoll
+#else
+#define APR_OFF_T_STRFN strtol
+#endif
+
+/* used to check DWORD overflow for 64bit compiles */
+#define APR_DWORD_MAX   0xFFFFFFFFUL
+
+/*
+ * Include common private declarations.
+ */
+#include "../apr_private_common.h"
+
+#endif  /*APR_PRIVATE_H*/
+#endif  /*NETWARE*/

Deleted: vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_poll_private.h
===================================================================
--- vendor/apache/apr/dist/include/arch/unix/apr_arch_poll_private.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_poll_private.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,169 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_ARCH_POLL_PRIVATE_H
-#define APR_ARCH_POLL_PRIVATE_H
-
-#if HAVE_POLL_H
-#include <poll.h>
-#endif
-
-#if HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-
-#ifdef HAVE_PORT_CREATE
-#include <port.h>
-#include <sys/port_impl.h>
-#endif
-
-#ifdef HAVE_KQUEUE
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/time.h>
-#endif
-
-#ifdef HAVE_EPOLL
-#include <sys/epoll.h>
-#endif
-
-#ifdef NETWARE
-#define HAS_SOCKETS(dt) (dt == APR_POLL_SOCKET) ? 1 : 0
-#define HAS_PIPES(dt) (dt == APR_POLL_FILE) ? 1 : 0
-#endif
-
-/* Choose the best method platform specific to use in apr_pollset */
-#ifdef HAVE_KQUEUE
-#define POLLSET_USES_KQUEUE
-#define POLLSET_DEFAULT_METHOD APR_POLLSET_KQUEUE
-#elif defined(HAVE_PORT_CREATE)
-#define POLLSET_USES_PORT
-#define POLLSET_DEFAULT_METHOD APR_POLLSET_PORT
-#elif defined(HAVE_EPOLL)
-#define POLLSET_USES_EPOLL
-#define POLLSET_DEFAULT_METHOD APR_POLLSET_EPOLL
-#elif defined(HAVE_POLL)
-#define POLLSET_USES_POLL
-#define POLLSET_DEFAULT_METHOD APR_POLLSET_POLL
-#else
-#define POLLSET_USES_SELECT
-#define POLLSET_DEFAULT_METHOD APR_POLLSET_SELECT
-#endif
-
-#ifdef WIN32
-#define POLL_USES_SELECT
-#undef POLLSET_DEFAULT_METHOD
-#define POLLSET_DEFAULT_METHOD APR_POLLSET_SELECT
-#else
-#ifdef HAVE_POLL
-#define POLL_USES_POLL
-#else
-#define POLL_USES_SELECT
-#endif
-#endif
-
-#if defined(POLLSET_USES_KQUEUE) || defined(POLLSET_USES_EPOLL) || defined(POLLSET_USES_PORT)
-
-#include "apr_ring.h"
-
-#if APR_HAS_THREADS
-#include "apr_thread_mutex.h"
-#define pollset_lock_rings() \
-    if (pollset->flags & APR_POLLSET_THREADSAFE) \
-        apr_thread_mutex_lock(pollset->p->ring_lock);
-#define pollset_unlock_rings() \
-    if (pollset->flags & APR_POLLSET_THREADSAFE) \
-        apr_thread_mutex_unlock(pollset->p->ring_lock);
-#else
-#define pollset_lock_rings()
-#define pollset_unlock_rings()
-#endif
-
-typedef struct pfd_elem_t pfd_elem_t;
-
-struct pfd_elem_t {
-    APR_RING_ENTRY(pfd_elem_t) link;
-    apr_pollfd_t pfd;
-#ifdef HAVE_PORT_CREATE
-   int on_query_ring;
-#endif
-};
-
-#endif
-
-typedef struct apr_pollset_private_t apr_pollset_private_t;
-typedef struct apr_pollset_provider_t apr_pollset_provider_t;
-typedef struct apr_pollcb_provider_t apr_pollcb_provider_t;
-struct apr_pollset_t
-{
-    apr_pool_t *pool;
-    apr_uint32_t nelts;
-    apr_uint32_t nalloc;
-    apr_uint32_t flags;
-    /* Pipe descriptors used for wakeup */
-    apr_file_t *wakeup_pipe[2];
-    apr_pollfd_t wakeup_pfd;
-    apr_pollset_private_t *p;
-    apr_pollset_provider_t *provider;
-};
-
-typedef union {
-#if defined(HAVE_EPOLL)
-    struct epoll_event *epoll;
-#endif
-#if defined(HAVE_PORT_CREATE)
-    port_event_t *port;
-#endif
-#if defined(HAVE_KQUEUE)
-    struct kevent *ke;
-#endif
-#if defined(HAVE_POLL)
-    struct pollfd *ps;
-#endif
-    void *undef;
-} apr_pollcb_pset;
-
-struct apr_pollcb_t {
-    apr_pool_t *pool;
-    apr_uint32_t nelts;
-    apr_uint32_t nalloc;
-    int fd;
-    apr_pollcb_pset pollset;
-    apr_pollfd_t **copyset;
-    apr_pollcb_provider_t *provider;
-};
-
-struct apr_pollset_provider_t {
-    apr_status_t (*create)(apr_pollset_t *, apr_uint32_t, apr_pool_t *, apr_uint32_t);
-    apr_status_t (*add)(apr_pollset_t *, const apr_pollfd_t *);
-    apr_status_t (*remove)(apr_pollset_t *, const apr_pollfd_t *);
-    apr_status_t (*poll)(apr_pollset_t *, apr_interval_time_t, apr_int32_t *, const apr_pollfd_t **);
-    apr_status_t (*cleanup)(apr_pollset_t *);
-    const char *name;
-};
-
-struct apr_pollcb_provider_t {
-    apr_status_t (*create)(apr_pollcb_t *, apr_uint32_t, apr_pool_t *, apr_uint32_t);
-    apr_status_t (*add)(apr_pollcb_t *, apr_pollfd_t *);
-    apr_status_t (*remove)(apr_pollcb_t *, apr_pollfd_t *);
-    apr_status_t (*poll)(apr_pollcb_t *, apr_interval_time_t, apr_pollcb_cb_t, void *);
-    const char *name;
-};
-
-/* Private functions */
-void apr_pollset_drain_wakeup_pipe(apr_pollset_t *pollset);
-
-#endif /* APR_ARCH_POLL_PRIVATE_H */

Copied: vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_poll_private.h (from rev 9273, vendor/apache/apr/dist/include/arch/unix/apr_arch_poll_private.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_poll_private.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_poll_private.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,178 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_ARCH_POLL_PRIVATE_H
+#define APR_ARCH_POLL_PRIVATE_H
+
+#if HAVE_POLL_H
+#include <poll.h>
+#endif
+
+#if HAVE_SYS_POLL_H
+#include <sys/poll.h>
+#endif
+
+#ifdef HAVE_PORT_CREATE
+#include <port.h>
+#include <sys/port_impl.h>
+#endif
+
+#ifdef HAVE_KQUEUE
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_EPOLL
+#include <sys/epoll.h>
+#endif
+
+#ifdef NETWARE
+#define HAS_SOCKETS(dt) (dt == APR_POLL_SOCKET) ? 1 : 0
+#define HAS_PIPES(dt) (dt == APR_POLL_FILE) ? 1 : 0
+#endif
+
+#if defined(HAVE_AIO_H) && defined(HAVE_AIO_MSGQ)
+#define _AIO_OS390	/* enable a bunch of z/OS aio.h definitions */
+#include <aio.h>	/* aiocb	*/
+#endif
+
+/* Choose the best method platform specific to use in apr_pollset */
+#ifdef HAVE_KQUEUE
+#define POLLSET_USES_KQUEUE
+#define POLLSET_DEFAULT_METHOD APR_POLLSET_KQUEUE
+#elif defined(HAVE_PORT_CREATE)
+#define POLLSET_USES_PORT
+#define POLLSET_DEFAULT_METHOD APR_POLLSET_PORT
+#elif defined(HAVE_EPOLL)
+#define POLLSET_USES_EPOLL
+#define POLLSET_DEFAULT_METHOD APR_POLLSET_EPOLL
+#elif defined(HAVE_AIO_MSGQ)
+#define POLLSET_USES_AIO_MSGQ
+#define POLLSET_DEFAULT_METHOD APR_POLLSET_AIO_MSGQ
+#elif defined(HAVE_POLL)
+#define POLLSET_USES_POLL
+#define POLLSET_DEFAULT_METHOD APR_POLLSET_POLL
+#else
+#define POLLSET_USES_SELECT
+#define POLLSET_DEFAULT_METHOD APR_POLLSET_SELECT
+#endif
+
+#ifdef WIN32
+#define POLL_USES_SELECT
+#undef POLLSET_DEFAULT_METHOD
+#define POLLSET_DEFAULT_METHOD APR_POLLSET_SELECT
+#else
+#ifdef HAVE_POLL
+#define POLL_USES_POLL
+#else
+#define POLL_USES_SELECT
+#endif
+#endif
+
+#if defined(POLLSET_USES_KQUEUE) || defined(POLLSET_USES_EPOLL) || defined(POLLSET_USES_PORT) || defined(POLLSET_USES_AIO_MSGQ)
+
+#include "apr_ring.h"
+
+#if APR_HAS_THREADS
+#include "apr_thread_mutex.h"
+#define pollset_lock_rings() \
+    if (pollset->flags & APR_POLLSET_THREADSAFE) \
+        apr_thread_mutex_lock(pollset->p->ring_lock);
+#define pollset_unlock_rings() \
+    if (pollset->flags & APR_POLLSET_THREADSAFE) \
+        apr_thread_mutex_unlock(pollset->p->ring_lock);
+#else
+#define pollset_lock_rings()
+#define pollset_unlock_rings()
+#endif
+
+typedef struct pfd_elem_t pfd_elem_t;
+
+struct pfd_elem_t {
+    APR_RING_ENTRY(pfd_elem_t) link;
+    apr_pollfd_t pfd;
+#ifdef HAVE_PORT_CREATE
+   int on_query_ring;
+#endif
+};
+
+#endif
+
+typedef struct apr_pollset_private_t apr_pollset_private_t;
+typedef struct apr_pollset_provider_t apr_pollset_provider_t;
+typedef struct apr_pollcb_provider_t apr_pollcb_provider_t;
+
+struct apr_pollset_t
+{
+    apr_pool_t *pool;
+    apr_uint32_t nelts;
+    apr_uint32_t nalloc;
+    apr_uint32_t flags;
+    /* Pipe descriptors used for wakeup */
+    apr_file_t *wakeup_pipe[2];
+    apr_pollfd_t wakeup_pfd;
+    apr_pollset_private_t *p;
+    apr_pollset_provider_t *provider;
+};
+
+typedef union {
+#if defined(HAVE_EPOLL)
+    struct epoll_event *epoll;
+#endif
+#if defined(HAVE_PORT_CREATE)
+    port_event_t *port;
+#endif
+#if defined(HAVE_KQUEUE)
+    struct kevent *ke;
+#endif
+#if defined(HAVE_POLL)
+    struct pollfd *ps;
+#endif
+    void *undef;
+} apr_pollcb_pset;
+
+struct apr_pollcb_t {
+    apr_pool_t *pool;
+    apr_uint32_t nelts;
+    apr_uint32_t nalloc;
+    int fd;
+    apr_pollcb_pset pollset;
+    apr_pollfd_t **copyset;
+    apr_pollcb_provider_t *provider;
+};
+
+struct apr_pollset_provider_t {
+    apr_status_t (*create)(apr_pollset_t *, apr_uint32_t, apr_pool_t *, apr_uint32_t);
+    apr_status_t (*add)(apr_pollset_t *, const apr_pollfd_t *);
+    apr_status_t (*remove)(apr_pollset_t *, const apr_pollfd_t *);
+    apr_status_t (*poll)(apr_pollset_t *, apr_interval_time_t, apr_int32_t *, const apr_pollfd_t **);
+    apr_status_t (*cleanup)(apr_pollset_t *);
+    const char *name;
+};
+
+struct apr_pollcb_provider_t {
+    apr_status_t (*create)(apr_pollcb_t *, apr_uint32_t, apr_pool_t *, apr_uint32_t);
+    apr_status_t (*add)(apr_pollcb_t *, apr_pollfd_t *);
+    apr_status_t (*remove)(apr_pollcb_t *, apr_pollfd_t *);
+    apr_status_t (*poll)(apr_pollcb_t *, apr_interval_time_t, apr_pollcb_cb_t, void *);
+    const char *name;
+};
+
+/* Private functions */
+void apr_pollset_drain_wakeup_pipe(apr_pollset_t *pollset);
+
+#endif /* APR_ARCH_POLL_PRIVATE_H */

Deleted: vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_threadproc.h
===================================================================
--- vendor/apache/apr/dist/include/arch/unix/apr_arch_threadproc.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_threadproc.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,109 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_private.h"
-#include "apr_thread_proc.h"
-#include "apr_file_io.h"
-#include "apr_arch_file_io.h"
-
-/* System headers required for thread/process library */
-#if APR_HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif
-#if APR_HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#if APR_HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#if HAVE_SCHED_H
-#include <sched.h>
-#endif
-/* End System Headers */
-
-
-#ifndef THREAD_PROC_H
-#define THREAD_PROC_H
-
-#define SHELL_PATH "/bin/sh"
-
-#if APR_HAS_THREADS
-
-struct apr_thread_t {
-    apr_pool_t *pool;
-    pthread_t *td;
-    void *data;
-    apr_thread_start_t func;
-    apr_status_t exitval;
-};
-
-struct apr_threadattr_t {
-    apr_pool_t *pool;
-    pthread_attr_t attr;
-};
-
-struct apr_threadkey_t {
-    apr_pool_t *pool;
-    pthread_key_t key;
-};
-
-struct apr_thread_once_t {
-    pthread_once_t once;
-};
-
-#endif
-
-struct apr_procattr_t {
-    apr_pool_t *pool;
-    apr_file_t *parent_in;
-    apr_file_t *child_in;
-    apr_file_t *parent_out;
-    apr_file_t *child_out;
-    apr_file_t *parent_err;
-    apr_file_t *child_err;
-    char *currdir;
-    apr_int32_t cmdtype;
-    apr_int32_t detached;
-#ifdef RLIMIT_CPU
-    struct rlimit *limit_cpu;
-#endif
-#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS)
-    struct rlimit *limit_mem;
-#endif
-#ifdef RLIMIT_NPROC
-    struct rlimit *limit_nproc;
-#endif
-#ifdef RLIMIT_NOFILE
-    struct rlimit *limit_nofile;
-#endif
-    apr_child_errfn_t *errfn;
-    apr_int32_t errchk;
-    apr_uid_t   uid;
-    apr_gid_t   gid;
-};
-
-#endif  /* ! THREAD_PROC_H */
-

Copied: vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_threadproc.h (from rev 9273, vendor/apache/apr/dist/include/arch/unix/apr_arch_threadproc.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_threadproc.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/arch/unix/apr_arch_threadproc.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,109 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_private.h"
+#include "apr_thread_proc.h"
+#include "apr_file_io.h"
+#include "apr_arch_file_io.h"
+
+/* System headers required for thread/process library */
+#if APR_HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif
+#if APR_HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+#if APR_HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SCHED_H
+#include <sched.h>
+#endif
+/* End System Headers */
+
+
+#ifndef THREAD_PROC_H
+#define THREAD_PROC_H
+
+#define SHELL_PATH "/bin/sh"
+
+#if APR_HAS_THREADS
+
+struct apr_thread_t {
+    apr_pool_t *pool;
+    pthread_t *td;
+    void *data;
+    apr_thread_start_t func;
+    apr_status_t exitval;
+};
+
+struct apr_threadattr_t {
+    apr_pool_t *pool;
+    pthread_attr_t attr;
+};
+
+struct apr_threadkey_t {
+    apr_pool_t *pool;
+    pthread_key_t key;
+};
+
+struct apr_thread_once_t {
+    pthread_once_t once;
+};
+
+#endif
+
+struct apr_procattr_t {
+    apr_pool_t *pool;
+    apr_file_t *parent_in;
+    apr_file_t *child_in;
+    apr_file_t *parent_out;
+    apr_file_t *child_out;
+    apr_file_t *parent_err;
+    apr_file_t *child_err;
+    char *currdir;
+    apr_int32_t cmdtype;
+    apr_int32_t detached;
+#ifdef RLIMIT_CPU
+    struct rlimit *limit_cpu;
+#endif
+#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS)
+    struct rlimit *limit_mem;
+#endif
+#ifdef RLIMIT_NPROC
+    struct rlimit *limit_nproc;
+#endif
+#ifdef RLIMIT_NOFILE
+    struct rlimit *limit_nofile;
+#endif
+    apr_child_errfn_t *errfn;
+    apr_int32_t errchk;
+    apr_uid_t   uid;
+    apr_gid_t   gid;
+};
+
+#endif  /* ! THREAD_PROC_H */
+

Deleted: vendor/apache/apr/1.5.2/include/arch/unix/apr_private.h.in
===================================================================
--- vendor/apache/apr/dist/include/arch/unix/apr_private.h.in	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/arch/unix/apr_private.h.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,997 +0,0 @@
-/* include/arch/unix/apr_private.h.in.  Generated from configure.in by autoheader.  */
-
-
-#ifndef APR_PRIVATE_H
-#define APR_PRIVATE_H
-
-
-/* Define if building universal (internal helper macro) */
-#undef AC_APPLE_UNIVERSAL_BUILD
-
-/* Define if apr_allocator should use mmap */
-#undef APR_ALLOCATOR_USES_MMAP
-
-/* Define as function which can be used for conversion of strings to
-   apr_int64_t */
-#undef APR_INT64_STRFN
-
-/* Define as function used for conversion of strings to apr_off_t */
-#undef APR_OFF_T_STRFN
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
-/* Define to path of random device */
-#undef DEV_RANDOM
-
-/* Define if struct dirent has an inode member */
-#undef DIRENT_INODE
-
-/* Define if struct dirent has a d_type member */
-#undef DIRENT_TYPE
-
-/* Define if DSO support uses dlfcn.h */
-#undef DSO_USE_DLFCN
-
-/* Define if DSO support uses dyld.h */
-#undef DSO_USE_DYLD
-
-/* Define if DSO support uses shl_load */
-#undef DSO_USE_SHL
-
-/* Define to list of paths to EGD sockets */
-#undef EGD_DEFAULT_SOCKET
-
-/* Define if fcntl locks affect threads within the process */
-#undef FCNTL_IS_GLOBAL
-
-/* Define if fcntl returns EACCES when F_SETLK is already held */
-#undef FCNTL_TRYACQUIRE_EACCES
-
-/* Define if flock locks affect threads within the process */
-#undef FLOCK_IS_GLOBAL
-
-/* Define if gethostbyaddr is thread safe */
-#undef GETHOSTBYADDR_IS_THREAD_SAFE
-
-/* Define if gethostbyname is thread safe */
-#undef GETHOSTBYNAME_IS_THREAD_SAFE
-
-/* Define if gethostbyname_r has the glibc style */
-#undef GETHOSTBYNAME_R_GLIBC2
-
-/* Define if gethostbyname_r has the hostent_data for the third argument */
-#undef GETHOSTBYNAME_R_HOSTENT_DATA
-
-/* Define if getservbyname is thread safe */
-#undef GETSERVBYNAME_IS_THREAD_SAFE
-
-/* Define if getservbyname_r has the glibc style */
-#undef GETSERVBYNAME_R_GLIBC2
-
-/* Define if getservbyname_r has the OSF/1 style */
-#undef GETSERVBYNAME_R_OSF1
-
-/* Define if getservbyname_r has the Solaris style */
-#undef GETSERVBYNAME_R_SOLARIS
-
-/* Define if accept4 function is supported */
-#undef HAVE_ACCEPT4
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define if compiler provides atomic builtins */
-#undef HAVE_ATOMIC_BUILTINS
-
-/* Define if BONE_VERSION is defined in sys/socket.h */
-#undef HAVE_BONE_VERSION
-
-/* Define to 1 if you have the <ByteOrder.h> header file. */
-#undef HAVE_BYTEORDER_H
-
-/* Define to 1 if you have the `calloc' function. */
-#undef HAVE_CALLOC
-
-/* Define to 1 if you have the <conio.h> header file. */
-#undef HAVE_CONIO_H
-
-/* Define to 1 if you have the `create_area' function. */
-#undef HAVE_CREATE_AREA
-
-/* Define to 1 if you have the `create_sem' function. */
-#undef HAVE_CREATE_SEM
-
-/* Define to 1 if you have the <crypt.h> header file. */
-#undef HAVE_CRYPT_H
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#undef HAVE_CTYPE_H
-
-/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
-   don't. */
-#undef HAVE_DECL_SYS_SIGLIST
-
-/* Define to 1 if you have the <dirent.h> header file. */
-#undef HAVE_DIRENT_H
-
-/* Define to 1 if you have the <dir.h> header file. */
-#undef HAVE_DIR_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <dl.h> header file. */
-#undef HAVE_DL_H
-
-/* Define if dup3 function is supported */
-#undef HAVE_DUP3
-
-/* Define if EGD is supported */
-#undef HAVE_EGD
-
-/* Define if the epoll interface is supported */
-#undef HAVE_EPOLL
-
-/* Define if epoll_create1 function is supported */
-#undef HAVE_EPOLL_CREATE1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `fdatasync' function. */
-#undef HAVE_FDATASYNC
-
-/* Define to 1 if you have the `flock' function. */
-#undef HAVE_FLOCK
-
-/* Define to 1 if you have the `fork' function. */
-#undef HAVE_FORK
-
-/* Define if F_SETLK is defined in fcntl.h */
-#undef HAVE_F_SETLK
-
-/* Define if getaddrinfo accepts the AI_ADDRCONFIG flag */
-#undef HAVE_GAI_ADDRCONFIG
-
-/* Define to 1 if you have the `gai_strerror' function. */
-#undef HAVE_GAI_STRERROR
-
-/* Define if getaddrinfo exists and works well enough for APR */
-#undef HAVE_GETADDRINFO
-
-/* Define to 1 if you have the `getenv' function. */
-#undef HAVE_GETENV
-
-/* Define to 1 if you have the `getgrgid_r' function. */
-#undef HAVE_GETGRGID_R
-
-/* Define to 1 if you have the `getgrnam_r' function. */
-#undef HAVE_GETGRNAM_R
-
-/* Define to 1 if you have the `gethostbyaddr_r' function. */
-#undef HAVE_GETHOSTBYADDR_R
-
-/* Define to 1 if you have the `gethostbyname_r' function. */
-#undef HAVE_GETHOSTBYNAME_R
-
-/* Define to 1 if you have the `getifaddrs' function. */
-#undef HAVE_GETIFADDRS
-
-/* Define if getnameinfo exists */
-#undef HAVE_GETNAMEINFO
-
-/* Define to 1 if you have the `getpass' function. */
-#undef HAVE_GETPASS
-
-/* Define to 1 if you have the `getpassphrase' function. */
-#undef HAVE_GETPASSPHRASE
-
-/* Define to 1 if you have the `getpwnam_r' function. */
-#undef HAVE_GETPWNAM_R
-
-/* Define to 1 if you have the `getpwuid_r' function. */
-#undef HAVE_GETPWUID_R
-
-/* Define to 1 if you have the `getrlimit' function. */
-#undef HAVE_GETRLIMIT
-
-/* Define to 1 if you have the `getservbyname_r' function. */
-#undef HAVE_GETSERVBYNAME_R
-
-/* Define to 1 if you have the `gmtime_r' function. */
-#undef HAVE_GMTIME_R
-
-/* Define to 1 if you have the <grp.h> header file. */
-#undef HAVE_GRP_H
-
-/* Define if hstrerror is present */
-#undef HAVE_HSTRERROR
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <io.h> header file. */
-#undef HAVE_IO_H
-
-/* Define to 1 if you have the `isinf' function. */
-#undef HAVE_ISINF
-
-/* Define to 1 if you have the `isnan' function. */
-#undef HAVE_ISNAN
-
-/* Define to 1 if you have the <kernel/OS.h> header file. */
-#undef HAVE_KERNEL_OS_H
-
-/* Define to 1 if you have the `kqueue' function. */
-#undef HAVE_KQUEUE
-
-/* Define to 1 if you have the <langinfo.h> header file. */
-#undef HAVE_LANGINFO_H
-
-/* Define to 1 if you have the `bsd' library (-lbsd). */
-#undef HAVE_LIBBSD
-
-/* Define to 1 if you have the `sendfile' library (-lsendfile). */
-#undef HAVE_LIBSENDFILE
-
-/* Define to 1 if you have the `truerand' library (-ltruerand). */
-#undef HAVE_LIBTRUERAND
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have the `localtime_r' function. */
-#undef HAVE_LOCALTIME_R
-
-/* Define if LOCK_EX is defined in sys/file.h */
-#undef HAVE_LOCK_EX
-
-/* Define to 1 if you have the <mach-o/dyld.h> header file. */
-#undef HAVE_MACH_O_DYLD_H
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define if MAP_ANON is defined in sys/mman.h */
-#undef HAVE_MAP_ANON
-
-/* Define to 1 if you have the `memchr' function. */
-#undef HAVE_MEMCHR
-
-/* Define to 1 if you have the `memmove' function. */
-#undef HAVE_MEMMOVE
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `mkstemp' function. */
-#undef HAVE_MKSTEMP
-
-/* Define to 1 if you have the `mkstemp64' function. */
-#undef HAVE_MKSTEMP64
-
-/* Define to 1 if you have the `mmap' function. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the `mmap64' function. */
-#undef HAVE_MMAP64
-
-/* Define to 1 if you have the `munmap' function. */
-#undef HAVE_MUNMAP
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#undef HAVE_NETDB_H
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <netinet/sctp.h> header file. */
-#undef HAVE_NETINET_SCTP_H
-
-/* Define to 1 if you have the <netinet/sctp_uio.h> header file. */
-#undef HAVE_NETINET_SCTP_UIO_H
-
-/* Defined if netinet/tcp.h is present */
-#undef HAVE_NETINET_TCP_H
-
-/* Define to 1 if you have the <net/errno.h> header file. */
-#undef HAVE_NET_ERRNO_H
-
-/* Define to 1 if you have the `nl_langinfo' function. */
-#undef HAVE_NL_LANGINFO
-
-/* Define to 1 if you have the <os2.h> header file. */
-#undef HAVE_OS2_H
-
-/* Define to 1 if you have the <osreldate.h> header file. */
-#undef HAVE_OSRELDATE_H
-
-/* Define to 1 if you have the <OS.h> header file. */
-#undef HAVE_OS_H
-
-/* Define to 1 if you have the `poll' function. */
-#undef HAVE_POLL
-
-/* Define if POLLIN is defined */
-#undef HAVE_POLLIN
-
-/* Define to 1 if you have the <poll.h> header file. */
-#undef HAVE_POLL_H
-
-/* Define to 1 if you have the `port_create' function. */
-#undef HAVE_PORT_CREATE
-
-/* Define to 1 if you have the <process.h> header file. */
-#undef HAVE_PROCESS_H
-
-/* Define to 1 if you have the `pthread_attr_setguardsize' function. */
-#undef HAVE_PTHREAD_ATTR_SETGUARDSIZE
-
-/* Define to 1 if you have the <pthread.h> header file. */
-#undef HAVE_PTHREAD_H
-
-/* Define to 1 if you have the `pthread_key_delete' function. */
-#undef HAVE_PTHREAD_KEY_DELETE
-
-/* Define to 1 if you have the `pthread_mutexattr_setpshared' function. */
-#undef HAVE_PTHREAD_MUTEXATTR_SETPSHARED
-
-/* Define if recursive pthread mutexes are available */
-#undef HAVE_PTHREAD_MUTEX_RECURSIVE
-
-/* Define if cross-process robust mutexes are available */
-#undef HAVE_PTHREAD_MUTEX_ROBUST
-
-/* Define if PTHREAD_PROCESS_SHARED is defined in pthread.h */
-#undef HAVE_PTHREAD_PROCESS_SHARED
-
-/* Define if pthread rwlocks are available */
-#undef HAVE_PTHREAD_RWLOCKS
-
-/* Define to 1 if you have the `pthread_rwlock_init' function. */
-#undef HAVE_PTHREAD_RWLOCK_INIT
-
-/* Define to 1 if you have the `pthread_yield' function. */
-#undef HAVE_PTHREAD_YIELD
-
-/* Define to 1 if you have the `putenv' function. */
-#undef HAVE_PUTENV
-
-/* Define to 1 if you have the <pwd.h> header file. */
-#undef HAVE_PWD_H
-
-/* Define to 1 if you have the `readdir64_r' function. */
-#undef HAVE_READDIR64_R
-
-/* Define to 1 if you have the <sched.h> header file. */
-#undef HAVE_SCHED_H
-
-/* Define to 1 if you have the `sched_yield' function. */
-#undef HAVE_SCHED_YIELD
-
-/* Define to 1 if you have the <semaphore.h> header file. */
-#undef HAVE_SEMAPHORE_H
-
-/* Define to 1 if you have the `semctl' function. */
-#undef HAVE_SEMCTL
-
-/* Define to 1 if you have the `semget' function. */
-#undef HAVE_SEMGET
-
-/* Define to 1 if you have the `sem_close' function. */
-#undef HAVE_SEM_CLOSE
-
-/* Define to 1 if you have the `sem_post' function. */
-#undef HAVE_SEM_POST
-
-/* Define if SEM_UNDO is defined in sys/sem.h */
-#undef HAVE_SEM_UNDO
-
-/* Define to 1 if you have the `sem_unlink' function. */
-#undef HAVE_SEM_UNLINK
-
-/* Define to 1 if you have the `sem_wait' function. */
-#undef HAVE_SEM_WAIT
-
-/* Define to 1 if you have the `sendfile' function. */
-#undef HAVE_SENDFILE
-
-/* Define to 1 if you have the `sendfile64' function. */
-#undef HAVE_SENDFILE64
-
-/* Define to 1 if you have the `sendfilev' function. */
-#undef HAVE_SENDFILEV
-
-/* Define to 1 if you have the `sendfilev64' function. */
-#undef HAVE_SENDFILEV64
-
-/* Define to 1 if you have the `send_file' function. */
-#undef HAVE_SEND_FILE
-
-/* Define to 1 if you have the `setenv' function. */
-#undef HAVE_SETENV
-
-/* Define to 1 if you have the `setrlimit' function. */
-#undef HAVE_SETRLIMIT
-
-/* Define to 1 if you have the `setsid' function. */
-#undef HAVE_SETSID
-
-/* Define to 1 if you have the `set_h_errno' function. */
-#undef HAVE_SET_H_ERRNO
-
-/* Define to 1 if you have the `shmat' function. */
-#undef HAVE_SHMAT
-
-/* Define to 1 if you have the `shmctl' function. */
-#undef HAVE_SHMCTL
-
-/* Define to 1 if you have the `shmdt' function. */
-#undef HAVE_SHMDT
-
-/* Define to 1 if you have the `shmget' function. */
-#undef HAVE_SHMGET
-
-/* Define to 1 if you have the `shm_open' function. */
-#undef HAVE_SHM_OPEN
-
-/* Define to 1 if you have the `shm_unlink' function. */
-#undef HAVE_SHM_UNLINK
-
-/* Define to 1 if you have the `sigaction' function. */
-#undef HAVE_SIGACTION
-
-/* Define to 1 if you have the <signal.h> header file. */
-#undef HAVE_SIGNAL_H
-
-/* Define to 1 if you have the `sigsuspend' function. */
-#undef HAVE_SIGSUSPEND
-
-/* Define to 1 if you have the `sigwait' function. */
-#undef HAVE_SIGWAIT
-
-/* Whether you have socklen_t */
-#undef HAVE_SOCKLEN_T
-
-/* Define if the SOCK_CLOEXEC flag is supported */
-#undef HAVE_SOCK_CLOEXEC
-
-/* Define if SO_ACCEPTFILTER is defined in sys/socket.h */
-#undef HAVE_SO_ACCEPTFILTER
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdio.h> header file. */
-#undef HAVE_STDIO_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror_r' function. */
-#undef HAVE_STRERROR_R
-
-/* Define to 1 if you have the `stricmp' function. */
-#undef HAVE_STRICMP
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the `strnicmp' function. */
-#undef HAVE_STRNICMP
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define if struct impreq was found */
-#undef HAVE_STRUCT_IPMREQ
-
-/* Define to 1 if `st_atimensec' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_ATIMENSEC
-
-/* Define to 1 if `st_atime_n' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_ATIME_N
-
-/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
-
-/* Define to 1 if `st_blocks' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_BLOCKS
-
-/* Define to 1 if `st_ctimensec' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_CTIMENSEC
-
-/* Define to 1 if `st_ctime_n' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_CTIME_N
-
-/* Define to 1 if `st_ctim.tv_nsec' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC
-
-/* Define to 1 if `st_mtimensec' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_MTIMENSEC
-
-/* Define to 1 if `st_mtime_n' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_MTIME_N
-
-/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
-
-/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */
-#undef HAVE_STRUCT_TM_TM_GMTOFF
-
-/* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */
-#undef HAVE_STRUCT_TM___TM_GMTOFF
-
-/* Define to 1 if you have the <sysapi.h> header file. */
-#undef HAVE_SYSAPI_H
-
-/* Define to 1 if you have the <sysgtime.h> header file. */
-#undef HAVE_SYSGTIME_H
-
-/* Define to 1 if you have the <sys/file.h> header file. */
-#undef HAVE_SYS_FILE_H
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the <sys/ipc.h> header file. */
-#undef HAVE_SYS_IPC_H
-
-/* Define to 1 if you have the <sys/mman.h> header file. */
-#undef HAVE_SYS_MMAN_H
-
-/* Define to 1 if you have the <sys/mutex.h> header file. */
-#undef HAVE_SYS_MUTEX_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#undef HAVE_SYS_POLL_H
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define to 1 if you have the <sys/sem.h> header file. */
-#undef HAVE_SYS_SEM_H
-
-/* Define to 1 if you have the <sys/sendfile.h> header file. */
-#undef HAVE_SYS_SENDFILE_H
-
-/* Define to 1 if you have the <sys/shm.h> header file. */
-#undef HAVE_SYS_SHM_H
-
-/* Define to 1 if you have the <sys/signal.h> header file. */
-#undef HAVE_SYS_SIGNAL_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-#undef HAVE_SYS_SOCKIO_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/sysctl.h> header file. */
-#undef HAVE_SYS_SYSCTL_H
-
-/* Define to 1 if you have the <sys/syslimits.h> header file. */
-#undef HAVE_SYS_SYSLIMITS_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#undef HAVE_SYS_UIO_H
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#undef HAVE_SYS_UN_H
-
-/* Define to 1 if you have the <sys/uuid.h> header file. */
-#undef HAVE_SYS_UUID_H
-
-/* Define to 1 if you have the <sys/wait.h> header file. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define if TCP_CORK is defined in netinet/tcp.h */
-#undef HAVE_TCP_CORK
-
-/* Define if TCP_NODELAY and TCP_CORK can be enabled at the same time */
-#undef HAVE_TCP_NODELAY_WITH_CORK
-
-/* Define if TCP_NOPUSH is defined in netinet/tcp.h */
-#undef HAVE_TCP_NOPUSH
-
-/* Define to 1 if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define to 1 if you have the <time.h> header file. */
-#undef HAVE_TIME_H
-
-/* Define to 1 if you have the <tpfeq.h> header file. */
-#undef HAVE_TPFEQ_H
-
-/* Define to 1 if you have the <tpfio.h> header file. */
-#undef HAVE_TPFIO_H
-
-/* Define if truerand is supported */
-#undef HAVE_TRUERAND
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the <unix.h> header file. */
-#undef HAVE_UNIX_H
-
-/* Define to 1 if you have the `unsetenv' function. */
-#undef HAVE_UNSETENV
-
-/* Define to 1 if you have the `utime' function. */
-#undef HAVE_UTIME
-
-/* Define to 1 if you have the `utimes' function. */
-#undef HAVE_UTIMES
-
-/* Define to 1 if you have the `uuid_create' function. */
-#undef HAVE_UUID_CREATE
-
-/* Define to 1 if you have the `uuid_generate' function. */
-#undef HAVE_UUID_GENERATE
-
-/* Define to 1 if you have the <uuid.h> header file. */
-#undef HAVE_UUID_H
-
-/* Define to 1 if you have the <uuid/uuid.h> header file. */
-#undef HAVE_UUID_UUID_H
-
-/* Define if C compiler supports VLA */
-#undef HAVE_VLA
-
-/* Define to 1 if you have the `waitpid' function. */
-#undef HAVE_WAITPID
-
-/* Define to 1 if you have the <windows.h> header file. */
-#undef HAVE_WINDOWS_H
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-#undef HAVE_WINSOCK2_H
-
-/* Define to 1 if you have the `writev' function. */
-#undef HAVE_WRITEV
-
-/* Define for z/OS pthread API nuances */
-#undef HAVE_ZOS_PTHREADS
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#undef LT_OBJDIR
-
-/* Define if EAI_ error codes from getaddrinfo are negative */
-#undef NEGATIVE_EAI
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define if POSIX semaphores affect threads within the process */
-#undef POSIXSEM_IS_GLOBAL
-
-/* Define on PowerPC 405 where errata 77 applies */
-#undef PPC405_ERRATA
-
-/* Define if pthread_attr_getdetachstate() has one arg */
-#undef PTHREAD_ATTR_GETDETACHSTATE_TAKES_ONE_ARG
-
-/* Define if pthread_getspecific() has two args */
-#undef PTHREAD_GETSPECIFIC_TAKES_TWO_ARGS
-
-/* Define if readdir is thread safe */
-#undef READDIR_IS_THREAD_SAFE
-
-/* Define to 1 if the `setpgrp' function takes no argument. */
-#undef SETPGRP_VOID
-
-/* */
-#undef SIGWAIT_TAKES_ONE_ARG
-
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of ino_t */
-#undef SIZEOF_INO_T
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of `long long', as computed by sizeof. */
-#undef SIZEOF_LONG_LONG
-
-/* The size of off_t */
-#undef SIZEOF_OFF_T
-
-/* The size of pid_t */
-#undef SIZEOF_PID_T
-
-/* The size of `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
-/* The size of size_t */
-#undef SIZEOF_SIZE_T
-
-/* The size of ssize_t */
-#undef SIZEOF_SSIZE_T
-
-/* The size of struct iovec */
-#undef SIZEOF_STRUCT_IOVEC
-
-/* The size of `void*', as computed by sizeof. */
-#undef SIZEOF_VOIDP
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define if strerror returns int */
-#undef STRERROR_R_RC_INT
-
-/* Define if SysV semaphores affect threads within the process */
-#undef SYSVSEM_IS_GLOBAL
-
-/* Define if use of generic atomics is requested */
-#undef USE_ATOMICS_GENERIC
-
-/* Define if BeOS Semaphores will be used */
-#undef USE_BEOSSEM
-
-/* Define if SVR4-style fcntl() will be used */
-#undef USE_FCNTL_SERIALIZE
-
-/* Define if 4.2BSD-style flock() will be used */
-#undef USE_FLOCK_SERIALIZE
-
-/* Define if BeOS areas will be used */
-#undef USE_SHMEM_BEOS
-
-/* Define if BeOS areas will be used */
-#undef USE_SHMEM_BEOS_ANON
-
-/* Define if 4.4BSD-style mmap() via MAP_ANON will be used */
-#undef USE_SHMEM_MMAP_ANON
-
-/* Define if mmap() via POSIX.1 shm_open() on temporary file will be used */
-#undef USE_SHMEM_MMAP_SHM
-
-/* Define if Classical mmap() on temporary file will be used */
-#undef USE_SHMEM_MMAP_TMP
-
-/* Define if SVR4-style mmap() on /dev/zero will be used */
-#undef USE_SHMEM_MMAP_ZERO
-
-/* Define if OS/2 DosAllocSharedMem() will be used */
-#undef USE_SHMEM_OS2
-
-/* Define if OS/2 DosAllocSharedMem() will be used */
-#undef USE_SHMEM_OS2_ANON
-
-/* Define if SysV IPC shmget() will be used */
-#undef USE_SHMEM_SHMGET
-
-/* Define if SysV IPC shmget() will be used */
-#undef USE_SHMEM_SHMGET_ANON
-
-/* Define if Windows shared memory will be used */
-#undef USE_SHMEM_WIN32
-
-/* Define if Windows CreateFileMapping() will be used */
-#undef USE_SHMEM_WIN32_ANON
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Define if SysV IPC semget() will be used */
-#undef USE_SYSVSEM_SERIALIZE
-
-/* Define if apr_wait_for_io_or_timeout() uses poll(2) */
-#undef WAITIO_USES_POLL
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
-   significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-#  define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-#  undef WORDS_BIGENDIAN
-# endif
-#endif
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef gid_t
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define to `long int' if <sys/types.h> does not define. */
-#undef off_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef ssize_t
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
-
-
-/* switch this on if we have a BeOS version below BONE */
-#if BEOS && !HAVE_BONE_VERSION
-#define BEOS_R5 1
-#else
-#define BEOS_BONE 1
-#endif
-
-/*
- * Darwin 10's default compiler (gcc42) builds for both 64 and
- * 32 bit architectures unless specifically told not to.
- * In those cases, we need to override types depending on how
- * we're being built at compile time.
- * NOTE: This is an ugly work-around for Darwin's
- * concept of universal binaries, a single package
- * (executable, lib, etc...) which contains both 32
- * and 64 bit versions. The issue is that if APR is
- * built universally, if something else is compiled
- * against it, some bit sizes will depend on whether
- * it is 32 or 64 bit. This is determined by the __LP64__
- * flag. Since we need to support both, we have to
- * handle OS X unqiuely.
- */
-#ifdef DARWIN_10
-
-#undef APR_OFF_T_STRFN
-#undef APR_INT64_STRFN
-#undef SIZEOF_LONG
-#undef SIZEOF_SIZE_T
-#undef SIZEOF_SSIZE_T
-#undef SIZEOF_VOIDP
-#undef SIZEOF_STRUCT_IOVEC
-
-#ifdef __LP64__
- #define APR_INT64_STRFN strtol
- #define SIZEOF_LONG    8
- #define SIZEOF_SIZE_T  8
- #define SIZEOF_SSIZE_T 8
- #define SIZEOF_VOIDP   8
- #define SIZEOF_STRUCT_IOVEC 16
-#else
- #define APR_INT64_STRFN strtoll
- #define SIZEOF_LONG    4
- #define SIZEOF_SIZE_T  4
- #define SIZEOF_SSIZE_T 4
- #define SIZEOF_VOIDP   4
- #define SIZEOF_STRUCT_IOVEC 8
-#endif
-
-#undef APR_OFF_T_STRFN
-#define APR_OFF_T_STRFN APR_INT64_STRFN
- 
-
-#undef SETPGRP_VOID
-#ifdef __DARWIN_UNIX03
- #define SETPGRP_VOID 1
-#else
-/* #undef SETPGRP_VOID */
-#endif
- 
-#endif /* DARWIN_10 */
-
-/*
- * Include common private declarations.
- */
-#include "../apr_private_common.h"
-#endif /* APR_PRIVATE_H */
-

Copied: vendor/apache/apr/1.5.2/include/arch/unix/apr_private.h.in (from rev 9273, vendor/apache/apr/dist/include/arch/unix/apr_private.h.in)
===================================================================
--- vendor/apache/apr/1.5.2/include/arch/unix/apr_private.h.in	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/arch/unix/apr_private.h.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1000 @@
+/* include/arch/unix/apr_private.h.in.  Generated from configure.in by autoheader.  */
+
+
+#ifndef APR_PRIVATE_H
+#define APR_PRIVATE_H
+
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define if apr_allocator should use mmap */
+#undef APR_ALLOCATOR_USES_MMAP
+
+/* Define as function which can be used for conversion of strings to
+   apr_int64_t */
+#undef APR_INT64_STRFN
+
+/* Define as function used for conversion of strings to apr_off_t */
+#undef APR_OFF_T_STRFN
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to path of random device */
+#undef DEV_RANDOM
+
+/* Define if struct dirent has an inode member */
+#undef DIRENT_INODE
+
+/* Define if struct dirent has a d_type member */
+#undef DIRENT_TYPE
+
+/* Define if DSO support uses dlfcn.h */
+#undef DSO_USE_DLFCN
+
+/* Define if DSO support uses dyld.h */
+#undef DSO_USE_DYLD
+
+/* Define if DSO support uses shl_load */
+#undef DSO_USE_SHL
+
+/* Define to list of paths to EGD sockets */
+#undef EGD_DEFAULT_SOCKET
+
+/* Define if fcntl locks affect threads within the process */
+#undef FCNTL_IS_GLOBAL
+
+/* Define if fcntl returns EACCES when F_SETLK is already held */
+#undef FCNTL_TRYACQUIRE_EACCES
+
+/* Define if flock locks affect threads within the process */
+#undef FLOCK_IS_GLOBAL
+
+/* Define if gethostbyaddr is thread safe */
+#undef GETHOSTBYADDR_IS_THREAD_SAFE
+
+/* Define if gethostbyname is thread safe */
+#undef GETHOSTBYNAME_IS_THREAD_SAFE
+
+/* Define if gethostbyname_r has the glibc style */
+#undef GETHOSTBYNAME_R_GLIBC2
+
+/* Define if gethostbyname_r has the hostent_data for the third argument */
+#undef GETHOSTBYNAME_R_HOSTENT_DATA
+
+/* Define if getservbyname is thread safe */
+#undef GETSERVBYNAME_IS_THREAD_SAFE
+
+/* Define if getservbyname_r has the glibc style */
+#undef GETSERVBYNAME_R_GLIBC2
+
+/* Define if getservbyname_r has the OSF/1 style */
+#undef GETSERVBYNAME_R_OSF1
+
+/* Define if getservbyname_r has the Solaris style */
+#undef GETSERVBYNAME_R_SOLARIS
+
+/* Define if accept4 function is supported */
+#undef HAVE_ACCEPT4
+
+/* Define if async i/o supports message q's */
+#undef HAVE_AIO_MSGQ
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#undef HAVE_ARPA_INET_H
+
+/* Define if compiler provides atomic builtins */
+#undef HAVE_ATOMIC_BUILTINS
+
+/* Define if BONE_VERSION is defined in sys/socket.h */
+#undef HAVE_BONE_VERSION
+
+/* Define to 1 if you have the <ByteOrder.h> header file. */
+#undef HAVE_BYTEORDER_H
+
+/* Define to 1 if you have the `calloc' function. */
+#undef HAVE_CALLOC
+
+/* Define to 1 if you have the <conio.h> header file. */
+#undef HAVE_CONIO_H
+
+/* Define to 1 if you have the `create_area' function. */
+#undef HAVE_CREATE_AREA
+
+/* Define to 1 if you have the `create_sem' function. */
+#undef HAVE_CREATE_SEM
+
+/* Define to 1 if you have the <crypt.h> header file. */
+#undef HAVE_CRYPT_H
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
+
+/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
+   don't. */
+#undef HAVE_DECL_SYS_SIGLIST
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dir.h> header file. */
+#undef HAVE_DIR_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <dl.h> header file. */
+#undef HAVE_DL_H
+
+/* Define if dup3 function is supported */
+#undef HAVE_DUP3
+
+/* Define if EGD is supported */
+#undef HAVE_EGD
+
+/* Define if the epoll interface is supported */
+#undef HAVE_EPOLL
+
+/* Define if epoll_create1 function is supported */
+#undef HAVE_EPOLL_CREATE1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fdatasync' function. */
+#undef HAVE_FDATASYNC
+
+/* Define to 1 if you have the `flock' function. */
+#undef HAVE_FLOCK
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define if F_SETLK is defined in fcntl.h */
+#undef HAVE_F_SETLK
+
+/* Define if getaddrinfo accepts the AI_ADDRCONFIG flag */
+#undef HAVE_GAI_ADDRCONFIG
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#undef HAVE_GAI_STRERROR
+
+/* Define if getaddrinfo exists and works well enough for APR */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the `getenv' function. */
+#undef HAVE_GETENV
+
+/* Define to 1 if you have the `getgrgid_r' function. */
+#undef HAVE_GETGRGID_R
+
+/* Define to 1 if you have the `getgrnam_r' function. */
+#undef HAVE_GETGRNAM_R
+
+/* Define to 1 if you have the `gethostbyaddr_r' function. */
+#undef HAVE_GETHOSTBYADDR_R
+
+/* Define to 1 if you have the `gethostbyname_r' function. */
+#undef HAVE_GETHOSTBYNAME_R
+
+/* Define to 1 if you have the `getifaddrs' function. */
+#undef HAVE_GETIFADDRS
+
+/* Define if getnameinfo exists */
+#undef HAVE_GETNAMEINFO
+
+/* Define to 1 if you have the `getpass' function. */
+#undef HAVE_GETPASS
+
+/* Define to 1 if you have the `getpassphrase' function. */
+#undef HAVE_GETPASSPHRASE
+
+/* Define to 1 if you have the `getpwnam_r' function. */
+#undef HAVE_GETPWNAM_R
+
+/* Define to 1 if you have the `getpwuid_r' function. */
+#undef HAVE_GETPWUID_R
+
+/* Define to 1 if you have the `getrlimit' function. */
+#undef HAVE_GETRLIMIT
+
+/* Define to 1 if you have the `getservbyname_r' function. */
+#undef HAVE_GETSERVBYNAME_R
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#undef HAVE_GMTIME_R
+
+/* Define to 1 if you have the <grp.h> header file. */
+#undef HAVE_GRP_H
+
+/* Define if hstrerror is present */
+#undef HAVE_HSTRERROR
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <io.h> header file. */
+#undef HAVE_IO_H
+
+/* Define to 1 if you have the `isinf' function. */
+#undef HAVE_ISINF
+
+/* Define to 1 if you have the `isnan' function. */
+#undef HAVE_ISNAN
+
+/* Define to 1 if you have the <kernel/OS.h> header file. */
+#undef HAVE_KERNEL_OS_H
+
+/* Define to 1 if you have the `kqueue' function. */
+#undef HAVE_KQUEUE
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#undef HAVE_LANGINFO_H
+
+/* Define to 1 if you have the `bsd' library (-lbsd). */
+#undef HAVE_LIBBSD
+
+/* Define to 1 if you have the `sendfile' library (-lsendfile). */
+#undef HAVE_LIBSENDFILE
+
+/* Define to 1 if you have the `truerand' library (-ltruerand). */
+#undef HAVE_LIBTRUERAND
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
+/* Define if LOCK_EX is defined in sys/file.h */
+#undef HAVE_LOCK_EX
+
+/* Define to 1 if you have the <mach-o/dyld.h> header file. */
+#undef HAVE_MACH_O_DYLD_H
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define if MAP_ANON is defined in sys/mman.h */
+#undef HAVE_MAP_ANON
+
+/* Define to 1 if you have the `memchr' function. */
+#undef HAVE_MEMCHR
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have the `mkstemp64' function. */
+#undef HAVE_MKSTEMP64
+
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `mmap64' function. */
+#undef HAVE_MMAP64
+
+/* Define to 1 if you have the `munmap' function. */
+#undef HAVE_MUNMAP
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* Define to 1 if you have the <netinet/sctp.h> header file. */
+#undef HAVE_NETINET_SCTP_H
+
+/* Define to 1 if you have the <netinet/sctp_uio.h> header file. */
+#undef HAVE_NETINET_SCTP_UIO_H
+
+/* Defined if netinet/tcp.h is present */
+#undef HAVE_NETINET_TCP_H
+
+/* Define to 1 if you have the <net/errno.h> header file. */
+#undef HAVE_NET_ERRNO_H
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#undef HAVE_NL_LANGINFO
+
+/* Define to 1 if you have the <os2.h> header file. */
+#undef HAVE_OS2_H
+
+/* Define to 1 if you have the <osreldate.h> header file. */
+#undef HAVE_OSRELDATE_H
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to 1 if you have the `poll' function. */
+#undef HAVE_POLL
+
+/* Define if POLLIN is defined */
+#undef HAVE_POLLIN
+
+/* Define to 1 if you have the <poll.h> header file. */
+#undef HAVE_POLL_H
+
+/* Define to 1 if you have the `port_create' function. */
+#undef HAVE_PORT_CREATE
+
+/* Define to 1 if you have the <process.h> header file. */
+#undef HAVE_PROCESS_H
+
+/* Define to 1 if you have the `pthread_attr_setguardsize' function. */
+#undef HAVE_PTHREAD_ATTR_SETGUARDSIZE
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#undef HAVE_PTHREAD_H
+
+/* Define to 1 if you have the `pthread_key_delete' function. */
+#undef HAVE_PTHREAD_KEY_DELETE
+
+/* Define to 1 if you have the `pthread_mutexattr_setpshared' function. */
+#undef HAVE_PTHREAD_MUTEXATTR_SETPSHARED
+
+/* Define if recursive pthread mutexes are available */
+#undef HAVE_PTHREAD_MUTEX_RECURSIVE
+
+/* Define if cross-process robust mutexes are available */
+#undef HAVE_PTHREAD_MUTEX_ROBUST
+
+/* Define if PTHREAD_PROCESS_SHARED is defined in pthread.h */
+#undef HAVE_PTHREAD_PROCESS_SHARED
+
+/* Define if pthread rwlocks are available */
+#undef HAVE_PTHREAD_RWLOCKS
+
+/* Define to 1 if you have the `pthread_rwlock_init' function. */
+#undef HAVE_PTHREAD_RWLOCK_INIT
+
+/* Define to 1 if you have the `pthread_yield' function. */
+#undef HAVE_PTHREAD_YIELD
+
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define to 1 if you have the `readdir64_r' function. */
+#undef HAVE_READDIR64_R
+
+/* Define to 1 if you have the <sched.h> header file. */
+#undef HAVE_SCHED_H
+
+/* Define to 1 if you have the `sched_yield' function. */
+#undef HAVE_SCHED_YIELD
+
+/* Define to 1 if you have the <semaphore.h> header file. */
+#undef HAVE_SEMAPHORE_H
+
+/* Define to 1 if you have the `semctl' function. */
+#undef HAVE_SEMCTL
+
+/* Define to 1 if you have the `semget' function. */
+#undef HAVE_SEMGET
+
+/* Define to 1 if you have the `sem_close' function. */
+#undef HAVE_SEM_CLOSE
+
+/* Define to 1 if you have the `sem_post' function. */
+#undef HAVE_SEM_POST
+
+/* Define if SEM_UNDO is defined in sys/sem.h */
+#undef HAVE_SEM_UNDO
+
+/* Define to 1 if you have the `sem_unlink' function. */
+#undef HAVE_SEM_UNLINK
+
+/* Define to 1 if you have the `sem_wait' function. */
+#undef HAVE_SEM_WAIT
+
+/* Define to 1 if you have the `sendfile' function. */
+#undef HAVE_SENDFILE
+
+/* Define to 1 if you have the `sendfile64' function. */
+#undef HAVE_SENDFILE64
+
+/* Define to 1 if you have the `sendfilev' function. */
+#undef HAVE_SENDFILEV
+
+/* Define to 1 if you have the `sendfilev64' function. */
+#undef HAVE_SENDFILEV64
+
+/* Define to 1 if you have the `send_file' function. */
+#undef HAVE_SEND_FILE
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the `setrlimit' function. */
+#undef HAVE_SETRLIMIT
+
+/* Define to 1 if you have the `setsid' function. */
+#undef HAVE_SETSID
+
+/* Define to 1 if you have the `set_h_errno' function. */
+#undef HAVE_SET_H_ERRNO
+
+/* Define to 1 if you have the `shmat' function. */
+#undef HAVE_SHMAT
+
+/* Define to 1 if you have the `shmctl' function. */
+#undef HAVE_SHMCTL
+
+/* Define to 1 if you have the `shmdt' function. */
+#undef HAVE_SHMDT
+
+/* Define to 1 if you have the `shmget' function. */
+#undef HAVE_SHMGET
+
+/* Define to 1 if you have the `shm_open' function. */
+#undef HAVE_SHM_OPEN
+
+/* Define to 1 if you have the `shm_unlink' function. */
+#undef HAVE_SHM_UNLINK
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the <signal.h> header file. */
+#undef HAVE_SIGNAL_H
+
+/* Define to 1 if you have the `sigsuspend' function. */
+#undef HAVE_SIGSUSPEND
+
+/* Define to 1 if you have the `sigwait' function. */
+#undef HAVE_SIGWAIT
+
+/* Whether you have socklen_t */
+#undef HAVE_SOCKLEN_T
+
+/* Define if the SOCK_CLOEXEC flag is supported */
+#undef HAVE_SOCK_CLOEXEC
+
+/* Define if SO_ACCEPTFILTER is defined in sys/socket.h */
+#undef HAVE_SO_ACCEPTFILTER
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the `stricmp' function. */
+#undef HAVE_STRICMP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strnicmp' function. */
+#undef HAVE_STRNICMP
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define if struct impreq was found */
+#undef HAVE_STRUCT_IPMREQ
+
+/* Define to 1 if `st_atimensec' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIMENSEC
+
+/* Define to 1 if `st_atime_n' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIME_N
+
+/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
+/* Define to 1 if `st_ctimensec' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_CTIMENSEC
+
+/* Define to 1 if `st_ctime_n' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_CTIME_N
+
+/* Define to 1 if `st_ctim.tv_nsec' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC
+
+/* Define to 1 if `st_mtimensec' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_MTIMENSEC
+
+/* Define to 1 if `st_mtime_n' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_MTIME_N
+
+/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
+
+/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_GMTOFF
+
+/* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */
+#undef HAVE_STRUCT_TM___TM_GMTOFF
+
+/* Define to 1 if you have the <sysapi.h> header file. */
+#undef HAVE_SYSAPI_H
+
+/* Define to 1 if you have the <sysgtime.h> header file. */
+#undef HAVE_SYSGTIME_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+#undef HAVE_SYS_IPC_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/mutex.h> header file. */
+#undef HAVE_SYS_MUTEX_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/sem.h> header file. */
+#undef HAVE_SYS_SEM_H
+
+/* Define to 1 if you have the <sys/sendfile.h> header file. */
+#undef HAVE_SYS_SENDFILE_H
+
+/* Define to 1 if you have the <sys/shm.h> header file. */
+#undef HAVE_SYS_SHM_H
+
+/* Define to 1 if you have the <sys/signal.h> header file. */
+#undef HAVE_SYS_SIGNAL_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/sockio.h> header file. */
+#undef HAVE_SYS_SOCKIO_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+#undef HAVE_SYS_SYSCTL_H
+
+/* Define to 1 if you have the <sys/syslimits.h> header file. */
+#undef HAVE_SYS_SYSLIMITS_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#undef HAVE_SYS_UIO_H
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#undef HAVE_SYS_UN_H
+
+/* Define to 1 if you have the <sys/uuid.h> header file. */
+#undef HAVE_SYS_UUID_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define if TCP_CORK is defined in netinet/tcp.h */
+#undef HAVE_TCP_CORK
+
+/* Define if TCP_NODELAY and TCP_CORK can be enabled at the same time */
+#undef HAVE_TCP_NODELAY_WITH_CORK
+
+/* Define if TCP_NOPUSH is defined in netinet/tcp.h */
+#undef HAVE_TCP_NOPUSH
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define to 1 if you have the <tpfeq.h> header file. */
+#undef HAVE_TPFEQ_H
+
+/* Define to 1 if you have the <tpfio.h> header file. */
+#undef HAVE_TPFIO_H
+
+/* Define if truerand is supported */
+#undef HAVE_TRUERAND
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the <unix.h> header file. */
+#undef HAVE_UNIX_H
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define to 1 if you have the `utime' function. */
+#undef HAVE_UTIME
+
+/* Define to 1 if you have the `utimes' function. */
+#undef HAVE_UTIMES
+
+/* Define to 1 if you have the `uuid_create' function. */
+#undef HAVE_UUID_CREATE
+
+/* Define to 1 if you have the `uuid_generate' function. */
+#undef HAVE_UUID_GENERATE
+
+/* Define to 1 if you have the <uuid.h> header file. */
+#undef HAVE_UUID_H
+
+/* Define to 1 if you have the <uuid/uuid.h> header file. */
+#undef HAVE_UUID_UUID_H
+
+/* Define if C compiler supports VLA */
+#undef HAVE_VLA
+
+/* Define to 1 if you have the `waitpid' function. */
+#undef HAVE_WAITPID
+
+/* Define to 1 if you have the <windows.h> header file. */
+#undef HAVE_WINDOWS_H
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define to 1 if you have the `writev' function. */
+#undef HAVE_WRITEV
+
+/* Define for z/OS pthread API nuances */
+#undef HAVE_ZOS_PTHREADS
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Define if EAI_ error codes from getaddrinfo are negative */
+#undef NEGATIVE_EAI
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define if POSIX semaphores affect threads within the process */
+#undef POSIXSEM_IS_GLOBAL
+
+/* Define on PowerPC 405 where errata 77 applies */
+#undef PPC405_ERRATA
+
+/* Define if pthread_attr_getdetachstate() has one arg */
+#undef PTHREAD_ATTR_GETDETACHSTATE_TAKES_ONE_ARG
+
+/* Define if pthread_getspecific() has two args */
+#undef PTHREAD_GETSPECIFIC_TAKES_TWO_ARGS
+
+/* Define if readdir is thread safe */
+#undef READDIR_IS_THREAD_SAFE
+
+/* Define to 1 if the `setpgrp' function takes no argument. */
+#undef SETPGRP_VOID
+
+/* */
+#undef SIGWAIT_TAKES_ONE_ARG
+
+/* The size of `char', as computed by sizeof. */
+#undef SIZEOF_CHAR
+
+/* The size of ino_t */
+#undef SIZEOF_INO_T
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of off_t */
+#undef SIZEOF_OFF_T
+
+/* The size of pid_t */
+#undef SIZEOF_PID_T
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of size_t */
+#undef SIZEOF_SIZE_T
+
+/* The size of ssize_t */
+#undef SIZEOF_SSIZE_T
+
+/* The size of struct iovec */
+#undef SIZEOF_STRUCT_IOVEC
+
+/* The size of `void*', as computed by sizeof. */
+#undef SIZEOF_VOIDP
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define if strerror returns int */
+#undef STRERROR_R_RC_INT
+
+/* Define if SysV semaphores affect threads within the process */
+#undef SYSVSEM_IS_GLOBAL
+
+/* Define if use of generic atomics is requested */
+#undef USE_ATOMICS_GENERIC
+
+/* Define if BeOS Semaphores will be used */
+#undef USE_BEOSSEM
+
+/* Define if SVR4-style fcntl() will be used */
+#undef USE_FCNTL_SERIALIZE
+
+/* Define if 4.2BSD-style flock() will be used */
+#undef USE_FLOCK_SERIALIZE
+
+/* Define if BeOS areas will be used */
+#undef USE_SHMEM_BEOS
+
+/* Define if BeOS areas will be used */
+#undef USE_SHMEM_BEOS_ANON
+
+/* Define if 4.4BSD-style mmap() via MAP_ANON will be used */
+#undef USE_SHMEM_MMAP_ANON
+
+/* Define if mmap() via POSIX.1 shm_open() on temporary file will be used */
+#undef USE_SHMEM_MMAP_SHM
+
+/* Define if Classical mmap() on temporary file will be used */
+#undef USE_SHMEM_MMAP_TMP
+
+/* Define if SVR4-style mmap() on /dev/zero will be used */
+#undef USE_SHMEM_MMAP_ZERO
+
+/* Define if OS/2 DosAllocSharedMem() will be used */
+#undef USE_SHMEM_OS2
+
+/* Define if OS/2 DosAllocSharedMem() will be used */
+#undef USE_SHMEM_OS2_ANON
+
+/* Define if SysV IPC shmget() will be used */
+#undef USE_SHMEM_SHMGET
+
+/* Define if SysV IPC shmget() will be used */
+#undef USE_SHMEM_SHMGET_ANON
+
+/* Define if Windows shared memory will be used */
+#undef USE_SHMEM_WIN32
+
+/* Define if Windows CreateFileMapping() will be used */
+#undef USE_SHMEM_WIN32_ANON
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define if SysV IPC semget() will be used */
+#undef USE_SYSVSEM_SERIALIZE
+
+/* Define if apr_wait_for_io_or_timeout() uses poll(2) */
+#undef WAITIO_USES_POLL
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `long int' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef ssize_t
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+
+/* switch this on if we have a BeOS version below BONE */
+#if defined(BEOS) && !defined(HAVE_BONE_VERSION)
+#define BEOS_R5 1
+#else
+#define BEOS_BONE 1
+#endif
+
+/*
+ * Darwin 10's default compiler (gcc42) builds for both 64 and
+ * 32 bit architectures unless specifically told not to.
+ * In those cases, we need to override types depending on how
+ * we're being built at compile time.
+ * NOTE: This is an ugly work-around for Darwin's
+ * concept of universal binaries, a single package
+ * (executable, lib, etc...) which contains both 32
+ * and 64 bit versions. The issue is that if APR is
+ * built universally, if something else is compiled
+ * against it, some bit sizes will depend on whether
+ * it is 32 or 64 bit. This is determined by the __LP64__
+ * flag. Since we need to support both, we have to
+ * handle OS X unqiuely.
+ */
+#ifdef DARWIN_10
+
+#undef APR_OFF_T_STRFN
+#undef APR_INT64_STRFN
+#undef SIZEOF_LONG
+#undef SIZEOF_SIZE_T
+#undef SIZEOF_SSIZE_T
+#undef SIZEOF_VOIDP
+#undef SIZEOF_STRUCT_IOVEC
+
+#ifdef __LP64__
+ #define APR_INT64_STRFN strtol
+ #define SIZEOF_LONG    8
+ #define SIZEOF_SIZE_T  8
+ #define SIZEOF_SSIZE_T 8
+ #define SIZEOF_VOIDP   8
+ #define SIZEOF_STRUCT_IOVEC 16
+#else
+ #define APR_INT64_STRFN strtoll
+ #define SIZEOF_LONG    4
+ #define SIZEOF_SIZE_T  4
+ #define SIZEOF_SSIZE_T 4
+ #define SIZEOF_VOIDP   4
+ #define SIZEOF_STRUCT_IOVEC 8
+#endif
+
+#undef APR_OFF_T_STRFN
+#define APR_OFF_T_STRFN APR_INT64_STRFN
+ 
+
+#undef SETPGRP_VOID
+#ifdef __DARWIN_UNIX03
+ #define SETPGRP_VOID 1
+#else
+/* #undef SETPGRP_VOID */
+#endif
+ 
+#endif /* DARWIN_10 */
+
+/*
+ * Include common private declarations.
+ */
+#include "../apr_private_common.h"
+#endif /* APR_PRIVATE_H */
+

Deleted: vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_file_io.h
===================================================================
--- vendor/apache/apr/dist/include/arch/win32/apr_arch_file_io.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_file_io.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,263 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FILE_IO_H
-#define FILE_IO_H
-
-#include "apr.h"
-#include "apr_private.h"
-#include "apr_pools.h"
-#include "apr_general.h"
-#include "apr_tables.h"
-#include "apr_thread_mutex.h"
-#include "apr_file_io.h"
-#include "apr_file_info.h"
-#include "apr_errno.h"
-#include "apr_arch_misc.h"
-#include "apr_poll.h"
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_FCNTL_H
-#include <fcntl.h>
-#endif
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-#if APR_HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-
-#if APR_HAS_UNICODE_FS
-#include "arch/win32/apr_arch_utf8.h"
-#include <wchar.h>
-
-/* Helper functions for the WinNT ApiW() functions.  APR treats all
- * resource identifiers (files, etc) by their UTF-8 name, to provide 
- * access to all named identifiers.  [UTF-8 completely maps Unicode 
- * into char type strings.]
- *
- * The _path flavors below provide us fast mappings of the
- * Unicode filename //?/D:/path and //?/UNC/mach/share/path mappings,
- * which allow unlimited (well, 32000 wide character) length names.
- * These prefixes may appear in Unicode, but must not appear in the
- * Ascii API calls.  So we tack them on in utf8_to_unicode_path, and
- * strip them right back off in unicode_to_utf8_path.
- */
-apr_status_t utf8_to_unicode_path(apr_wchar_t* dststr, apr_size_t dstchars, 
-                                  const char* srcstr);
-apr_status_t unicode_to_utf8_path(char* dststr, apr_size_t dstchars, 
-                                  const apr_wchar_t* srcstr);
-
-#endif /* APR_HAS_UNICODE_FS */
-
-/* Another Helper functions for the WinNT ApiW() functions.  We need to
- * derive some 'resource' names (max length 255 characters, prefixed with
- * Global/ or Local/ on WinNT) from something that looks like a filename.
- * Since 'resource' names never contain slashes, convert these to '_'s
- * and return the appropriate char* or wchar* for ApiA or ApiW calls.
- */
-
-void *res_name_from_filename(const char *file, int global, apr_pool_t *pool);
-
-#define APR_FILE_MAX MAX_PATH
-
-#define APR_FILE_DEFAULT_BUFSIZE 4096
-/* For backwards-compat */
-#define APR_FILE_BUFSIZE APR_FILE_DEFAULT_BUFSIZE
-
-/* obscure ommissions from msvc's sys/stat.h */
-#ifdef _MSC_VER
-#define S_IFIFO        _S_IFIFO /* pipe */
-#define S_IFBLK        0060000  /* Block Special */
-#define S_IFLNK        0120000  /* Symbolic Link */
-#define S_IFSOCK       0140000  /* Socket */
-#define S_IFWHT        0160000  /* Whiteout */
-#endif
-
-/* Internal Flags for apr_file_open */
-#define APR_OPENINFO     0x00100000 /* Open without READ or WRITE access */
-#define APR_OPENLINK     0x00200000 /* Open a link itself, if supported */
-#define APR_READCONTROL  0x00400000 /* Read the file's owner/perms */
-#define APR_WRITECONTROL 0x00800000 /* Modify the file's owner/perms */
-/* #define APR_INHERIT   0x01000000 -- Defined in apr_arch_inherit.h! */
-#define APR_STDIN_FLAG   0x02000000 /* Obtained via apr_file_open_stdin() */
-#define APR_STDOUT_FLAG  0x04000000 /* Obtained via apr_file_open_stdout() */
-#define APR_STDERR_FLAG  0x06000000 /* Obtained via apr_file_open_stderr() */
-#define APR_STD_FLAGS    (APR_STDIN_FLAG | APR_STDOUT_FLAG | APR_STDERR_FLAG)
-#define APR_WRITEATTRS   0x08000000 /* Modify the file's attributes */
-
-/* Entries missing from the MSVC 5.0 Win32 SDK:
- */
-#ifndef FILE_ATTRIBUTE_DEVICE
-#define FILE_ATTRIBUTE_DEVICE        0x00000040
-#endif
-#ifndef FILE_ATTRIBUTE_REPARSE_POINT
-#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
-#endif
-#ifndef FILE_FLAG_OPEN_NO_RECALL
-#define FILE_FLAG_OPEN_NO_RECALL     0x00100000
-#endif
-#ifndef FILE_FLAG_OPEN_REPARSE_POINT
-#define FILE_FLAG_OPEN_REPARSE_POINT 0x00200000
-#endif
-#ifndef TRUSTEE_IS_WELL_KNOWN_GROUP
-#define TRUSTEE_IS_WELL_KNOWN_GROUP  5
-#endif
-
-/* Information bits available from the WIN32 FindFirstFile function */
-#define APR_FINFO_WIN32_DIR (APR_FINFO_NAME  | APR_FINFO_TYPE \
-                           | APR_FINFO_CTIME | APR_FINFO_ATIME \
-                           | APR_FINFO_MTIME | APR_FINFO_SIZE)
-
-/* Sneak the Readonly bit through finfo->protection for internal use _only_ */
-#define APR_FREADONLY 0x10000000 
-
-/* Private function for apr_stat/lstat/getfileinfo/dir_read */
-int fillin_fileinfo(apr_finfo_t *finfo, WIN32_FILE_ATTRIBUTE_DATA *wininfo, 
-                    int byhandle, apr_int32_t wanted);
-
-/* Private function that extends apr_stat/lstat/getfileinfo/dir_read */
-apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, 
-                        apr_int32_t wanted, int whatfile);
-
-/* whatfile types for the ufile arg */
-#define MORE_OF_HANDLE 0
-#define MORE_OF_FSPEC  1
-#define MORE_OF_WFSPEC 2
-
-/* quick run-down of fields in windows' apr_file_t structure that may have 
- * obvious uses.
- * fname --  the filename as passed to the open call.
- * dwFileAttricutes -- Attributes used to open the file.
- * append -- Windows doesn't support the append concept when opening files.
- *           APR needs to keep track of this, and always make sure we append
- *           correctly when writing to a file with this flag set TRUE.
- */
-
-/* for apr_poll.c */
-#define filedes filehand
-
-struct apr_file_t {
-    apr_pool_t *pool;
-    HANDLE filehand;
-    BOOLEAN pipe;              /* Is this a pipe of a file? */
-    OVERLAPPED *pOverlapped;
-    apr_interval_time_t timeout;
-    apr_int32_t flags;
-
-    /* File specific info */
-    apr_finfo_t *finfo;
-    char *fname;
-    DWORD dwFileAttributes;
-    int eof_hit;
-    BOOLEAN buffered;          // Use buffered I/O?
-    int ungetchar;             // Last char provided by an unget op. (-1 = no char)
-    int append; 
-
-    /* Stuff for buffered mode */
-    char *buffer;
-    apr_size_t bufpos;         // Read/Write position in buffer
-    apr_size_t bufsize;        // The size of the buffer
-    apr_size_t dataRead;       // amount of valid data read into buffer
-    int direction;             // buffer being used for 0 = read, 1 = write
-    apr_off_t filePtr;         // position in file of handle
-    apr_thread_mutex_t *mutex; // mutex semaphore, must be owned to access the above fields
-
-    /* if there is a timeout set, then this pollset is used */
-    apr_pollset_t *pollset;
-
-    /* Pipe specific info */    
-};
-
-struct apr_dir_t {
-    apr_pool_t *pool;
-    HANDLE dirhand;
-    apr_size_t rootlen;
-    char *dirname;
-    char *name;
-    union {
-#if APR_HAS_UNICODE_FS
-        struct {
-            WIN32_FIND_DATAW *entry;
-        } w;
-#endif
-#if APR_HAS_ANSI_FS
-        struct {
-            WIN32_FIND_DATAA *entry;
-        } n;
-#endif        
-    };
-    int bof;
-};
-
-/* There are many goofy characters the filesystem can't accept
- * or can confound the cmd.exe shell.  Here's the list
- * [declared in filesys.c]
- */
-extern const char apr_c_is_fnchar[256];
-
-#define IS_FNCHAR(c) (apr_c_is_fnchar[(unsigned char)(c)] & 1)
-#define IS_SHCHAR(c) ((apr_c_is_fnchar[(unsigned char)(c)] & 2) == 2)
-
-
-/* If the user passes APR_FILEPATH_TRUENAME to either
- * apr_filepath_root or apr_filepath_merge, this fn determines
- * that the root really exists.  It's expensive, wouldn't want
- * to do this too frequenly.
- */
-apr_status_t filepath_root_test(char *path, apr_pool_t *p);
-
-
-/* The apr_filepath_merge wants to canonicalize the cwd to the 
- * addpath if the user passes NULL as the old root path (this
- * isn't true of an empty string "", which won't be concatenated.
- *
- * But we need to figure out what the cwd of a given volume is,
- * when the user passes D:foo.  This fn will determine D:'s cwd.
- *
- * If flags includes the bit APR_FILEPATH_NATIVE, the path returned
- * is in the os-native format.
- */
-apr_status_t filepath_drive_get(char **rootpath, char drive, 
-                                apr_int32_t flags, apr_pool_t *p);
-
-
-/* If the user passes d: vs. D: (or //mach/share vs. //MACH/SHARE),
- * we need to fold the case to canonical form.  This function is
- * supposed to do so.
- */
-apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p);
-
-
-apr_status_t file_cleanup(void *);
-
-extern apr_status_t
-apr_file_socket_pipe_create(apr_file_t **in,
-                            apr_file_t **out,
-                            apr_pool_t *p);
-
-extern apr_status_t
-apr_file_socket_pipe_close(apr_file_t *file);
-
-#endif  /* ! FILE_IO_H */

Copied: vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_file_io.h (from rev 9273, vendor/apache/apr/dist/include/arch/win32/apr_arch_file_io.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_file_io.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_file_io.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,265 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef FILE_IO_H
+#define FILE_IO_H
+
+#include "apr.h"
+#include "apr_private.h"
+#include "apr_pools.h"
+#include "apr_general.h"
+#include "apr_tables.h"
+#include "apr_thread_mutex.h"
+#include "apr_file_io.h"
+#include "apr_file_info.h"
+#include "apr_errno.h"
+#include "apr_arch_misc.h"
+#include "apr_poll.h"
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#if APR_HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+
+#if APR_HAS_UNICODE_FS
+#include "arch/win32/apr_arch_utf8.h"
+#include <wchar.h>
+
+/* Helper functions for the WinNT ApiW() functions.  APR treats all
+ * resource identifiers (files, etc) by their UTF-8 name, to provide 
+ * access to all named identifiers.  [UTF-8 completely maps Unicode 
+ * into char type strings.]
+ *
+ * The _path flavors below provide us fast mappings of the
+ * Unicode filename //?/D:/path and //?/UNC/mach/share/path mappings,
+ * which allow unlimited (well, 32000 wide character) length names.
+ * These prefixes may appear in Unicode, but must not appear in the
+ * Ascii API calls.  So we tack them on in utf8_to_unicode_path, and
+ * strip them right back off in unicode_to_utf8_path.
+ */
+apr_status_t utf8_to_unicode_path(apr_wchar_t* dststr, apr_size_t dstchars, 
+                                  const char* srcstr);
+apr_status_t unicode_to_utf8_path(char* dststr, apr_size_t dstchars, 
+                                  const apr_wchar_t* srcstr);
+
+#endif /* APR_HAS_UNICODE_FS */
+
+/* Another Helper functions for the WinNT ApiW() functions.  We need to
+ * derive some 'resource' names (max length 255 characters, prefixed with
+ * Global/ or Local/ on WinNT) from something that looks like a filename.
+ * Since 'resource' names never contain slashes, convert these to '_'s
+ * and return the appropriate char* or wchar* for ApiA or ApiW calls.
+ */
+
+void *res_name_from_filename(const char *file, int global, apr_pool_t *pool);
+
+#define APR_FILE_MAX MAX_PATH
+
+#define APR_FILE_DEFAULT_BUFSIZE 4096
+/* For backwards-compat */
+#define APR_FILE_BUFSIZE APR_FILE_DEFAULT_BUFSIZE
+
+/* obscure ommissions from msvc's sys/stat.h */
+#ifdef _MSC_VER
+#define S_IFIFO        _S_IFIFO /* pipe */
+#define S_IFBLK        0060000  /* Block Special */
+#define S_IFLNK        0120000  /* Symbolic Link */
+#define S_IFSOCK       0140000  /* Socket */
+#define S_IFWHT        0160000  /* Whiteout */
+#endif
+
+/* Internal Flags for apr_file_open */
+#define APR_OPENINFO     0x00100000 /* Open without READ or WRITE access */
+#define APR_OPENLINK     0x00200000 /* Open a link itself, if supported */
+#define APR_READCONTROL  0x00400000 /* Read the file's owner/perms */
+#define APR_WRITECONTROL 0x00800000 /* Modify the file's owner/perms */
+/* #define APR_INHERIT   0x01000000 -- Defined in apr_arch_inherit.h! */
+#define APR_STDIN_FLAG   0x02000000 /* Obtained via apr_file_open_stdin() */
+#define APR_STDOUT_FLAG  0x04000000 /* Obtained via apr_file_open_stdout() */
+#define APR_STDERR_FLAG  0x06000000 /* Obtained via apr_file_open_stderr() */
+#define APR_STD_FLAGS    (APR_STDIN_FLAG | APR_STDOUT_FLAG | APR_STDERR_FLAG)
+#define APR_WRITEATTRS   0x08000000 /* Modify the file's attributes */
+
+/* Entries missing from the MSVC 5.0 Win32 SDK:
+ */
+#ifndef FILE_ATTRIBUTE_DEVICE
+#define FILE_ATTRIBUTE_DEVICE        0x00000040
+#endif
+#ifndef FILE_ATTRIBUTE_REPARSE_POINT
+#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
+#endif
+#ifndef FILE_FLAG_OPEN_NO_RECALL
+#define FILE_FLAG_OPEN_NO_RECALL     0x00100000
+#endif
+#ifndef FILE_FLAG_OPEN_REPARSE_POINT
+#define FILE_FLAG_OPEN_REPARSE_POINT 0x00200000
+#endif
+#ifndef TRUSTEE_IS_WELL_KNOWN_GROUP
+#define TRUSTEE_IS_WELL_KNOWN_GROUP  5
+#endif
+
+/* Information bits available from the WIN32 FindFirstFile function */
+#define APR_FINFO_WIN32_DIR (APR_FINFO_NAME  | APR_FINFO_TYPE \
+                           | APR_FINFO_CTIME | APR_FINFO_ATIME \
+                           | APR_FINFO_MTIME | APR_FINFO_SIZE)
+
+/* Sneak the Readonly bit through finfo->protection for internal use _only_ */
+#define APR_FREADONLY 0x10000000 
+
+/* Private function for apr_stat/lstat/getfileinfo/dir_read */
+int fillin_fileinfo(apr_finfo_t *finfo, WIN32_FILE_ATTRIBUTE_DATA *wininfo, 
+                    int byhandle, apr_int32_t wanted);
+
+/* Private function that extends apr_stat/lstat/getfileinfo/dir_read */
+apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, 
+                        apr_int32_t wanted, int whatfile);
+
+/* whatfile types for the ufile arg */
+#define MORE_OF_HANDLE 0
+#define MORE_OF_FSPEC  1
+#define MORE_OF_WFSPEC 2
+
+/* quick run-down of fields in windows' apr_file_t structure that may have 
+ * obvious uses.
+ * fname --  the filename as passed to the open call.
+ * dwFileAttricutes -- Attributes used to open the file.
+ * append -- Windows doesn't support the append concept when opening files.
+ *           APR needs to keep track of this, and always make sure we append
+ *           correctly when writing to a file with this flag set TRUE.
+ */
+
+/* for apr_poll.c */
+#define filedes filehand
+
+struct apr_file_t {
+    apr_pool_t *pool;
+    HANDLE filehand;
+    BOOLEAN pipe;              /* Is this a pipe of a file? */
+    OVERLAPPED *pOverlapped;
+    apr_interval_time_t timeout;
+    apr_int32_t flags;
+
+    /* File specific info */
+    apr_finfo_t *finfo;
+    char *fname;
+    DWORD dwFileAttributes;
+    int eof_hit;
+    BOOLEAN buffered;          /* Use buffered I/O? */
+    int ungetchar;             /* Last char provided by an unget op. (-1 = no char) */
+    int append; 
+
+    /* Stuff for buffered mode */
+    char *buffer;
+    apr_size_t bufpos;         /* Read/Write position in buffer */
+    apr_size_t bufsize;        /* The size of the buffer */
+    apr_size_t dataRead;       /* amount of valid data read into buffer */
+    int direction;             /* buffer being used for 0 = read, 1 = write */
+    apr_off_t filePtr;         /* position in file of handle */
+    apr_thread_mutex_t *mutex; /* mutex semaphore, must be owned to access
+                                * the above fields                          */
+
+#if APR_FILES_AS_SOCKETS
+    /* if there is a timeout set, then this pollset is used */
+    apr_pollset_t *pollset;
+#endif
+    /* Pipe specific info */    
+};
+
+struct apr_dir_t {
+    apr_pool_t *pool;
+    HANDLE dirhand;
+    apr_size_t rootlen;
+    char *dirname;
+    char *name;
+    union {
+#if APR_HAS_UNICODE_FS
+        struct {
+            WIN32_FIND_DATAW *entry;
+        } w;
+#endif
+#if APR_HAS_ANSI_FS
+        struct {
+            WIN32_FIND_DATAA *entry;
+        } n;
+#endif        
+    };
+    int bof;
+};
+
+/* There are many goofy characters the filesystem can't accept
+ * or can confound the cmd.exe shell.  Here's the list
+ * [declared in filesys.c]
+ */
+extern const char apr_c_is_fnchar[256];
+
+#define IS_FNCHAR(c) (apr_c_is_fnchar[(unsigned char)(c)] & 1)
+#define IS_SHCHAR(c) ((apr_c_is_fnchar[(unsigned char)(c)] & 2) == 2)
+
+
+/* If the user passes APR_FILEPATH_TRUENAME to either
+ * apr_filepath_root or apr_filepath_merge, this fn determines
+ * that the root really exists.  It's expensive, wouldn't want
+ * to do this too frequenly.
+ */
+apr_status_t filepath_root_test(char *path, apr_pool_t *p);
+
+
+/* The apr_filepath_merge wants to canonicalize the cwd to the 
+ * addpath if the user passes NULL as the old root path (this
+ * isn't true of an empty string "", which won't be concatenated.
+ *
+ * But we need to figure out what the cwd of a given volume is,
+ * when the user passes D:foo.  This fn will determine D:'s cwd.
+ *
+ * If flags includes the bit APR_FILEPATH_NATIVE, the path returned
+ * is in the os-native format.
+ */
+apr_status_t filepath_drive_get(char **rootpath, char drive, 
+                                apr_int32_t flags, apr_pool_t *p);
+
+
+/* If the user passes d: vs. D: (or //mach/share vs. //MACH/SHARE),
+ * we need to fold the case to canonical form.  This function is
+ * supposed to do so.
+ */
+apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p);
+
+
+apr_status_t file_cleanup(void *);
+
+extern apr_status_t
+apr_file_socket_pipe_create(apr_file_t **in,
+                            apr_file_t **out,
+                            apr_pool_t *p);
+
+extern apr_status_t
+apr_file_socket_pipe_close(apr_file_t *file);
+
+#endif  /* ! FILE_IO_H */

Deleted: vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_misc.h
===================================================================
--- vendor/apache/apr/dist/include/arch/win32/apr_arch_misc.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_misc.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,486 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MISC_H
-#define MISC_H
-
-#include "apr.h"
-#include "apr_portable.h"
-#include "apr_private.h"
-#include "apr_general.h"
-#include "apr_pools.h"
-#include "apr_getopt.h"
-#include "apr_thread_proc.h"
-#include "apr_file_io.h"
-#include "apr_errno.h"
-#include "apr_getopt.h"
-
-#if APR_HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#if APR_HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#if APR_HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#ifndef _WIN32_WCE
-#include <tlhelp32.h>
-#endif
-
-struct apr_other_child_rec_t {
-    apr_pool_t *p;
-    struct apr_other_child_rec_t *next;
-    apr_proc_t *proc;
-    void (*maintenance) (int, void *, int);
-    void *data;
-    apr_os_file_t write_fd;
-};
-
-#define WSAHighByte 2
-#define WSALowByte 0
-
-/* start.c and apr_app.c helpers and communication within misc.c
- *
- * They are not for public consumption, although apr_app_init_complete
- * must be an exported symbol to avoid reinitialization.
- */
-extern int APR_DECLARE_DATA apr_app_init_complete;
-
-int apr_wastrtoastr(char const * const * *retarr,
-                    wchar_t const * const *arr, int args);
-
-/* Platform specific designation of run time os version.
- * Gaps allow for specific service pack levels that
- * export new kernel or winsock functions or behavior.
- */
-typedef enum {
-    APR_WIN_UNK =       0,
-    APR_WIN_UNSUP =     1,
-    APR_WIN_95 =       10,
-    APR_WIN_95_B =     11,
-    APR_WIN_95_OSR2 =  12,
-    APR_WIN_98 =       14,
-    APR_WIN_98_SE =    16,
-    APR_WIN_ME =       18,
-
-    APR_WIN_UNICODE =  20, /* Prior versions support only narrow chars */
-
-    APR_WIN_CE_3 =     23, /* CE is an odd beast, not supporting */
-                           /* some pre-NT features, such as the    */
-    APR_WIN_NT =       30, /* narrow charset APIs (fooA fns), while  */
-    APR_WIN_NT_3_5 =   35, /* not supporting some NT-family features.  */
-    APR_WIN_NT_3_51 =  36,
-
-    APR_WIN_NT_4 =     40,
-    APR_WIN_NT_4_SP2 = 42,
-    APR_WIN_NT_4_SP3 = 43,
-    APR_WIN_NT_4_SP4 = 44,
-    APR_WIN_NT_4_SP5 = 45,
-    APR_WIN_NT_4_SP6 = 46,
-
-    APR_WIN_2000 =     50,
-    APR_WIN_2000_SP1 = 51,
-    APR_WIN_2000_SP2 = 52,
-    APR_WIN_XP =       60,
-    APR_WIN_XP_SP1 =   61,
-    APR_WIN_XP_SP2 =   62,
-    APR_WIN_2003 =     70,
-    APR_WIN_VISTA =    80
-} apr_oslevel_e;
-
-extern APR_DECLARE_DATA apr_oslevel_e apr_os_level;
-
-apr_status_t apr_get_oslevel(apr_oslevel_e *);
-
-/* The APR_HAS_ANSI_FS symbol is PRIVATE, and internal to APR.
- * APR only supports char data for filenames.  Like most applications,
- * characters >127 are essentially undefined.  APR_HAS_UNICODE_FS lets
- * the application know that utf-8 is the encoding method of APR, and
- * only incidently hints that we have Wide OS calls.
- *
- * APR_HAS_ANSI_FS is simply an OS flag to tell us all calls must be
- * the unicode eqivilant.
- */
-
-#if defined(_WIN32_WCE) || defined(WINNT)
-#define APR_HAS_ANSI_FS           0
-#else
-#define APR_HAS_ANSI_FS           1
-#endif
-
-/* IF_WIN_OS_IS_UNICODE / ELSE_WIN_OS_IS_ANSI help us keep the code trivial
- * where have runtime tests for unicode-ness, that aren't needed in any
- * build which supports only WINNT or WCE.
- */
-#if APR_HAS_ANSI_FS && APR_HAS_UNICODE_FS
-#define IF_WIN_OS_IS_UNICODE if (apr_os_level >= APR_WIN_UNICODE)
-#define ELSE_WIN_OS_IS_ANSI else
-#else /* APR_HAS_UNICODE_FS */
-#define IF_WIN_OS_IS_UNICODE
-#define ELSE_WIN_OS_IS_ANSI
-#endif /* WINNT */
-
-#if defined(_MSC_VER) && !defined(_WIN32_WCE)
-#include "crtdbg.h"
-
-static APR_INLINE void* apr_malloc_dbg(size_t size, const char* filename,
-                                       int linenumber)
-{
-    return _malloc_dbg(size, _CRT_BLOCK, filename, linenumber);
-}
-
-static APR_INLINE void* apr_realloc_dbg(void* userData, size_t newSize,
-                                        const char* filename, int linenumber)
-{
-    return _realloc_dbg(userData, newSize, _CRT_BLOCK, filename, linenumber);
-}
-
-#else
-
-static APR_INLINE void* apr_malloc_dbg(size_t size, const char* filename,
-                                       int linenumber)
-{
-    return malloc(size);
-}
-
-static APR_INLINE void* apr_realloc_dbg(void* userData, size_t newSize,
-                                        const char* filename, int linenumber)
-{
-    return realloc(userData, newSize);
-}
-
-#endif  /* ! _MSC_VER */
-
-typedef enum {
-    DLL_WINBASEAPI = 0,    /* kernel32 From WinBase.h       */
-    DLL_WINADVAPI = 1,     /* advapi32 From WinBase.h       */
-    DLL_WINSOCKAPI = 2,    /* mswsock  From WinSock.h       */
-    DLL_WINSOCK2API = 3,   /* ws2_32   From WinSock2.h      */
-    DLL_SHSTDAPI = 4,      /* shell32  From ShellAPI.h      */
-    DLL_NTDLL = 5,         /* shell32  From our real kernel */
-    DLL_defined = 6        /* must define as last idx_ + 1  */
-} apr_dlltoken_e;
-
-FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char *fnName, int ordinal);
-
-/* The apr_load_dll_func call WILL return 0 set error to
- * ERROR_INVALID_FUNCTION if the function cannot be loaded
- */
-#define APR_DECLARE_LATE_DLL_FUNC(lib, rettype, calltype, fn, ord, args, names) \
-    typedef rettype (calltype *apr_winapi_fpt_##fn) args; \
-    static apr_winapi_fpt_##fn apr_winapi_pfn_##fn = NULL; \
-    static int apr_winapi_chk_##fn = 0; \
-    static APR_INLINE int apr_winapi_ld_##fn(void) \
-    {   if (apr_winapi_pfn_##fn) return 1; \
-        if (apr_winapi_chk_##fn ++) return 0; \
-        if (!apr_winapi_pfn_##fn) \
-            apr_winapi_pfn_##fn = (apr_winapi_fpt_##fn) \
-                                      apr_load_dll_func(lib, #fn, ord); \
-        if (apr_winapi_pfn_##fn) return 1; else return 0; }; \
-    static APR_INLINE rettype apr_winapi_##fn args \
-    {   if (apr_winapi_ld_##fn()) \
-            return (*(apr_winapi_pfn_##fn)) names; \
-        else { SetLastError(ERROR_INVALID_FUNCTION); return 0;} }; \
-
-#define APR_HAVE_LATE_DLL_FUNC(fn) apr_winapi_ld_##fn()
-
-/* Provide late bound declarations of every API function missing from
- * one or more supported releases of the Win32 API
- *
- * lib is the enumerated token from apr_dlltoken_e, and must correspond
- * to the string table entry in start.c used by the apr_load_dll_func().
- * Token names (attempt to) follow Windows.h declarations prefixed by DLL_
- * in order to facilitate comparison.  Use the exact declaration syntax
- * and names from Windows.h to prevent ambigutity and bugs.
- *
- * rettype and calltype follow the original declaration in Windows.h
- * fn is the true function name - beware Ansi/Unicode #defined macros
- * ord is the ordinal within the library, use 0 if it varies between versions
- * args is the parameter list following the original declaration, in parens
- * names is the parameter list sans data types, enclosed in parens
- *
- * #undef/re#define the Ansi/Unicode generic name to abate confusion
- * In the case of non-text functions, simply #define the original name
- */
-
-#if !defined(_WIN32_WCE) && !defined(WINNT)
-/* This group is available to all versions of WINNT 4.0 SP6 and later */
-
-#ifdef GetFileAttributesExA
-#undef GetFileAttributesExA
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, GetFileAttributesExA, 0, (
-    IN LPCSTR lpFileName,
-    IN GET_FILEEX_INFO_LEVELS fInfoLevelId,
-    OUT LPVOID lpFileInformation),
-    (lpFileName, fInfoLevelId, lpFileInformation));
-#define GetFileAttributesExA apr_winapi_GetFileAttributesExA
-#undef GetFileAttributesEx
-#define GetFileAttributesEx apr_winapi_GetFileAttributesExA
-
-#ifdef GetFileAttributesExW
-#undef GetFileAttributesExW
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, GetFileAttributesExW, 0, (
-    IN LPCWSTR lpFileName,
-    IN GET_FILEEX_INFO_LEVELS fInfoLevelId,
-    OUT LPVOID lpFileInformation),
-    (lpFileName, fInfoLevelId, lpFileInformation));
-#define GetFileAttributesExW apr_winapi_GetFileAttributesExW
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, CancelIo, 0, (
-    IN HANDLE hFile),
-    (hFile));
-#define CancelIo apr_winapi_CancelIo
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, TryEnterCriticalSection, 0, (
-    LPCRITICAL_SECTION lpCriticalSection),
-    (lpCriticalSection));
-#define TryEnterCriticalSection apr_winapi_TryEnterCriticalSection
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, SwitchToThread, 0, (
-    void),
-    ());
-#define SwitchToThread apr_winapi_SwitchToThread
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetEffectiveRightsFromAclW, 0, (
-    IN PACL pacl,
-    IN PTRUSTEE_W pTrustee,
-    OUT PACCESS_MASK pAccessRights),
-    (pacl, pTrustee, pAccessRights));
-#define GetEffectiveRightsFromAclW apr_winapi_GetEffectiveRightsFromAclW
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoW, 0, (
-    IN LPWSTR pObjectName,
-    IN SE_OBJECT_TYPE ObjectType,
-    IN SECURITY_INFORMATION SecurityInfo,
-    OUT PSID *ppsidOwner,
-    OUT PSID *ppsidGroup,
-    OUT PACL *ppDacl,
-    OUT PACL *ppSacl,
-    OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor),
-    (pObjectName, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup,
-        ppDacl, ppSacl, ppSecurityDescriptor));
-#define GetNamedSecurityInfoW apr_winapi_GetNamedSecurityInfoW
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoA, 0, (
-    IN LPSTR pObjectName,
-    IN SE_OBJECT_TYPE ObjectType,
-    IN SECURITY_INFORMATION SecurityInfo,
-    OUT PSID *ppsidOwner,
-    OUT PSID *ppsidGroup,
-    OUT PACL *ppDacl,
-    OUT PACL *ppSacl,
-    OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor),
-    (pObjectName, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup,
-        ppDacl, ppSacl, ppSecurityDescriptor));
-#define GetNamedSecurityInfoA apr_winapi_GetNamedSecurityInfoA
-#undef GetNamedSecurityInfo
-#define GetNamedSecurityInfo apr_winapi_GetNamedSecurityInfoA
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetSecurityInfo, 0, (
-    IN HANDLE handle,
-    IN SE_OBJECT_TYPE ObjectType,
-    IN SECURITY_INFORMATION SecurityInfo,
-    OUT PSID *ppsidOwner,
-    OUT PSID *ppsidGroup,
-    OUT PACL *ppDacl,
-    OUT PACL *ppSacl,
-    OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor),
-    (handle, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup,
-        ppDacl, ppSacl, ppSecurityDescriptor));
-#define GetSecurityInfo apr_winapi_GetSecurityInfo
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_SHSTDAPI, LPWSTR *, WINAPI, CommandLineToArgvW, 0, (
-    LPCWSTR lpCmdLine,
-    int *pNumArgs),
-    (lpCmdLine, pNumArgs));
-#define CommandLineToArgvW apr_winapi_CommandLineToArgvW
-
-#endif /* !defined(_WIN32_WCE) && !defined(WINNT) */
-
-#if !defined(_WIN32_WCE)
-/* This group is NOT available to all versions of WinNT,
- * these we must always look up
- */
-
-#ifdef GetCompressedFileSizeA
-#undef GetCompressedFileSizeA
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, DWORD, WINAPI, GetCompressedFileSizeA, 0, (
-    IN LPCSTR lpFileName,
-    OUT LPDWORD lpFileSizeHigh),
-    (lpFileName, lpFileSizeHigh));
-#define GetCompressedFileSizeA apr_winapi_GetCompressedFileSizeA
-#undef GetCompressedFileSize
-#define GetCompressedFileSize apr_winapi_GetCompressedFileSizeA
-
-#ifdef GetCompressedFileSizeW
-#undef GetCompressedFileSizeW
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, DWORD, WINAPI, GetCompressedFileSizeW, 0, (
-    IN LPCWSTR lpFileName,
-    OUT LPDWORD lpFileSizeHigh),
-    (lpFileName, lpFileSizeHigh));
-#define GetCompressedFileSizeW apr_winapi_GetCompressedFileSizeW
-
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtQueryTimerResolution, 0, (
-    ULONG *pMaxRes,  /* Minimum NS Resolution */
-    ULONG *pMinRes,  /* Maximum NS Resolution */
-    ULONG *pCurRes), /* Current NS Resolution */
-    (pMaxRes, pMinRes, pCurRes));
-#define QueryTimerResolution apr_winapi_NtQueryTimerResolution
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtSetTimerResolution, 0, (
-    ULONG ReqRes,    /* Requested NS Clock Resolution */
-    BOOL  Acquire,   /* Aquire (1) or Release (0) our interest */
-    ULONG *pNewRes), /* The NS Clock Resolution granted */
-    (ReqRes, Acquire, pNewRes));
-#define SetTimerResolution apr_winapi_NtSetTimerResolution
-
-typedef struct PBI {
-    LONG      ExitStatus;
-    PVOID     PebBaseAddress;
-    apr_uintptr_t AffinityMask;
-    LONG      BasePriority;
-    apr_uintptr_t UniqueProcessId;
-    apr_uintptr_t InheritedFromUniqueProcessId;
-} PBI, *PPBI;
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtQueryInformationProcess, 0, (
-    HANDLE hProcess,  /* Obvious */
-    INT   info,       /* Use 0 for PBI documented above */
-    PVOID pPI,        /* The PIB buffer */
-    ULONG LenPI,      /* Use sizeof(PBI) */
-    ULONG *pSizePI),  /* returns pPI buffer used (may pass NULL) */
-    (hProcess, info, pPI, LenPI, pSizePI));
-#define QueryInformationProcess apr_winapi_NtQueryInformationProcess
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtQueryObject, 0, (
-    HANDLE hObject,   /* Obvious */
-    INT   info,       /* Use 0 for PBI documented above */
-    PVOID pOI,        /* The PIB buffer */
-    ULONG LenOI,      /* Use sizeof(PBI) */
-    ULONG *pSizeOI),  /* returns pPI buffer used (may pass NULL) */
-    (hObject, info, pOI, LenOI, pSizeOI));
-#define QueryObject apr_winapi_NtQueryObject
-
-typedef struct IOSB {
-    union {
-    UINT Status;
-    PVOID reserved;
-    };
-    apr_uintptr_t Information; /* Varies by op, consumed buffer size for FSI below */
-} IOSB, *PIOSB;
-
-typedef struct FSI {
-    LONGLONG AllocationSize;
-    LONGLONG EndOfFile;
-    ULONG    NumberOfLinks;
-    BOOL     DeletePending;
-    BOOL     Directory;
-} FSI, *PFSI;
-
-APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, ZwQueryInformationFile, 0, (
-    HANDLE hObject,    /* Obvious */
-    PVOID  pIOSB,      /* Point to the IOSB buffer for detailed return results */
-    PVOID  pFI,        /* The buffer, using FIB above */
-    ULONG  LenFI,      /* Use sizeof(FI) */
-    ULONG  info),      /* Use 5 for FSI documented above*/
-    (hObject, pIOSB, pFI, LenFI, info));
-#define ZwQueryInformationFile apr_winapi_ZwQueryInformationFile
-
-#ifdef CreateToolhelp32Snapshot
-#undef CreateToolhelp32Snapshot
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, HANDLE, WINAPI, CreateToolhelp32Snapshot, 0, (
-    DWORD dwFlags,
-    DWORD th32ProcessID),
-    (dwFlags, th32ProcessID));
-#define CreateToolhelp32Snapshot apr_winapi_CreateToolhelp32Snapshot
-
-#ifdef Process32FirstW
-#undef Process32FirstW
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, Process32FirstW, 0, (
-    HANDLE hSnapshot,
-    LPPROCESSENTRY32W lppe),
-    (hSnapshot, lppe));
-#define Process32FirstW apr_winapi_Process32FirstW
-
-#ifdef Process32NextW
-#undef Process32NextW
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, Process32NextW, 0, (
-    HANDLE hSnapshot,
-    LPPROCESSENTRY32W lppe),
-    (hSnapshot, lppe));
-#define Process32NextW apr_winapi_Process32NextW
-
-#if !defined(POLLERR)
-/* Event flag definitions for WSAPoll(). */
-#define POLLRDNORM  0x0100
-#define POLLRDBAND  0x0200
-#define POLLIN      (POLLRDNORM | POLLRDBAND)
-#define POLLPRI     0x0400
-
-#define POLLWRNORM  0x0010
-#define POLLOUT     (POLLWRNORM)
-#define POLLWRBAND  0x0020
-
-#define POLLERR     0x0001
-#define POLLHUP     0x0002
-#define POLLNVAL    0x0004
-
-typedef struct pollfd {
-    SOCKET  fd;
-    SHORT   events;
-    SHORT   revents;
-
-} WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD;
-
-#endif /* !defined(POLLERR) */
-#ifdef WSAPoll
-#undef WSAPoll
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINSOCK2API, int, WSAAPI, WSAPoll, 0, (
-    IN OUT LPWSAPOLLFD fdArray,
-    IN ULONG fds,
-    IN INT timeout),
-    (fdArray, fds, timeout));
-#define WSAPoll apr_winapi_WSAPoll
-#define HAVE_POLL   1
-
-#ifdef SetDllDirectoryW
-#undef SetDllDirectoryW
-#endif
-APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, SetDllDirectoryW, 0, (
-    IN LPCWSTR lpPathName),
-    (lpPathName));
-#define SetDllDirectoryW apr_winapi_SetDllDirectoryW
-
-#endif /* !defined(_WIN32_WCE) */
-
-#endif  /* ! MISC_H */
-

Copied: vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_misc.h (from rev 9273, vendor/apache/apr/dist/include/arch/win32/apr_arch_misc.h)
===================================================================
--- vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_misc.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/include/arch/win32/apr_arch_misc.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,487 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MISC_H
+#define MISC_H
+
+#include "apr.h"
+#include "apr_portable.h"
+#include "apr_private.h"
+#include "apr_general.h"
+#include "apr_pools.h"
+#include "apr_getopt.h"
+#include "apr_thread_proc.h"
+#include "apr_file_io.h"
+#include "apr_errno.h"
+#include "apr_getopt.h"
+
+#if APR_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#if APR_HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#if APR_HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+#ifndef _WIN32_WCE
+#include <tlhelp32.h>
+#endif
+
+struct apr_other_child_rec_t {
+    apr_pool_t *p;
+    struct apr_other_child_rec_t *next;
+    apr_proc_t *proc;
+    void (*maintenance) (int, void *, int);
+    void *data;
+    apr_os_file_t write_fd;
+};
+
+#define WSAHighByte 2
+#define WSALowByte 0
+
+/* start.c and apr_app.c helpers and communication within misc.c
+ *
+ * They are not for public consumption, although apr_app_init_complete
+ * must be an exported symbol to avoid reinitialization.
+ */
+extern int APR_DECLARE_DATA apr_app_init_complete;
+
+int apr_wastrtoastr(char const * const * *retarr,
+                    wchar_t const * const *arr, int args);
+
+/* Platform specific designation of run time os version.
+ * Gaps allow for specific service pack levels that
+ * export new kernel or winsock functions or behavior.
+ */
+typedef enum {
+    APR_WIN_UNK =       0,
+    APR_WIN_UNSUP =     1,
+    APR_WIN_95 =       10,
+    APR_WIN_95_B =     11,
+    APR_WIN_95_OSR2 =  12,
+    APR_WIN_98 =       14,
+    APR_WIN_98_SE =    16,
+    APR_WIN_ME =       18,
+
+    APR_WIN_UNICODE =  20, /* Prior versions support only narrow chars */
+
+    APR_WIN_CE_3 =     23, /* CE is an odd beast, not supporting */
+                           /* some pre-NT features, such as the    */
+    APR_WIN_NT =       30, /* narrow charset APIs (fooA fns), while  */
+    APR_WIN_NT_3_5 =   35, /* not supporting some NT-family features.  */
+    APR_WIN_NT_3_51 =  36,
+
+    APR_WIN_NT_4 =     40,
+    APR_WIN_NT_4_SP2 = 42,
+    APR_WIN_NT_4_SP3 = 43,
+    APR_WIN_NT_4_SP4 = 44,
+    APR_WIN_NT_4_SP5 = 45,
+    APR_WIN_NT_4_SP6 = 46,
+
+    APR_WIN_2000 =     50,
+    APR_WIN_2000_SP1 = 51,
+    APR_WIN_2000_SP2 = 52,
+    APR_WIN_XP =       60,
+    APR_WIN_XP_SP1 =   61,
+    APR_WIN_XP_SP2 =   62,
+    APR_WIN_2003 =     70,
+    APR_WIN_VISTA =    80,
+    APR_WIN_7 =        90
+} apr_oslevel_e;
+
+extern APR_DECLARE_DATA apr_oslevel_e apr_os_level;
+
+apr_status_t apr_get_oslevel(apr_oslevel_e *);
+
+/* The APR_HAS_ANSI_FS symbol is PRIVATE, and internal to APR.
+ * APR only supports char data for filenames.  Like most applications,
+ * characters >127 are essentially undefined.  APR_HAS_UNICODE_FS lets
+ * the application know that utf-8 is the encoding method of APR, and
+ * only incidently hints that we have Wide OS calls.
+ *
+ * APR_HAS_ANSI_FS is simply an OS flag to tell us all calls must be
+ * the unicode eqivilant.
+ */
+
+#if defined(_WIN32_WCE) || defined(WINNT)
+#define APR_HAS_ANSI_FS           0
+#else
+#define APR_HAS_ANSI_FS           1
+#endif
+
+/* IF_WIN_OS_IS_UNICODE / ELSE_WIN_OS_IS_ANSI help us keep the code trivial
+ * where have runtime tests for unicode-ness, that aren't needed in any
+ * build which supports only WINNT or WCE.
+ */
+#if APR_HAS_ANSI_FS && APR_HAS_UNICODE_FS
+#define IF_WIN_OS_IS_UNICODE if (apr_os_level >= APR_WIN_UNICODE)
+#define ELSE_WIN_OS_IS_ANSI else
+#else /* APR_HAS_UNICODE_FS */
+#define IF_WIN_OS_IS_UNICODE
+#define ELSE_WIN_OS_IS_ANSI
+#endif /* WINNT */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+#include "crtdbg.h"
+
+static APR_INLINE void* apr_malloc_dbg(size_t size, const char* filename,
+                                       int linenumber)
+{
+    return _malloc_dbg(size, _CRT_BLOCK, filename, linenumber);
+}
+
+static APR_INLINE void* apr_realloc_dbg(void* userData, size_t newSize,
+                                        const char* filename, int linenumber)
+{
+    return _realloc_dbg(userData, newSize, _CRT_BLOCK, filename, linenumber);
+}
+
+#else
+
+static APR_INLINE void* apr_malloc_dbg(size_t size, const char* filename,
+                                       int linenumber)
+{
+    return malloc(size);
+}
+
+static APR_INLINE void* apr_realloc_dbg(void* userData, size_t newSize,
+                                        const char* filename, int linenumber)
+{
+    return realloc(userData, newSize);
+}
+
+#endif  /* ! _MSC_VER */
+
+typedef enum {
+    DLL_WINBASEAPI = 0,    /* kernel32 From WinBase.h       */
+    DLL_WINADVAPI = 1,     /* advapi32 From WinBase.h       */
+    DLL_WINSOCKAPI = 2,    /* mswsock  From WinSock.h       */
+    DLL_WINSOCK2API = 3,   /* ws2_32   From WinSock2.h      */
+    DLL_SHSTDAPI = 4,      /* shell32  From ShellAPI.h      */
+    DLL_NTDLL = 5,         /* shell32  From our real kernel */
+    DLL_defined = 6        /* must define as last idx_ + 1  */
+} apr_dlltoken_e;
+
+FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char *fnName, int ordinal);
+
+/* The apr_load_dll_func call WILL return 0 set error to
+ * ERROR_INVALID_FUNCTION if the function cannot be loaded
+ */
+#define APR_DECLARE_LATE_DLL_FUNC(lib, rettype, calltype, fn, ord, args, names) \
+    typedef rettype (calltype *apr_winapi_fpt_##fn) args; \
+    static apr_winapi_fpt_##fn apr_winapi_pfn_##fn = NULL; \
+    static int apr_winapi_chk_##fn = 0; \
+    static APR_INLINE int apr_winapi_ld_##fn(void) \
+    {   if (apr_winapi_pfn_##fn) return 1; \
+        if (apr_winapi_chk_##fn ++) return 0; \
+        if (!apr_winapi_pfn_##fn) \
+            apr_winapi_pfn_##fn = (apr_winapi_fpt_##fn) \
+                                      apr_load_dll_func(lib, #fn, ord); \
+        if (apr_winapi_pfn_##fn) return 1; else return 0; }; \
+    static APR_INLINE rettype apr_winapi_##fn args \
+    {   if (apr_winapi_ld_##fn()) \
+            return (*(apr_winapi_pfn_##fn)) names; \
+        else { SetLastError(ERROR_INVALID_FUNCTION); return 0;} }; \
+
+#define APR_HAVE_LATE_DLL_FUNC(fn) apr_winapi_ld_##fn()
+
+/* Provide late bound declarations of every API function missing from
+ * one or more supported releases of the Win32 API
+ *
+ * lib is the enumerated token from apr_dlltoken_e, and must correspond
+ * to the string table entry in start.c used by the apr_load_dll_func().
+ * Token names (attempt to) follow Windows.h declarations prefixed by DLL_
+ * in order to facilitate comparison.  Use the exact declaration syntax
+ * and names from Windows.h to prevent ambigutity and bugs.
+ *
+ * rettype and calltype follow the original declaration in Windows.h
+ * fn is the true function name - beware Ansi/Unicode #defined macros
+ * ord is the ordinal within the library, use 0 if it varies between versions
+ * args is the parameter list following the original declaration, in parens
+ * names is the parameter list sans data types, enclosed in parens
+ *
+ * #undef/re#define the Ansi/Unicode generic name to abate confusion
+ * In the case of non-text functions, simply #define the original name
+ */
+
+#if !defined(_WIN32_WCE) && !defined(WINNT)
+/* This group is available to all versions of WINNT 4.0 SP6 and later */
+
+#ifdef GetFileAttributesExA
+#undef GetFileAttributesExA
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, GetFileAttributesExA, 0, (
+    IN LPCSTR lpFileName,
+    IN GET_FILEEX_INFO_LEVELS fInfoLevelId,
+    OUT LPVOID lpFileInformation),
+    (lpFileName, fInfoLevelId, lpFileInformation));
+#define GetFileAttributesExA apr_winapi_GetFileAttributesExA
+#undef GetFileAttributesEx
+#define GetFileAttributesEx apr_winapi_GetFileAttributesExA
+
+#ifdef GetFileAttributesExW
+#undef GetFileAttributesExW
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, GetFileAttributesExW, 0, (
+    IN LPCWSTR lpFileName,
+    IN GET_FILEEX_INFO_LEVELS fInfoLevelId,
+    OUT LPVOID lpFileInformation),
+    (lpFileName, fInfoLevelId, lpFileInformation));
+#define GetFileAttributesExW apr_winapi_GetFileAttributesExW
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, CancelIo, 0, (
+    IN HANDLE hFile),
+    (hFile));
+#define CancelIo apr_winapi_CancelIo
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, TryEnterCriticalSection, 0, (
+    LPCRITICAL_SECTION lpCriticalSection),
+    (lpCriticalSection));
+#define TryEnterCriticalSection apr_winapi_TryEnterCriticalSection
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, SwitchToThread, 0, (
+    void),
+    ());
+#define SwitchToThread apr_winapi_SwitchToThread
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetEffectiveRightsFromAclW, 0, (
+    IN PACL pacl,
+    IN PTRUSTEE_W pTrustee,
+    OUT PACCESS_MASK pAccessRights),
+    (pacl, pTrustee, pAccessRights));
+#define GetEffectiveRightsFromAclW apr_winapi_GetEffectiveRightsFromAclW
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoW, 0, (
+    IN LPWSTR pObjectName,
+    IN SE_OBJECT_TYPE ObjectType,
+    IN SECURITY_INFORMATION SecurityInfo,
+    OUT PSID *ppsidOwner,
+    OUT PSID *ppsidGroup,
+    OUT PACL *ppDacl,
+    OUT PACL *ppSacl,
+    OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor),
+    (pObjectName, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup,
+        ppDacl, ppSacl, ppSecurityDescriptor));
+#define GetNamedSecurityInfoW apr_winapi_GetNamedSecurityInfoW
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoA, 0, (
+    IN LPSTR pObjectName,
+    IN SE_OBJECT_TYPE ObjectType,
+    IN SECURITY_INFORMATION SecurityInfo,
+    OUT PSID *ppsidOwner,
+    OUT PSID *ppsidGroup,
+    OUT PACL *ppDacl,
+    OUT PACL *ppSacl,
+    OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor),
+    (pObjectName, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup,
+        ppDacl, ppSacl, ppSecurityDescriptor));
+#define GetNamedSecurityInfoA apr_winapi_GetNamedSecurityInfoA
+#undef GetNamedSecurityInfo
+#define GetNamedSecurityInfo apr_winapi_GetNamedSecurityInfoA
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetSecurityInfo, 0, (
+    IN HANDLE handle,
+    IN SE_OBJECT_TYPE ObjectType,
+    IN SECURITY_INFORMATION SecurityInfo,
+    OUT PSID *ppsidOwner,
+    OUT PSID *ppsidGroup,
+    OUT PACL *ppDacl,
+    OUT PACL *ppSacl,
+    OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor),
+    (handle, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup,
+        ppDacl, ppSacl, ppSecurityDescriptor));
+#define GetSecurityInfo apr_winapi_GetSecurityInfo
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_SHSTDAPI, LPWSTR *, WINAPI, CommandLineToArgvW, 0, (
+    LPCWSTR lpCmdLine,
+    int *pNumArgs),
+    (lpCmdLine, pNumArgs));
+#define CommandLineToArgvW apr_winapi_CommandLineToArgvW
+
+#endif /* !defined(_WIN32_WCE) && !defined(WINNT) */
+
+#if !defined(_WIN32_WCE)
+/* This group is NOT available to all versions of WinNT,
+ * these we must always look up
+ */
+
+#ifdef GetCompressedFileSizeA
+#undef GetCompressedFileSizeA
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, DWORD, WINAPI, GetCompressedFileSizeA, 0, (
+    IN LPCSTR lpFileName,
+    OUT LPDWORD lpFileSizeHigh),
+    (lpFileName, lpFileSizeHigh));
+#define GetCompressedFileSizeA apr_winapi_GetCompressedFileSizeA
+#undef GetCompressedFileSize
+#define GetCompressedFileSize apr_winapi_GetCompressedFileSizeA
+
+#ifdef GetCompressedFileSizeW
+#undef GetCompressedFileSizeW
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, DWORD, WINAPI, GetCompressedFileSizeW, 0, (
+    IN LPCWSTR lpFileName,
+    OUT LPDWORD lpFileSizeHigh),
+    (lpFileName, lpFileSizeHigh));
+#define GetCompressedFileSizeW apr_winapi_GetCompressedFileSizeW
+
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtQueryTimerResolution, 0, (
+    ULONG *pMaxRes,  /* Minimum NS Resolution */
+    ULONG *pMinRes,  /* Maximum NS Resolution */
+    ULONG *pCurRes), /* Current NS Resolution */
+    (pMaxRes, pMinRes, pCurRes));
+#define QueryTimerResolution apr_winapi_NtQueryTimerResolution
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtSetTimerResolution, 0, (
+    ULONG ReqRes,    /* Requested NS Clock Resolution */
+    BOOL  Acquire,   /* Aquire (1) or Release (0) our interest */
+    ULONG *pNewRes), /* The NS Clock Resolution granted */
+    (ReqRes, Acquire, pNewRes));
+#define SetTimerResolution apr_winapi_NtSetTimerResolution
+
+typedef struct PBI {
+    LONG      ExitStatus;
+    PVOID     PebBaseAddress;
+    apr_uintptr_t AffinityMask;
+    LONG      BasePriority;
+    apr_uintptr_t UniqueProcessId;
+    apr_uintptr_t InheritedFromUniqueProcessId;
+} PBI, *PPBI;
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtQueryInformationProcess, 0, (
+    HANDLE hProcess,  /* Obvious */
+    INT   info,       /* Use 0 for PBI documented above */
+    PVOID pPI,        /* The PIB buffer */
+    ULONG LenPI,      /* Use sizeof(PBI) */
+    ULONG *pSizePI),  /* returns pPI buffer used (may pass NULL) */
+    (hProcess, info, pPI, LenPI, pSizePI));
+#define QueryInformationProcess apr_winapi_NtQueryInformationProcess
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, NtQueryObject, 0, (
+    HANDLE hObject,   /* Obvious */
+    INT   info,       /* Use 0 for PBI documented above */
+    PVOID pOI,        /* The PIB buffer */
+    ULONG LenOI,      /* Use sizeof(PBI) */
+    ULONG *pSizeOI),  /* returns pPI buffer used (may pass NULL) */
+    (hObject, info, pOI, LenOI, pSizeOI));
+#define QueryObject apr_winapi_NtQueryObject
+
+typedef struct IOSB {
+    union {
+    UINT Status;
+    PVOID reserved;
+    };
+    apr_uintptr_t Information; /* Varies by op, consumed buffer size for FSI below */
+} IOSB, *PIOSB;
+
+typedef struct FSI {
+    LONGLONG AllocationSize;
+    LONGLONG EndOfFile;
+    ULONG    NumberOfLinks;
+    BOOL     DeletePending;
+    BOOL     Directory;
+} FSI, *PFSI;
+
+APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, LONG, WINAPI, ZwQueryInformationFile, 0, (
+    HANDLE hObject,    /* Obvious */
+    PVOID  pIOSB,      /* Point to the IOSB buffer for detailed return results */
+    PVOID  pFI,        /* The buffer, using FIB above */
+    ULONG  LenFI,      /* Use sizeof(FI) */
+    ULONG  info),      /* Use 5 for FSI documented above*/
+    (hObject, pIOSB, pFI, LenFI, info));
+#define ZwQueryInformationFile apr_winapi_ZwQueryInformationFile
+
+#ifdef CreateToolhelp32Snapshot
+#undef CreateToolhelp32Snapshot
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, HANDLE, WINAPI, CreateToolhelp32Snapshot, 0, (
+    DWORD dwFlags,
+    DWORD th32ProcessID),
+    (dwFlags, th32ProcessID));
+#define CreateToolhelp32Snapshot apr_winapi_CreateToolhelp32Snapshot
+
+#ifdef Process32FirstW
+#undef Process32FirstW
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, Process32FirstW, 0, (
+    HANDLE hSnapshot,
+    LPPROCESSENTRY32W lppe),
+    (hSnapshot, lppe));
+#define Process32FirstW apr_winapi_Process32FirstW
+
+#ifdef Process32NextW
+#undef Process32NextW
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, Process32NextW, 0, (
+    HANDLE hSnapshot,
+    LPPROCESSENTRY32W lppe),
+    (hSnapshot, lppe));
+#define Process32NextW apr_winapi_Process32NextW
+
+#if !defined(POLLERR)
+/* Event flag definitions for WSAPoll(). */
+#define POLLRDNORM  0x0100
+#define POLLRDBAND  0x0200
+#define POLLIN      (POLLRDNORM | POLLRDBAND)
+#define POLLPRI     0x0400
+
+#define POLLWRNORM  0x0010
+#define POLLOUT     (POLLWRNORM)
+#define POLLWRBAND  0x0020
+
+#define POLLERR     0x0001
+#define POLLHUP     0x0002
+#define POLLNVAL    0x0004
+
+typedef struct pollfd {
+    SOCKET  fd;
+    SHORT   events;
+    SHORT   revents;
+
+} WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD;
+
+#endif /* !defined(POLLERR) */
+#ifdef WSAPoll
+#undef WSAPoll
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINSOCK2API, int, WSAAPI, WSAPoll, 0, (
+    IN OUT LPWSAPOLLFD fdArray,
+    IN ULONG fds,
+    IN INT timeout),
+    (fdArray, fds, timeout));
+#define WSAPoll apr_winapi_WSAPoll
+#define HAVE_POLL   1
+
+#ifdef SetDllDirectoryW
+#undef SetDllDirectoryW
+#endif
+APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, SetDllDirectoryW, 0, (
+    IN LPCWSTR lpPathName),
+    (lpPathName));
+#define SetDllDirectoryW apr_winapi_SetDllDirectoryW
+
+#endif /* !defined(_WIN32_WCE) */
+
+#endif  /* ! MISC_H */
+

Deleted: vendor/apache/apr/1.5.2/libapr.dep
===================================================================
--- vendor/apache/apr/dist/libapr.dep	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/libapr.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,561 +0,0 @@
-# Microsoft Developer Studio Generated Dependency File, included by libapr.mak
-
-.\atomic\win32\apr_atomic.c : \
-	".\include\apr_atomic.h"\
-	
-
-.\dso\win32\dso.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_dso.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\buffer.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\copy.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\dir.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\fileacc.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\filedup.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\filepath.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\filepath_util.c : \
-	".\include\apr_strings.h"\
-	
-
-.\file_io\win32\filestat.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\filesys.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\flock.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\fullrw.c : \
-	
-
-.\file_io\unix\mktemp.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\open.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\pipe.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\readwrite.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\win32\seek.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\file_io\unix\tempdir.c : \
-	".\include\apr_env.h"\
-	".\include\apr_strings.h"\
-	
-
-.\locks\win32\proc_mutex.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_proc_mutex.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\locks\win32\thread_cond.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\apr_thread_cond.h"\
-	".\include\arch\win32\apr_arch_thread_cond.h"\
-	".\include\arch\win32\apr_arch_thread_mutex.h"\
-	
-
-.\locks\win32\thread_mutex.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_thread_mutex.h"\
-	
-
-.\locks\win32\thread_rwlock.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\apr_thread_rwlock.h"\
-	".\include\arch\win32\apr_arch_thread_rwlock.h"\
-	
-
-.\memory\unix\apr_pools.c : \
-	".\include\apr_atomic.h"\
-	".\include\apr_env.h"\
-	".\include\apr_hash.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\win32\charset.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\win32\env.c : \
-	".\include\apr_env.h"\
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\unix\errorcodes.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\unix\getopt.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\misc\win32\internal.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\win32\misc.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	".\include\arch\win32\apr_dbg_win32_handles.h"\
-	
-
-.\misc\unix\otherchild.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\win32\rand.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_portable.h"\
-	
-
-.\misc\win32\start.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_signal.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\win32\utf8.c : \
-	".\include\apr_lib.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\misc\unix\version.c : \
-	".\include\apr_version.h"\
-	
-
-.\mmap\unix\common.c : \
-	".\include\apr_mmap.h"\
-	
-
-.\mmap\win32\mmap.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_mmap.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\network_io\unix\inet_ntop.c : \
-	".\include\apr_poll.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\unix\inet_pton.c : \
-	".\include\apr_poll.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\unix\multicast.c : \
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_support.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\win32\sendrecv.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\network_io\unix\sockaddr.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\unix\socket_util.c : \
-	".\include\apr_poll.h"\
-	
-
-.\network_io\win32\sockets.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\network_io\win32\sockopt.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	
-
-.\passwd\apr_getpass.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\poll\unix\poll.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\poll\unix\pollcb.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\poll\unix\pollset.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_inherit.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\poll\unix\select.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\unix\apr_arch_poll_private.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_networkio.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\random\unix\apr_random.c : \
-	".\include\apr_random.h"\
-	
-
-.\random\unix\sha2.c : \
-	".\random\unix\sha2.h"\
-	
-
-.\random\unix\sha2_glue.c : \
-	".\include\apr_random.h"\
-	".\random\unix\sha2.h"\
-	
-
-.\shmem\win32\shm.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\strings\apr_cpystrn.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_fnmatch.c : \
-	".\include\apr_fnmatch.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_snprintf.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_strings.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_strnatcmp.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\strings\apr_strtok.c : \
-	".\include\apr_strings.h"\
-	
-
-.\tables\apr_hash.c : \
-	".\include\apr_hash.h"\
-	
-
-.\tables\apr_tables.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_strings.h"\
-	
-
-.\threadproc\win32\proc.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\threadproc\win32\signals.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_signal.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-.\threadproc\win32\thread.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	
-
-.\threadproc\win32\threadpriv.c : \
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_threadproc.h"\
-	
-
-.\time\win32\time.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_portable.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	
-
-.\time\win32\timestr.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_atime.h"\
-	
-
-.\user\win32\groupinfo.c : \
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	
-
-.\user\win32\userinfo.c : \
-	".\include\apr_getopt.h"\
-	".\include\apr_lib.h"\
-	".\include\apr_poll.h"\
-	".\include\apr_portable.h"\
-	".\include\apr_strings.h"\
-	".\include\arch\win32\apr_arch_file_io.h"\
-	".\include\arch\win32\apr_arch_utf8.h"\
-	
-
-!IF  "$(CFG)" == "libapr - Win32 Release"
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Release"
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
-
-!ENDIF 
-
-.\libapr.rc : \
-	".\include\apr_version.h"\
-	

Copied: vendor/apache/apr/1.5.2/libapr.dep (from rev 9273, vendor/apache/apr/dist/libapr.dep)
===================================================================
--- vendor/apache/apr/1.5.2/libapr.dep	                        (rev 0)
+++ vendor/apache/apr/1.5.2/libapr.dep	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1920 @@
+# Microsoft Developer Studio Generated Dependency File, included by libapr.mak
+
+.\atomic\win32\apr_atomic.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_atomic.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\dso\win32\dso.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_dso.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\encoding\apr_escape.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_escape.h"\
+	".\include\apr_escape_test_char.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\file_io\win32\buffer.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\copy.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\dir.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\fileacc.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filedup.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filepath.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\filepath_util.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filestat.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\filesys.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\flock.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\fullrw.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\file_io\unix\mktemp.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\open.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\pipe.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\readwrite.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\win32\seek.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\file_io\unix\tempdir.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_env.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\proc_mutex.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_proc_mutex.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\thread_cond.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_cond.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_thread_cond.h"\
+	".\include\arch\win32\apr_arch_thread_mutex.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\thread_mutex.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_thread_mutex.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\locks\win32\thread_rwlock.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_thread_rwlock.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_thread_rwlock.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\memory\unix\apr_pools.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_atomic.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_env.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_hash.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\charset.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\misc\win32\env.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_env.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\errorcodes.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\getopt.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\internal.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\misc.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\otherchild.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\rand.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\start.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_signal.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\win32\utf8.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\misc\unix\version.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_version.h"\
+	".\include\apr_want.h"\
+	
+
+.\mmap\unix\common.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_mmap.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\mmap\win32\mmap.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_mmap.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\inet_ntop.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\inet_pton.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\multicast.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_support.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\network_io\win32\sendrecv.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\sockaddr.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\unix\socket_util.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\network_io\win32\sockets.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\network_io\win32\sockopt.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\passwd\apr_getpass.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\poll.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\pollcb.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\pollset.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\poll\unix\select.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_ring.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\random\unix\apr_random.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_random.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\random\unix\sha2.c : \
+	".\include\apr.h"\
+	".\random\unix\sha2.h"\
+	
+
+.\random\unix\sha2_glue.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_random.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\random\unix\sha2.h"\
+	
+
+.\shmem\win32\shm.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_cpystrn.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_fnmatch.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_fnmatch.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\strings\apr_snprintf.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_strings.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\strings\apr_strnatcmp.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\strings\apr_strtok.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	
+
+.\tables\apr_hash.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_hash.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_time.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\tables\apr_skiplist.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_skiplist.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	
+
+.\tables\apr_tables.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_general.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\proc.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\signals.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_signal.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\thread.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\threadproc\win32\threadpriv.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\time\win32\time.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\time\win32\timestr.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\user\win32\groupinfo.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+.\user\win32\userinfo.c : \
+	".\include\apr.h"\
+	".\include\apr_allocator.h"\
+	".\include\apr_dso.h"\
+	".\include\apr_errno.h"\
+	".\include\apr_file_info.h"\
+	".\include\apr_file_io.h"\
+	".\include\apr_general.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_global_mutex.h"\
+	".\include\apr_inherit.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_network_io.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_pools.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_proc_mutex.h"\
+	".\include\apr_shm.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_tables.h"\
+	".\include\apr_thread_mutex.h"\
+	".\include\apr_thread_proc.h"\
+	".\include\apr_time.h"\
+	".\include\apr_user.h"\
+	".\include\apr_want.h"\
+	".\include\arch\apr_private_common.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_misc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_private.h"\
+	
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+!ENDIF 
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+!ENDIF 
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+!ENDIF 
+
+.\libapr.rc : \
+	".\include\apr.h"\
+	".\include\apr_version.h"\
+	

Deleted: vendor/apache/apr/1.5.2/libapr.dsp
===================================================================
--- vendor/apache/apr/dist/libapr.dsp	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/libapr.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,873 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libapr" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=libapr - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "libapr.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "libapr.mak" CFG="libapr - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "libapr - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - Win32 Release9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - Win32 Debug9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - x64 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - x64 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "libapr - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /opt:ref
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"Release\libapr-1.dll" /pdb:"Release\libapr-1.pdb" /implib:"Release\libapr-1.lib" /MACHINE:X86 /opt:ref
-# Begin Special Build Tool
-TargetPath=Release\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"Debug\libapr-1.dll" /pdb:"Debug\libapr-1.pdb" /implib:"Debug\libapr-1.lib" /MACHINE:X86
-# Begin Special Build Tool
-TargetPath=Debug\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "9x\Release"
-# PROP BASE Intermediate_Dir "9x\Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "9x\Release"
-# PROP Intermediate_Dir "9x\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /opt:ref
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"9x\Release\libapr-1.dll" /pdb:"9x\Release\libapr-1.pdb" /implib:"9x\Release\libapr-1.lib" /MACHINE:X86 /opt:ref
-# Begin Special Build Tool
-TargetPath=9x\Release\libapr.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "9x\Debug"
-# PROP BASE Intermediate_Dir "9x\Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "9x\Debug"
-# PROP Intermediate_Dir "9x\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"9x\Debug\libapr-1.dll" /pdb:"9x\Debug\libapr-1.pdb" /implib:"9x\Debug\libapr-1.lib" /MACHINE:X86
-# Begin Special Build Tool
-TargetPath=9x\Debug\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "x64\Release"
-# PROP BASE Intermediate_Dir "x64\Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "x64\Release"
-# PROP Intermediate_Dir "x64\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /opt:ref
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"x64\Release\libapr-1.dll" /pdb:"x64\Release\libapr-1.pdb" /implib:"x64\Release\libapr-1.lib" /MACHINE:X64 /opt:ref
-# Begin Special Build Tool
-TargetPath=x64\Release\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "x64\Debug"
-# PROP BASE Intermediate_Dir "x64\Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "x64\Debug"
-# PROP Intermediate_Dir "x64\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"x64\Debug\libapr-1.dll" /pdb:"x64\Debug\libapr-1.pdb" /implib:"x64\Debug\libapr-1.lib" /MACHINE:X64
-# Begin Special Build Tool
-TargetPath=x64\Debug\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ENDIF 
-
-# Begin Target
-
-# Name "libapr - Win32 Release"
-# Name "libapr - Win32 Debug"
-# Name "libapr - Win32 Release9x"
-# Name "libapr - Win32 Debug9x"
-# Name "libapr - x64 Release"
-# Name "libapr - x64 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ".c"
-# Begin Group "atomic"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\atomic\win32\apr_atomic.c
-# End Source File
-# End Group
-# Begin Group "dso"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\dso\win32\dso.c
-# End Source File
-# End Group
-# Begin Group "file_io"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\file_io\win32\buffer.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\copy.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\fileacc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filedup.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filepath.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\filepath_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filestat.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\filesys.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\flock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\fullrw.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\mktemp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\open.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\pipe.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\readwrite.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\win32\seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file_io\unix\tempdir.c
-# End Source File
-# End Group
-# Begin Group "locks"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\locks\win32\proc_mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\locks\win32\thread_cond.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\locks\win32\thread_mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\locks\win32\thread_rwlock.c
-# End Source File
-# End Group
-# Begin Group "memory"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\memory\unix\apr_pools.c
-# End Source File
-# End Group
-# Begin Group "misc"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\misc\win32\apr_app.c
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\charset.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\env.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\errorcodes.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\getopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\internal.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\otherchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\rand.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\start.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\win32\utf8.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\misc\unix\version.c
-# End Source File
-# End Group
-# Begin Group "mmap"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\mmap\unix\common.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\mmap\win32\mmap.c
-# End Source File
-# End Group
-# Begin Group "network_io"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\network_io\unix\inet_ntop.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\inet_pton.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\multicast.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\win32\sendrecv.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\sockaddr.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\win32\sockets.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\unix\socket_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\network_io\win32\sockopt.c
-# End Source File
-# End Group
-# Begin Group "passwd"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\passwd\apr_getpass.c
-# End Source File
-# End Group
-# Begin Group "poll"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\poll\unix\poll.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\poll\unix\pollcb.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\poll\unix\pollset.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\poll\unix\select.c
-# End Source File
-# End Group
-# Begin Group "random"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\random\unix\apr_random.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\random\unix\sha2.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\random\unix\sha2_glue.c
-# End Source File
-# End Group
-# Begin Group "shmem"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\shmem\win32\shm.c
-# End Source File
-# End Group
-# Begin Group "strings"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\strings\apr_cpystrn.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_fnmatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_snprintf.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_strings.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_strnatcmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\strings\apr_strtok.c
-# End Source File
-# End Group
-# Begin Group "tables"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\tables\apr_hash.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\tables\apr_tables.c
-# End Source File
-# End Group
-# Begin Group "threadproc"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\threadproc\win32\proc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\threadproc\win32\signals.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\threadproc\win32\thread.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\threadproc\win32\threadpriv.c
-# End Source File
-# End Group
-# Begin Group "time"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\time\win32\time.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\time\win32\timestr.c
-# End Source File
-# End Group
-# Begin Group "user"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\user\win32\groupinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\user\win32\userinfo.c
-# End Source File
-# End Group
-# End Group
-# Begin Group "Private Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_atime.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_dso.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_file_io.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_inherit.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_networkio.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_thread_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_thread_rwlock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_threadproc.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_arch_utf8.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\win32\apr_private.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arch\apr_private_common.h
-# End Source File
-# End Group
-# Begin Group "Public Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\include\apr.h.in
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr.hnw
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr.hw
-
-!IF  "$(CFG)" == "libapr - Win32 Release"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Release"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
-
-# Begin Custom Build - Creating apr.h from apr.hw
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	type .\include\apr.hw > .\include\apr.h
-
-# End Custom Build
-
-!ENDIF 
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_allocator.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_atomic.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_dso.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_env.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_errno.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_file_info.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_file_io.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_fnmatch.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_general.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_getopt.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_global_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_hash.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_inherit.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_lib.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_mmap.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_network_io.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_poll.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_pools.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_portable.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_proc_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_random.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_ring.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_shm.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_signal.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_strings.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_support.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_tables.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_cond.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_proc.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_thread_rwlock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_time.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_user.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_version.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\apr_want.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\libapr.rc
-# End Source File
-# End Target
-# End Project

Copied: vendor/apache/apr/1.5.2/libapr.dsp (from rev 9273, vendor/apache/apr/dist/libapr.dsp)
===================================================================
--- vendor/apache/apr/1.5.2/libapr.dsp	                        (rev 0)
+++ vendor/apache/apr/1.5.2/libapr.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,962 @@
+# Microsoft Developer Studio Project File - Name="libapr" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=libapr - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "libapr.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "libapr.mak" CFG="libapr - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "libapr - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - Win32 Release9x" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - Win32 Debug9x" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - x64 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - x64 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /opt:ref
+# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"Release\libapr-1.dll" /pdb:"Release\libapr-1.pdb" /implib:"Release\libapr-1.lib" /MACHINE:X86 /opt:ref
+# Begin Special Build Tool
+TargetPath=Release\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug
+# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"Debug\libapr-1.dll" /pdb:"Debug\libapr-1.pdb" /implib:"Debug\libapr-1.lib" /MACHINE:X86
+# Begin Special Build Tool
+TargetPath=Debug\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "9x\Release"
+# PROP BASE Intermediate_Dir "9x\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "9x\Release"
+# PROP Intermediate_Dir "9x\Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /opt:ref
+# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"9x\Release\libapr-1.dll" /pdb:"9x\Release\libapr-1.pdb" /implib:"9x\Release\libapr-1.lib" /MACHINE:X86 /opt:ref
+# Begin Special Build Tool
+TargetPath=9x\Release\libapr.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "9x\Debug"
+# PROP BASE Intermediate_Dir "9x\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "9x\Debug"
+# PROP Intermediate_Dir "9x\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug
+# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"9x\Debug\libapr-1.dll" /pdb:"9x\Debug\libapr-1.pdb" /implib:"9x\Debug\libapr-1.lib" /MACHINE:X86
+# Begin Special Build Tool
+TargetPath=9x\Debug\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "x64\Release"
+# PROP BASE Intermediate_Dir "x64\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "x64\Release"
+# PROP Intermediate_Dir "x64\Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /opt:ref
+# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"x64\Release\libapr-1.dll" /pdb:"x64\Release\libapr-1.pdb" /implib:"x64\Release\libapr-1.lib" /MACHINE:X64 /opt:ref
+# Begin Special Build Tool
+TargetPath=x64\Release\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
+# End Special Build Tool
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "x64\Debug"
+# PROP BASE Intermediate_Dir "x64\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "x64\Debug"
+# PROP Intermediate_Dir "x64\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL"
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug
+# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /debug /out:"x64\Debug\libapr-1.dll" /pdb:"x64\Debug\libapr-1.pdb" /implib:"x64\Debug\libapr-1.lib" /MACHINE:X64
+# Begin Special Build Tool
+TargetPath=x64\Debug\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
+# End Special Build Tool
+
+!ENDIF 
+
+# Begin Target
+
+# Name "libapr - Win32 Release"
+# Name "libapr - Win32 Debug"
+# Name "libapr - Win32 Release9x"
+# Name "libapr - Win32 Debug9x"
+# Name "libapr - x64 Release"
+# Name "libapr - x64 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".c"
+# Begin Group "atomic"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\atomic\win32\apr_atomic.c
+# End Source File
+# End Group
+# Begin Group "dso"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\dso\win32\dso.c
+# End Source File
+# End Group
+# Begin Group "encoding"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\encoding\apr_escape.c
+# End Source File
+# End Group
+# Begin Group "file_io"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\file_io\win32\buffer.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\copy.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\dir.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\fileacc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filedup.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filepath.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\filepath_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filestat.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filesys.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\flock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\fullrw.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\mktemp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\open.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\pipe.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\readwrite.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\seek.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\tempdir.c
+# End Source File
+# End Group
+# Begin Group "locks"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\locks\win32\proc_mutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_cond.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_mutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_rwlock.c
+# End Source File
+# End Group
+# Begin Group "memory"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\memory\unix\apr_pools.c
+# End Source File
+# End Group
+# Begin Group "misc"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\misc\win32\apr_app.c
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\charset.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\env.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\errorcodes.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\internal.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\misc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\otherchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\rand.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\start.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\utf8.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\version.c
+# End Source File
+# End Group
+# Begin Group "mmap"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\mmap\unix\common.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\mmap\win32\mmap.c
+# End Source File
+# End Group
+# Begin Group "network_io"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\network_io\unix\inet_ntop.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\inet_pton.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\multicast.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sendrecv.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\sockaddr.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sockets.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\socket_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sockopt.c
+# End Source File
+# End Group
+# Begin Group "passwd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\passwd\apr_getpass.c
+# End Source File
+# End Group
+# Begin Group "poll"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\poll\unix\poll.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\pollcb.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\pollset.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\select.c
+# End Source File
+# End Group
+# Begin Group "random"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\random\unix\apr_random.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\random\unix\sha2.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\random\unix\sha2_glue.c
+# End Source File
+# End Group
+# Begin Group "shmem"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\shmem\win32\shm.c
+# End Source File
+# End Group
+# Begin Group "strings"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\strings\apr_cpystrn.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_fnmatch.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_snprintf.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strings.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strnatcmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strtok.c
+# End Source File
+# End Group
+# Begin Group "tables"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\tables\apr_hash.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\tables\apr_tables.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\tables\apr_skiplist.c
+# End Source File
+# End Group
+# Begin Group "threadproc"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\threadproc\win32\proc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\signals.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\thread.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\threadpriv.c
+# End Source File
+# End Group
+# Begin Group "time"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\time\win32\time.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\time\win32\timestr.c
+# End Source File
+# End Group
+# Begin Group "user"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\user\win32\groupinfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\user\win32\userinfo.c
+# End Source File
+# End Group
+# End Group
+# Begin Group "Private Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_atime.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_dso.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_file_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_inherit.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_misc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_networkio.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_thread_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_thread_rwlock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_threadproc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_utf8.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_private.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\apr_private_common.h
+# End Source File
+# End Group
+# Begin Group "Public Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\include\apr.h.in
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr.hnw
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr.hw
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_allocator.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_atomic.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_dso.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_env.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_errno.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_escape.h
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\Release\gen_test_char /Fe.\Release\gen_test_char.exe .\tools\gen_test_char.c 
+	.\Release\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\Debug\gen_test_char /Fe.\Debug\gen_test_char.exe .\tools\gen_test_char.c  
+	.\Debug\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\Release\gen_test_char /Fe.\9x\Release\gen_test_char.exe .\tools\gen_test_char.c 
+	.\9x\Release\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\Debug\gen_test_char /Fe.\9x\Debug\gen_test_char.exe .\tools\gen_test_char.c  
+	.\9x\Debug\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\Release\gen_test_char /Fe.\x64\Release\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\Release\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+# Begin Custom Build - Creating gen_test_char.exe and apr_escape_test_char.h
+InputPath=.\include\apr_escape.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\Debug\gen_test_char /Fe.\x64\Debug\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\Debug\gen_test_char.exe > .\include\apr_escape_test_char.h
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_file_info.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_file_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_fnmatch.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_general.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_getopt.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_global_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_hash.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_inherit.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_lib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_mmap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_network_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_poll.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_pools.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_portable.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_proc_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_random.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_ring.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_shm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_signal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_skiplist.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_strings.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_support.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_tables.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_cond.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_proc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_rwlock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_time.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_user.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_version.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_want.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\libapr.rc
+# End Source File
+# End Target
+# End Project

Deleted: vendor/apache/apr/1.5.2/libapr.mak
===================================================================
--- vendor/apache/apr/dist/libapr.mak	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/libapr.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1917 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on libapr.dsp
-!IF "$(CFG)" == ""
-CFG=libapr - Win32 Release
-!MESSAGE No configuration specified. Defaulting to libapr - Win32 Release.
-!ENDIF 
-
-!IF "$(CFG)" != "libapr - Win32 Release" && "$(CFG)" != "libapr - Win32 Debug" && "$(CFG)" != "libapr - Win32 Release9x" && "$(CFG)" != "libapr - Win32 Debug9x" && "$(CFG)" != "libapr - x64 Release" && "$(CFG)" != "libapr - x64 Debug"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "libapr.mak" CFG="libapr - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "libapr - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - Win32 Release9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - Win32 Debug9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - x64 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libapr - x64 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-!ERROR An invalid configuration is specified.
-!ENDIF 
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-!IF  "$(CFG)" == "libapr - Win32 Release"
-
-OUTDIR=.\Release
-INTDIR=.\Release
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-# Begin Custom Macros
-OutDir=.\Release
-# End Custom Macros
-
-ALL : "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\libapr.res"
-	- at erase "$(INTDIR)\libapr_src.idb"
-	- at erase "$(INTDIR)\libapr_src.pdb"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\libapr-1.dll"
-	- at erase "$(OUTDIR)\libapr-1.exp"
-	- at erase "$(OUTDIR)\libapr-1.lib"
-	- at erase "$(OUTDIR)\libapr-1.pdb"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" 
-RSC=rc.exe
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
-BSC32_SBRS= \
-	
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 /opt:ref 
-LINK32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj" \
-	"$(INTDIR)\libapr.res"
-
-"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-TargetPath=.\Release\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-# Begin Custom Macros
-OutDir=.\Release
-# End Custom Macros
-
-"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
-   if exist .\Release\libapr-1.dll.manifest mt.exe -manifest .\Release\libapr-1.dll.manifest -outputresource:.\Release\libapr-1.dll;2
-	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
-
-OUTDIR=.\Debug
-INTDIR=.\Debug
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-# Begin Custom Macros
-OutDir=.\Debug
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\libapr.res"
-	- at erase "$(INTDIR)\libapr_src.idb"
-	- at erase "$(INTDIR)\libapr_src.pdb"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\libapr-1.dll"
-	- at erase "$(OUTDIR)\libapr-1.exp"
-	- at erase "$(OUTDIR)\libapr-1.lib"
-	- at erase "$(OUTDIR)\libapr-1.pdb"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" 
-RSC=rc.exe
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
-BSC32_SBRS= \
-	
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 
-LINK32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj" \
-	"$(INTDIR)\libapr.res"
-
-"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-TargetPath=.\Debug\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-# Begin Custom Macros
-OutDir=.\Debug
-# End Custom Macros
-
-"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
-   if exist .\Debug\libapr-1.dll.manifest mt.exe -manifest .\Debug\libapr-1.dll.manifest -outputresource:.\Debug\libapr-1.dll;2
-	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
-
-OUTDIR=.\9x\Release
-INTDIR=.\9x\Release
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-# Begin Custom Macros
-OutDir=.\9x\Release
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\libapr.res"
-	- at erase "$(INTDIR)\libapr_src.idb"
-	- at erase "$(INTDIR)\libapr_src.pdb"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\libapr-1.dll"
-	- at erase "$(OUTDIR)\libapr-1.exp"
-	- at erase "$(OUTDIR)\libapr-1.lib"
-	- at erase "$(OUTDIR)\libapr-1.pdb"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" 
-RSC=rc.exe
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
-BSC32_SBRS= \
-	
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 /opt:ref 
-LINK32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj" \
-	"$(INTDIR)\libapr.res"
-
-"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-TargetPath=.\9x\Release\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-# Begin Custom Macros
-OutDir=.\9x\Release
-# End Custom Macros
-
-"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
-   if exist .\9x\Release\libapr-1.dll.manifest mt.exe -manifest .\9x\Release\libapr-1.dll.manifest -outputresource:.\9x\Release\libapr-1.dll;2
-	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
-
-OUTDIR=.\9x\Debug
-INTDIR=.\9x\Debug
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-# Begin Custom Macros
-OutDir=.\9x\Debug
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\libapr.res"
-	- at erase "$(INTDIR)\libapr_src.idb"
-	- at erase "$(INTDIR)\libapr_src.pdb"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\libapr-1.dll"
-	- at erase "$(OUTDIR)\libapr-1.exp"
-	- at erase "$(OUTDIR)\libapr-1.lib"
-	- at erase "$(OUTDIR)\libapr-1.pdb"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" 
-RSC=rc.exe
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
-BSC32_SBRS= \
-	
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 
-LINK32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj" \
-	"$(INTDIR)\libapr.res"
-
-"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-TargetPath=.\9x\Debug\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-# Begin Custom Macros
-OutDir=.\9x\Debug
-# End Custom Macros
-
-"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
-   if exist .\9x\Debug\libapr-1.dll.manifest mt.exe -manifest .\9x\Debug\libapr-1.dll.manifest -outputresource:.\9x\Debug\libapr-1.dll;2
-	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Release"
-
-OUTDIR=.\x64\Release
-INTDIR=.\x64\Release
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-# Begin Custom Macros
-OutDir=.\x64\Release
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\libapr.res"
-	- at erase "$(INTDIR)\libapr_src.idb"
-	- at erase "$(INTDIR)\libapr_src.pdb"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\libapr-1.dll"
-	- at erase "$(OUTDIR)\libapr-1.exp"
-	- at erase "$(OUTDIR)\libapr-1.lib"
-	- at erase "$(OUTDIR)\libapr-1.pdb"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" 
-RSC=rc.exe
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
-BSC32_SBRS= \
-	
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X64 /opt:ref 
-LINK32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj" \
-	"$(INTDIR)\libapr.res"
-
-"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-TargetPath=.\x64\Release\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-# Begin Custom Macros
-OutDir=.\x64\Release
-# End Custom Macros
-
-"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
-   if exist .\x64\Release\libapr-1.dll.manifest mt.exe -manifest .\x64\Release\libapr-1.dll.manifest -outputresource:.\x64\Release\libapr-1.dll;2
-	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
-
-OUTDIR=.\x64\Debug
-INTDIR=.\x64\Debug
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-# Begin Custom Macros
-OutDir=.\x64\Debug
-# End Custom Macros
-
-ALL : ".\include\apr.h" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
-
-
-CLEAN :
-	- at erase "$(INTDIR)\apr_atomic.obj"
-	- at erase "$(INTDIR)\apr_cpystrn.obj"
-	- at erase "$(INTDIR)\apr_fnmatch.obj"
-	- at erase "$(INTDIR)\apr_getpass.obj"
-	- at erase "$(INTDIR)\apr_hash.obj"
-	- at erase "$(INTDIR)\apr_pools.obj"
-	- at erase "$(INTDIR)\apr_random.obj"
-	- at erase "$(INTDIR)\apr_snprintf.obj"
-	- at erase "$(INTDIR)\apr_strings.obj"
-	- at erase "$(INTDIR)\apr_strnatcmp.obj"
-	- at erase "$(INTDIR)\apr_strtok.obj"
-	- at erase "$(INTDIR)\apr_tables.obj"
-	- at erase "$(INTDIR)\buffer.obj"
-	- at erase "$(INTDIR)\charset.obj"
-	- at erase "$(INTDIR)\common.obj"
-	- at erase "$(INTDIR)\copy.obj"
-	- at erase "$(INTDIR)\dir.obj"
-	- at erase "$(INTDIR)\dso.obj"
-	- at erase "$(INTDIR)\env.obj"
-	- at erase "$(INTDIR)\errorcodes.obj"
-	- at erase "$(INTDIR)\fileacc.obj"
-	- at erase "$(INTDIR)\filedup.obj"
-	- at erase "$(INTDIR)\filepath.obj"
-	- at erase "$(INTDIR)\filepath_util.obj"
-	- at erase "$(INTDIR)\filestat.obj"
-	- at erase "$(INTDIR)\filesys.obj"
-	- at erase "$(INTDIR)\flock.obj"
-	- at erase "$(INTDIR)\fullrw.obj"
-	- at erase "$(INTDIR)\getopt.obj"
-	- at erase "$(INTDIR)\groupinfo.obj"
-	- at erase "$(INTDIR)\inet_ntop.obj"
-	- at erase "$(INTDIR)\inet_pton.obj"
-	- at erase "$(INTDIR)\internal.obj"
-	- at erase "$(INTDIR)\libapr.res"
-	- at erase "$(INTDIR)\libapr_src.idb"
-	- at erase "$(INTDIR)\libapr_src.pdb"
-	- at erase "$(INTDIR)\misc.obj"
-	- at erase "$(INTDIR)\mktemp.obj"
-	- at erase "$(INTDIR)\mmap.obj"
-	- at erase "$(INTDIR)\multicast.obj"
-	- at erase "$(INTDIR)\open.obj"
-	- at erase "$(INTDIR)\otherchild.obj"
-	- at erase "$(INTDIR)\pipe.obj"
-	- at erase "$(INTDIR)\poll.obj"
-	- at erase "$(INTDIR)\pollcb.obj"
-	- at erase "$(INTDIR)\pollset.obj"
-	- at erase "$(INTDIR)\proc.obj"
-	- at erase "$(INTDIR)\proc_mutex.obj"
-	- at erase "$(INTDIR)\rand.obj"
-	- at erase "$(INTDIR)\readwrite.obj"
-	- at erase "$(INTDIR)\seek.obj"
-	- at erase "$(INTDIR)\select.obj"
-	- at erase "$(INTDIR)\sendrecv.obj"
-	- at erase "$(INTDIR)\sha2.obj"
-	- at erase "$(INTDIR)\sha2_glue.obj"
-	- at erase "$(INTDIR)\shm.obj"
-	- at erase "$(INTDIR)\signals.obj"
-	- at erase "$(INTDIR)\sockaddr.obj"
-	- at erase "$(INTDIR)\socket_util.obj"
-	- at erase "$(INTDIR)\sockets.obj"
-	- at erase "$(INTDIR)\sockopt.obj"
-	- at erase "$(INTDIR)\start.obj"
-	- at erase "$(INTDIR)\tempdir.obj"
-	- at erase "$(INTDIR)\thread.obj"
-	- at erase "$(INTDIR)\thread_cond.obj"
-	- at erase "$(INTDIR)\thread_mutex.obj"
-	- at erase "$(INTDIR)\thread_rwlock.obj"
-	- at erase "$(INTDIR)\threadpriv.obj"
-	- at erase "$(INTDIR)\time.obj"
-	- at erase "$(INTDIR)\timestr.obj"
-	- at erase "$(INTDIR)\userinfo.obj"
-	- at erase "$(INTDIR)\utf8.obj"
-	- at erase "$(INTDIR)\version.obj"
-	- at erase "$(OUTDIR)\libapr-1.dll"
-	- at erase "$(OUTDIR)\libapr-1.exp"
-	- at erase "$(OUTDIR)\libapr-1.lib"
-	- at erase "$(OUTDIR)\libapr-1.pdb"
-	- at erase ".\include\apr.h"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" 
-RSC=rc.exe
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
-BSC32_SBRS= \
-	
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X64 
-LINK32_OBJS= \
-	"$(INTDIR)\apr_atomic.obj" \
-	"$(INTDIR)\dso.obj" \
-	"$(INTDIR)\buffer.obj" \
-	"$(INTDIR)\copy.obj" \
-	"$(INTDIR)\dir.obj" \
-	"$(INTDIR)\fileacc.obj" \
-	"$(INTDIR)\filedup.obj" \
-	"$(INTDIR)\filepath.obj" \
-	"$(INTDIR)\filepath_util.obj" \
-	"$(INTDIR)\filestat.obj" \
-	"$(INTDIR)\filesys.obj" \
-	"$(INTDIR)\flock.obj" \
-	"$(INTDIR)\fullrw.obj" \
-	"$(INTDIR)\mktemp.obj" \
-	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\pipe.obj" \
-	"$(INTDIR)\readwrite.obj" \
-	"$(INTDIR)\seek.obj" \
-	"$(INTDIR)\tempdir.obj" \
-	"$(INTDIR)\proc_mutex.obj" \
-	"$(INTDIR)\thread_cond.obj" \
-	"$(INTDIR)\thread_mutex.obj" \
-	"$(INTDIR)\thread_rwlock.obj" \
-	"$(INTDIR)\apr_pools.obj" \
-	"$(INTDIR)\charset.obj" \
-	"$(INTDIR)\env.obj" \
-	"$(INTDIR)\errorcodes.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\internal.obj" \
-	"$(INTDIR)\misc.obj" \
-	"$(INTDIR)\otherchild.obj" \
-	"$(INTDIR)\rand.obj" \
-	"$(INTDIR)\start.obj" \
-	"$(INTDIR)\utf8.obj" \
-	"$(INTDIR)\version.obj" \
-	"$(INTDIR)\common.obj" \
-	"$(INTDIR)\mmap.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\multicast.obj" \
-	"$(INTDIR)\sendrecv.obj" \
-	"$(INTDIR)\sockaddr.obj" \
-	"$(INTDIR)\sockets.obj" \
-	"$(INTDIR)\socket_util.obj" \
-	"$(INTDIR)\sockopt.obj" \
-	"$(INTDIR)\apr_getpass.obj" \
-	"$(INTDIR)\poll.obj" \
-	"$(INTDIR)\pollcb.obj" \
-	"$(INTDIR)\pollset.obj" \
-	"$(INTDIR)\select.obj" \
-	"$(INTDIR)\apr_random.obj" \
-	"$(INTDIR)\sha2.obj" \
-	"$(INTDIR)\sha2_glue.obj" \
-	"$(INTDIR)\shm.obj" \
-	"$(INTDIR)\apr_cpystrn.obj" \
-	"$(INTDIR)\apr_fnmatch.obj" \
-	"$(INTDIR)\apr_snprintf.obj" \
-	"$(INTDIR)\apr_strings.obj" \
-	"$(INTDIR)\apr_strnatcmp.obj" \
-	"$(INTDIR)\apr_strtok.obj" \
-	"$(INTDIR)\apr_hash.obj" \
-	"$(INTDIR)\apr_tables.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\signals.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\threadpriv.obj" \
-	"$(INTDIR)\time.obj" \
-	"$(INTDIR)\timestr.obj" \
-	"$(INTDIR)\groupinfo.obj" \
-	"$(INTDIR)\userinfo.obj" \
-	"$(INTDIR)\libapr.res"
-
-"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-TargetPath=.\x64\Debug\libapr-1.dll
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-# Begin Custom Macros
-OutDir=.\x64\Debug
-# End Custom Macros
-
-"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
-   if exist .\x64\Debug\libapr-1.dll.manifest mt.exe -manifest .\x64\Debug\libapr-1.dll.manifest -outputresource:.\x64\Debug\libapr-1.dll;2
-	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ENDIF 
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("libapr.dep")
-!INCLUDE "libapr.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "libapr.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "libapr - Win32 Release" || "$(CFG)" == "libapr - Win32 Debug" || "$(CFG)" == "libapr - Win32 Release9x" || "$(CFG)" == "libapr - Win32 Debug9x" || "$(CFG)" == "libapr - x64 Release" || "$(CFG)" == "libapr - x64 Debug"
-SOURCE=.\atomic\win32\apr_atomic.c
-
-"$(INTDIR)\apr_atomic.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\dso\win32\dso.c
-
-"$(INTDIR)\dso.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\buffer.c
-
-"$(INTDIR)\buffer.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\copy.c
-
-"$(INTDIR)\copy.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\dir.c
-
-"$(INTDIR)\dir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\fileacc.c
-
-"$(INTDIR)\fileacc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filedup.c
-
-"$(INTDIR)\filedup.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filepath.c
-
-"$(INTDIR)\filepath.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\filepath_util.c
-
-"$(INTDIR)\filepath_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filestat.c
-
-"$(INTDIR)\filestat.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\filesys.c
-
-"$(INTDIR)\filesys.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\flock.c
-
-"$(INTDIR)\flock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\fullrw.c
-
-"$(INTDIR)\fullrw.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\mktemp.c
-
-"$(INTDIR)\mktemp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\open.c
-
-"$(INTDIR)\open.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\pipe.c
-
-"$(INTDIR)\pipe.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\readwrite.c
-
-"$(INTDIR)\readwrite.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\win32\seek.c
-
-"$(INTDIR)\seek.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\file_io\unix\tempdir.c
-
-"$(INTDIR)\tempdir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\proc_mutex.c
-
-"$(INTDIR)\proc_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\thread_cond.c
-
-"$(INTDIR)\thread_cond.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\thread_mutex.c
-
-"$(INTDIR)\thread_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\locks\win32\thread_rwlock.c
-
-"$(INTDIR)\thread_rwlock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\memory\unix\apr_pools.c
-
-"$(INTDIR)\apr_pools.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\apr_app.c
-SOURCE=.\misc\win32\charset.c
-
-"$(INTDIR)\charset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\env.c
-
-"$(INTDIR)\env.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\errorcodes.c
-
-"$(INTDIR)\errorcodes.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\getopt.c
-
-"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\internal.c
-
-"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\misc.c
-
-"$(INTDIR)\misc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\otherchild.c
-
-"$(INTDIR)\otherchild.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\rand.c
-
-"$(INTDIR)\rand.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\start.c
-
-"$(INTDIR)\start.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\win32\utf8.c
-
-"$(INTDIR)\utf8.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\misc\unix\version.c
-
-"$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\mmap\unix\common.c
-
-"$(INTDIR)\common.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\mmap\win32\mmap.c
-
-"$(INTDIR)\mmap.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\inet_ntop.c
-
-"$(INTDIR)\inet_ntop.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\inet_pton.c
-
-"$(INTDIR)\inet_pton.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\multicast.c
-
-"$(INTDIR)\multicast.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\win32\sendrecv.c
-
-"$(INTDIR)\sendrecv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\sockaddr.c
-
-"$(INTDIR)\sockaddr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\unix\socket_util.c
-
-"$(INTDIR)\socket_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\win32\sockets.c
-
-"$(INTDIR)\sockets.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\network_io\win32\sockopt.c
-
-"$(INTDIR)\sockopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\passwd\apr_getpass.c
-
-"$(INTDIR)\apr_getpass.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\poll.c
-
-"$(INTDIR)\poll.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\pollcb.c
-
-"$(INTDIR)\pollcb.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\pollset.c
-
-"$(INTDIR)\pollset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\poll\unix\select.c
-
-"$(INTDIR)\select.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\random\unix\apr_random.c
-
-"$(INTDIR)\apr_random.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\random\unix\sha2.c
-
-"$(INTDIR)\sha2.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\random\unix\sha2_glue.c
-
-"$(INTDIR)\sha2_glue.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\shmem\win32\shm.c
-
-"$(INTDIR)\shm.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_cpystrn.c
-
-"$(INTDIR)\apr_cpystrn.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_fnmatch.c
-
-"$(INTDIR)\apr_fnmatch.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_snprintf.c
-
-"$(INTDIR)\apr_snprintf.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_strings.c
-
-"$(INTDIR)\apr_strings.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_strnatcmp.c
-
-"$(INTDIR)\apr_strnatcmp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\strings\apr_strtok.c
-
-"$(INTDIR)\apr_strtok.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\tables\apr_hash.c
-
-"$(INTDIR)\apr_hash.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\tables\apr_tables.c
-
-"$(INTDIR)\apr_tables.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\proc.c
-
-"$(INTDIR)\proc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\signals.c
-
-"$(INTDIR)\signals.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\thread.c
-
-"$(INTDIR)\thread.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\threadproc\win32\threadpriv.c
-
-"$(INTDIR)\threadpriv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\time\win32\time.c
-
-"$(INTDIR)\time.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\time\win32\timestr.c
-
-"$(INTDIR)\timestr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\user\win32\groupinfo.c
-
-"$(INTDIR)\groupinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\user\win32\userinfo.c
-
-"$(INTDIR)\userinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=.\include\apr.hw
-
-!IF  "$(CFG)" == "libapr - Win32 Release"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Release"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
-
-InputPath=.\include\apr.hw
-
-".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	<<tempfile.bat 
-	@echo off 
-	type .\include\apr.hw > .\include\apr.h
-<< 
-	
-
-!ENDIF 
-
-SOURCE=.\libapr.rc
-
-"$(INTDIR)\libapr.res" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
-	$(RSC) $(RSC_PROJ) $(SOURCE)
-
-
-
-!ENDIF 
-

Copied: vendor/apache/apr/1.5.2/libapr.mak (from rev 9273, vendor/apache/apr/dist/libapr.mak)
===================================================================
--- vendor/apache/apr/1.5.2/libapr.mak	                        (rev 0)
+++ vendor/apache/apr/1.5.2/libapr.mak	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,2118 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on libapr.dsp
+!IF "$(CFG)" == ""
+CFG=libapr - Win32 Release
+!MESSAGE No configuration specified. Defaulting to libapr - Win32 Release.
+!ENDIF 
+
+!IF "$(CFG)" != "libapr - Win32 Release" && "$(CFG)" != "libapr - Win32 Debug" && "$(CFG)" != "libapr - Win32 Release9x" && "$(CFG)" != "libapr - Win32 Debug9x" && "$(CFG)" != "libapr - x64 Release" && "$(CFG)" != "libapr - x64 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "libapr.mak" CFG="libapr - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "libapr - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - Win32 Release9x" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - Win32 Debug9x" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - x64 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "libapr - x64 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : ".\Release\gen_test_char.exe" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\libapr.res"
+	- at erase "$(INTDIR)\libapr_src.idb"
+	- at erase "$(INTDIR)\libapr_src.pdb"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\libapr-1.dll"
+	- at erase "$(OUTDIR)\libapr-1.exp"
+	- at erase "$(OUTDIR)\libapr-1.lib"
+	- at erase "$(OUTDIR)\libapr-1.pdb"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 /opt:ref 
+LINK32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj" \
+	"$(INTDIR)\libapr.res"
+
+"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+TargetPath=.\Release\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
+   if exist .\Release\libapr-1.dll.manifest mt.exe -manifest .\Release\libapr-1.dll.manifest -outputresource:.\Release\libapr-1.dll;2
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : ".\include\apr_escape_test_char.h" ".\Debug\gen_test_char.exe" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\libapr.res"
+	- at erase "$(INTDIR)\libapr_src.idb"
+	- at erase "$(INTDIR)\libapr_src.pdb"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\libapr-1.dll"
+	- at erase "$(OUTDIR)\libapr-1.exp"
+	- at erase "$(OUTDIR)\libapr-1.lib"
+	- at erase "$(OUTDIR)\libapr-1.pdb"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 
+LINK32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj" \
+	"$(INTDIR)\libapr.res"
+
+"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+TargetPath=.\Debug\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
+   if exist .\Debug\libapr-1.dll.manifest mt.exe -manifest .\Debug\libapr-1.dll.manifest -outputresource:.\Debug\libapr-1.dll;2
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+OUTDIR=.\9x\Release
+INTDIR=.\9x\Release
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+# Begin Custom Macros
+OutDir=.\9x\Release
+# End Custom Macros
+
+ALL : ".\include\apr_escape_test_char.h" ".\9x\Release\gen_test_char.exe" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\libapr.res"
+	- at erase "$(INTDIR)\libapr_src.idb"
+	- at erase "$(INTDIR)\libapr_src.pdb"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\libapr-1.dll"
+	- at erase "$(OUTDIR)\libapr-1.exp"
+	- at erase "$(OUTDIR)\libapr-1.lib"
+	- at erase "$(OUTDIR)\libapr-1.pdb"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 /opt:ref 
+LINK32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj" \
+	"$(INTDIR)\libapr.res"
+
+"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+TargetPath=.\9x\Release\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+# Begin Custom Macros
+OutDir=.\9x\Release
+# End Custom Macros
+
+"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
+   if exist .\9x\Release\libapr-1.dll.manifest mt.exe -manifest .\9x\Release\libapr-1.dll.manifest -outputresource:.\9x\Release\libapr-1.dll;2
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+OUTDIR=.\9x\Debug
+INTDIR=.\9x\Debug
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+# Begin Custom Macros
+OutDir=.\9x\Debug
+# End Custom Macros
+
+ALL : ".\include\apr_escape_test_char.h" ".\include\apr.h" ".\9x\Debug\gen_test_char.exe" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\libapr.res"
+	- at erase "$(INTDIR)\libapr_src.idb"
+	- at erase "$(INTDIR)\libapr_src.pdb"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\libapr-1.dll"
+	- at erase "$(OUTDIR)\libapr-1.exp"
+	- at erase "$(OUTDIR)\libapr-1.lib"
+	- at erase "$(OUTDIR)\libapr-1.pdb"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X86 
+LINK32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj" \
+	"$(INTDIR)\libapr.res"
+
+"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+TargetPath=.\9x\Debug\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+# Begin Custom Macros
+OutDir=.\9x\Debug
+# End Custom Macros
+
+"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
+   if exist .\9x\Debug\libapr-1.dll.manifest mt.exe -manifest .\9x\Debug\libapr-1.dll.manifest -outputresource:.\9x\Debug\libapr-1.dll;2
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+OUTDIR=.\x64\Release
+INTDIR=.\x64\Release
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+# Begin Custom Macros
+OutDir=.\x64\Release
+# End Custom Macros
+
+ALL : ".\x64\Release\gen_test_char.exe" ".\include\apr_escape_test_char.h" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\libapr.res"
+	- at erase "$(INTDIR)\libapr_src.idb"
+	- at erase "$(INTDIR)\libapr_src.pdb"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\libapr-1.dll"
+	- at erase "$(OUTDIR)\libapr-1.exp"
+	- at erase "$(OUTDIR)\libapr-1.lib"
+	- at erase "$(OUTDIR)\libapr-1.pdb"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "NDEBUG" /d "APR_VERSION_ONLY" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X64 /opt:ref 
+LINK32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj" \
+	"$(INTDIR)\libapr.res"
+
+"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+TargetPath=.\x64\Release\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+# Begin Custom Macros
+OutDir=.\x64\Release
+# End Custom Macros
+
+"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
+   if exist .\x64\Release\libapr-1.dll.manifest mt.exe -manifest .\x64\Release\libapr-1.dll.manifest -outputresource:.\x64\Release\libapr-1.dll;2
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+OUTDIR=.\x64\Debug
+INTDIR=.\x64\Debug
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+# Begin Custom Macros
+OutDir=.\x64\Debug
+# End Custom Macros
+
+ALL : ".\x64\Debug\gen_test_char.exe" ".\include\apr_escape_test_char.h" "$(OUTDIR)\libapr-1.dll" "$(DS_POSTBUILD_DEP)"
+
+
+CLEAN :
+	- at erase "$(INTDIR)\apr_atomic.obj"
+	- at erase "$(INTDIR)\apr_cpystrn.obj"
+	- at erase "$(INTDIR)\apr_escape.obj"
+	- at erase "$(INTDIR)\apr_fnmatch.obj"
+	- at erase "$(INTDIR)\apr_getpass.obj"
+	- at erase "$(INTDIR)\apr_hash.obj"
+	- at erase "$(INTDIR)\apr_pools.obj"
+	- at erase "$(INTDIR)\apr_random.obj"
+	- at erase "$(INTDIR)\apr_skiplist.obj"
+	- at erase "$(INTDIR)\apr_snprintf.obj"
+	- at erase "$(INTDIR)\apr_strings.obj"
+	- at erase "$(INTDIR)\apr_strnatcmp.obj"
+	- at erase "$(INTDIR)\apr_strtok.obj"
+	- at erase "$(INTDIR)\apr_tables.obj"
+	- at erase "$(INTDIR)\buffer.obj"
+	- at erase "$(INTDIR)\charset.obj"
+	- at erase "$(INTDIR)\common.obj"
+	- at erase "$(INTDIR)\copy.obj"
+	- at erase "$(INTDIR)\dir.obj"
+	- at erase "$(INTDIR)\dso.obj"
+	- at erase "$(INTDIR)\env.obj"
+	- at erase "$(INTDIR)\errorcodes.obj"
+	- at erase "$(INTDIR)\fileacc.obj"
+	- at erase "$(INTDIR)\filedup.obj"
+	- at erase "$(INTDIR)\filepath.obj"
+	- at erase "$(INTDIR)\filepath_util.obj"
+	- at erase "$(INTDIR)\filestat.obj"
+	- at erase "$(INTDIR)\filesys.obj"
+	- at erase "$(INTDIR)\flock.obj"
+	- at erase "$(INTDIR)\fullrw.obj"
+	- at erase "$(INTDIR)\getopt.obj"
+	- at erase "$(INTDIR)\groupinfo.obj"
+	- at erase "$(INTDIR)\inet_ntop.obj"
+	- at erase "$(INTDIR)\inet_pton.obj"
+	- at erase "$(INTDIR)\internal.obj"
+	- at erase "$(INTDIR)\libapr.res"
+	- at erase "$(INTDIR)\libapr_src.idb"
+	- at erase "$(INTDIR)\libapr_src.pdb"
+	- at erase "$(INTDIR)\misc.obj"
+	- at erase "$(INTDIR)\mktemp.obj"
+	- at erase "$(INTDIR)\mmap.obj"
+	- at erase "$(INTDIR)\multicast.obj"
+	- at erase "$(INTDIR)\open.obj"
+	- at erase "$(INTDIR)\otherchild.obj"
+	- at erase "$(INTDIR)\pipe.obj"
+	- at erase "$(INTDIR)\poll.obj"
+	- at erase "$(INTDIR)\pollcb.obj"
+	- at erase "$(INTDIR)\pollset.obj"
+	- at erase "$(INTDIR)\proc.obj"
+	- at erase "$(INTDIR)\proc_mutex.obj"
+	- at erase "$(INTDIR)\rand.obj"
+	- at erase "$(INTDIR)\readwrite.obj"
+	- at erase "$(INTDIR)\seek.obj"
+	- at erase "$(INTDIR)\select.obj"
+	- at erase "$(INTDIR)\sendrecv.obj"
+	- at erase "$(INTDIR)\sha2.obj"
+	- at erase "$(INTDIR)\sha2_glue.obj"
+	- at erase "$(INTDIR)\shm.obj"
+	- at erase "$(INTDIR)\signals.obj"
+	- at erase "$(INTDIR)\sockaddr.obj"
+	- at erase "$(INTDIR)\socket_util.obj"
+	- at erase "$(INTDIR)\sockets.obj"
+	- at erase "$(INTDIR)\sockopt.obj"
+	- at erase "$(INTDIR)\start.obj"
+	- at erase "$(INTDIR)\tempdir.obj"
+	- at erase "$(INTDIR)\thread.obj"
+	- at erase "$(INTDIR)\thread_cond.obj"
+	- at erase "$(INTDIR)\thread_mutex.obj"
+	- at erase "$(INTDIR)\thread_rwlock.obj"
+	- at erase "$(INTDIR)\threadpriv.obj"
+	- at erase "$(INTDIR)\time.obj"
+	- at erase "$(INTDIR)\timestr.obj"
+	- at erase "$(INTDIR)\userinfo.obj"
+	- at erase "$(INTDIR)\utf8.obj"
+	- at erase "$(INTDIR)\version.obj"
+	- at erase "$(OUTDIR)\libapr-1.dll"
+	- at erase "$(OUTDIR)\libapr-1.exp"
+	- at erase "$(OUTDIR)\libapr-1.lib"
+	- at erase "$(OUTDIR)\libapr-1.pdb"
+	- at erase ".\include\apr.h"
+	- at erase ".\include\apr_gen_test_char.h"
+	- at erase "$(OUTDIR)\gen_test_char.exe"
+	- at erase "$(OUTDIR)\gen_test_char.obj"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\libapr_src" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libapr.res" /i "./include" /d "_DEBUG" /d "APR_VERSION_ONLY" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapr.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib shell32.lib rpcrt4.lib /nologo /base:"0x6EEC0000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\libapr-1.pdb" /debug /out:"$(OUTDIR)\libapr-1.dll" /implib:"$(OUTDIR)\libapr-1.lib" /MACHINE:X64 
+LINK32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\apr_escape.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\apr_skiplist.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj" \
+	"$(INTDIR)\libapr.res"
+
+"$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+TargetPath=.\x64\Debug\libapr-1.dll
+SOURCE="$(InputPath)"
+PostBuild_Desc=Embed .manifest
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+# Begin Custom Macros
+OutDir=.\x64\Debug
+# End Custom Macros
+
+"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\libapr-1.dll"
+   if exist .\x64\Debug\libapr-1.dll.manifest mt.exe -manifest .\x64\Debug\libapr-1.dll.manifest -outputresource:.\x64\Debug\libapr-1.dll;2
+	echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("libapr.dep")
+!INCLUDE "libapr.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "libapr.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "libapr - Win32 Release" || "$(CFG)" == "libapr - Win32 Debug" || "$(CFG)" == "libapr - Win32 Release9x" || "$(CFG)" == "libapr - Win32 Debug9x" || "$(CFG)" == "libapr - x64 Release" || "$(CFG)" == "libapr - x64 Debug"
+SOURCE=.\atomic\win32\apr_atomic.c
+
+"$(INTDIR)\apr_atomic.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\dso\win32\dso.c
+
+"$(INTDIR)\dso.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\encoding\apr_escape.c
+
+"$(INTDIR)\apr_escape.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr_escape.h" ".\include\apr_escape_test_char.h" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\buffer.c
+
+"$(INTDIR)\buffer.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\copy.c
+
+"$(INTDIR)\copy.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\dir.c
+
+"$(INTDIR)\dir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\fileacc.c
+
+"$(INTDIR)\fileacc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filedup.c
+
+"$(INTDIR)\filedup.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filepath.c
+
+"$(INTDIR)\filepath.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\filepath_util.c
+
+"$(INTDIR)\filepath_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filestat.c
+
+"$(INTDIR)\filestat.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filesys.c
+
+"$(INTDIR)\filesys.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\flock.c
+
+"$(INTDIR)\flock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\fullrw.c
+
+"$(INTDIR)\fullrw.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\mktemp.c
+
+"$(INTDIR)\mktemp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\open.c
+
+"$(INTDIR)\open.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\pipe.c
+
+"$(INTDIR)\pipe.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\readwrite.c
+
+"$(INTDIR)\readwrite.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\seek.c
+
+"$(INTDIR)\seek.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\tempdir.c
+
+"$(INTDIR)\tempdir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\proc_mutex.c
+
+"$(INTDIR)\proc_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_cond.c
+
+"$(INTDIR)\thread_cond.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_mutex.c
+
+"$(INTDIR)\thread_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_rwlock.c
+
+"$(INTDIR)\thread_rwlock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\memory\unix\apr_pools.c
+
+"$(INTDIR)\apr_pools.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\apr_app.c
+SOURCE=.\misc\win32\charset.c
+
+"$(INTDIR)\charset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\env.c
+
+"$(INTDIR)\env.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\errorcodes.c
+
+"$(INTDIR)\errorcodes.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\getopt.c
+
+"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\internal.c
+
+"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\misc.c
+
+"$(INTDIR)\misc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\otherchild.c
+
+"$(INTDIR)\otherchild.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\rand.c
+
+"$(INTDIR)\rand.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\start.c
+
+"$(INTDIR)\start.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\utf8.c
+
+"$(INTDIR)\utf8.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\version.c
+
+"$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\mmap\unix\common.c
+
+"$(INTDIR)\common.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\mmap\win32\mmap.c
+
+"$(INTDIR)\mmap.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\inet_ntop.c
+
+"$(INTDIR)\inet_ntop.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\inet_pton.c
+
+"$(INTDIR)\inet_pton.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\multicast.c
+
+"$(INTDIR)\multicast.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sendrecv.c
+
+"$(INTDIR)\sendrecv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\sockaddr.c
+
+"$(INTDIR)\sockaddr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\socket_util.c
+
+"$(INTDIR)\socket_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sockets.c
+
+"$(INTDIR)\sockets.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sockopt.c
+
+"$(INTDIR)\sockopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\passwd\apr_getpass.c
+
+"$(INTDIR)\apr_getpass.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\poll.c
+
+"$(INTDIR)\poll.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\pollcb.c
+
+"$(INTDIR)\pollcb.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\pollset.c
+
+"$(INTDIR)\pollset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\select.c
+
+"$(INTDIR)\select.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\apr_random.c
+
+"$(INTDIR)\apr_random.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\sha2.c
+
+"$(INTDIR)\sha2.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\sha2_glue.c
+
+"$(INTDIR)\sha2_glue.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\shmem\win32\shm.c
+
+"$(INTDIR)\shm.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_cpystrn.c
+
+"$(INTDIR)\apr_cpystrn.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_fnmatch.c
+
+"$(INTDIR)\apr_fnmatch.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_snprintf.c
+
+"$(INTDIR)\apr_snprintf.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strings.c
+
+"$(INTDIR)\apr_strings.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strnatcmp.c
+
+"$(INTDIR)\apr_strnatcmp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strtok.c
+
+"$(INTDIR)\apr_strtok.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_hash.c
+
+"$(INTDIR)\apr_hash.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_skiplist.c
+
+"$(INTDIR)\apr_skiplist.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_tables.c
+
+"$(INTDIR)\apr_tables.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\proc.c
+
+"$(INTDIR)\proc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\signals.c
+
+"$(INTDIR)\signals.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\thread.c
+
+"$(INTDIR)\thread.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\threadpriv.c
+
+"$(INTDIR)\threadpriv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\time\win32\time.c
+
+"$(INTDIR)\time.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\time\win32\timestr.c
+
+"$(INTDIR)\timestr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\user\win32\groupinfo.c
+
+"$(INTDIR)\groupinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\user\win32\userinfo.c
+
+"$(INTDIR)\userinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\include\apr.hw
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ENDIF 
+
+SOURCE=.\include\apr_escape.h
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+InputPath=.\include\apr_escape.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\Release\gen_test_char /Fe.\Release\gen_test_char.exe .\tools\gen_test_char.c 
+	.\Release\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+InputPath=.\include\apr_escape.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\Debug\gen_test_char /Fe.\Debug\gen_test_char.exe .\tools\gen_test_char.c 
+	.\Debug\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+InputPath=.\include\apr_escape.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\Release\gen_test_char /Fe.\9x\Release\gen_test_char.exe .\tools\gen_test_char.c 
+	.\9x\Release\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+InputPath=.\include\apr_escape.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\9x\Debug\gen_test_char /Fe.\9x\Debug\gen_test_char.exe .\tools\gen_test_char.c 
+	.\9x\Debug\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+InputPath=.\include\apr_escape.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\Release\gen_test_char /Fe.\x64\Release\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\Release\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+InputPath=.\include\apr_escape.h
+
+"$(INTDIR)\gen_test_char.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	cl.exe /nologo /W3 /EHsc /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /I ".\include" /Fo.\x64\Debug\gen_test_char /Fe.\x64\Debug\gen_test_char.exe .\tools\gen_test_char.c 
+	.\x64\Debug\gen_test_char.exe > .\include\apr_escape_test_char.h
+<< 
+	
+
+!ENDIF 
+
+SOURCE=.\include\apr_want.h
+
+!IF  "$(CFG)" == "libapr - Win32 Release"
+
+InputPath=.\include\apr_want.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug"
+
+InputPath=.\include\apr_want.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Release9x"
+
+InputPath=.\include\apr_want.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - Win32 Debug9x"
+
+InputPath=.\include\apr_want.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Release"
+
+InputPath=.\include\apr_want.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "libapr - x64 Debug"
+
+InputPath=.\include\apr_want.h
+
+".\include\apr_escape_test_char.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ENDIF 
+
+SOURCE=.\libapr.rc
+
+"$(INTDIR)\libapr.res" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(RSC) $(RSC_PROJ) $(SOURCE)
+
+
+
+!ENDIF 
+

Deleted: vendor/apache/apr/1.5.2/locks/beos/thread_cond.c
===================================================================
--- vendor/apache/apr/dist/locks/beos/thread_cond.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/locks/beos/thread_cond.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,185 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_thread_mutex.h"
-#include "apr_arch_thread_cond.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-
-static apr_status_t thread_cond_cleanup(void *data)
-{
-    struct waiter *w;
-    apr_thread_cond_t *cond = (apr_thread_cond_t *)data;
-
-    acquire_sem(cond->lock);
-    delete_sem(cond->lock);
-
-    return APR_SUCCESS;
-}
-
-static struct waiter_t *make_waiter(apr_pool_t *pool)
-{
-    struct waiter_t *w = (struct waiter_t*)
-                       apr_palloc(pool, sizeof(struct waiter_t));
-    if (w == NULL)
-        return NULL;
-      
-    w->sem  = create_sem(0, "apr conditional waiter");
-    if (w->sem < 0)
-        return NULL;
-
-    APR_RING_ELEM_INIT(w, link);
-    
-    return w;
-}
-  
-APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond,
-                                                 apr_pool_t *pool)
-{
-    apr_thread_cond_t *new_cond;
-    sem_id rv;
-    int i;
-
-    new_cond = (apr_thread_cond_t *)apr_palloc(pool, sizeof(apr_thread_cond_t));
-
-    if (new_cond == NULL)
-        return APR_ENOMEM;
-
-    if ((rv = create_sem(1, "apr conditional lock")) < B_OK)
-        return rv;
-    
-    new_cond->lock = rv;
-    new_cond->pool = pool;
-    APR_RING_INIT(&new_cond->alist, waiter_t, link);
-    APR_RING_INIT(&new_cond->flist, waiter_t, link);
-        
-    for (i=0;i < 10 ;i++) {
-        struct waiter_t *nw = make_waiter(pool);
-        APR_RING_INSERT_TAIL(&new_cond->flist, nw, waiter_t, link);
-    }
-
-    apr_pool_cleanup_register(new_cond->pool,
-                              (void *)new_cond, thread_cond_cleanup,
-                              apr_pool_cleanup_null);
-
-    *cond = new_cond;
-    return APR_SUCCESS;
-}
-
-
-static apr_status_t do_wait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex,
-                            int timeout)
-{
-    struct waiter_t *wait;
-    thread_id cth = find_thread(NULL);
-    apr_status_t rv;
-    int flags = B_RELATIVE_TIMEOUT;
-    
-    /* We must be the owner of the mutex or we can't do this... */    
-    if (mutex->owner != cth) {
-        /* What should we return??? */
-        return APR_EINVAL;
-    }
-
-    acquire_sem(cond->lock);
-    wait = APR_RING_FIRST(&cond->flist);
-    if (wait)
-        APR_RING_REMOVE(wait, link);
-    else
-        wait = make_waiter(cond->pool);   
-    APR_RING_INSERT_TAIL(&cond->alist, wait, waiter_t, link);
-    cond->condlock = mutex;
-    release_sem(cond->lock);
-       
-    apr_thread_mutex_unlock(cond->condlock);
-
-    if (timeout == 0)
-        flags = 0;
-        
-    rv = acquire_sem_etc(wait->sem, 1, flags, timeout);
-
-    apr_thread_mutex_lock(cond->condlock);
-    
-    if (rv != B_OK)
-        if (rv == B_TIMED_OUT)
-            return APR_TIMEUP;
-        return rv;       
-
-    acquire_sem(cond->lock);
-    APR_RING_REMOVE(wait, link);
-    APR_RING_INSERT_TAIL(&cond->flist, wait, waiter_t, link);
-    release_sem(cond->lock);
-    
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond,
-                                               apr_thread_mutex_t *mutex)
-{
-    return do_wait(cond, mutex, 0);
-}
-
-APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond,
-                                                    apr_thread_mutex_t *mutex,
-                                                    apr_interval_time_t timeout)
-{
-    return do_wait(cond, mutex, timeout);
-}
-
-APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond)
-{
-    struct waiter_t *wake;
-
-    acquire_sem(cond->lock);    
-    if (!APR_RING_EMPTY(&cond->alist, waiter_t, link)) {
-        wake = APR_RING_FIRST(&cond->alist);
-        APR_RING_REMOVE(wake, link);
-        release_sem(wake->sem);
-        APR_RING_INSERT_TAIL(&cond->flist, wake, waiter_t, link);
-    }
-    release_sem(cond->lock);
-    
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond)
-{
-    struct waiter_t *wake;
-    
-    acquire_sem(cond->lock);
-    while (! APR_RING_EMPTY(&cond->alist, waiter_t, link)) {
-        wake = APR_RING_FIRST(&cond->alist);
-        APR_RING_REMOVE(wake, link);
-        release_sem(wake->sem);
-        APR_RING_INSERT_TAIL(&cond->flist, wake, waiter_t, link);
-    }
-    release_sem(cond->lock);
-    
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond)
-{
-    apr_status_t stat;
-    if ((stat = thread_cond_cleanup(cond)) == APR_SUCCESS) {
-        apr_pool_cleanup_kill(cond->pool, cond, thread_cond_cleanup);
-        return APR_SUCCESS;
-    }
-    return stat;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(thread_cond)
-

Copied: vendor/apache/apr/1.5.2/locks/beos/thread_cond.c (from rev 9273, vendor/apache/apr/dist/locks/beos/thread_cond.c)
===================================================================
--- vendor/apache/apr/1.5.2/locks/beos/thread_cond.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/locks/beos/thread_cond.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,186 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_thread_mutex.h"
+#include "apr_arch_thread_cond.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+
+static apr_status_t thread_cond_cleanup(void *data)
+{
+    struct waiter *w;
+    apr_thread_cond_t *cond = (apr_thread_cond_t *)data;
+
+    acquire_sem(cond->lock);
+    delete_sem(cond->lock);
+
+    return APR_SUCCESS;
+}
+
+static struct waiter_t *make_waiter(apr_pool_t *pool)
+{
+    struct waiter_t *w = (struct waiter_t*)
+                       apr_palloc(pool, sizeof(struct waiter_t));
+    if (w == NULL)
+        return NULL;
+      
+    w->sem  = create_sem(0, "apr conditional waiter");
+    if (w->sem < 0)
+        return NULL;
+
+    APR_RING_ELEM_INIT(w, link);
+    
+    return w;
+}
+  
+APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond,
+                                                 apr_pool_t *pool)
+{
+    apr_thread_cond_t *new_cond;
+    sem_id rv;
+    int i;
+
+    new_cond = (apr_thread_cond_t *)apr_palloc(pool, sizeof(apr_thread_cond_t));
+
+    if (new_cond == NULL)
+        return APR_ENOMEM;
+
+    if ((rv = create_sem(1, "apr conditional lock")) < B_OK)
+        return rv;
+    
+    new_cond->lock = rv;
+    new_cond->pool = pool;
+    APR_RING_INIT(&new_cond->alist, waiter_t, link);
+    APR_RING_INIT(&new_cond->flist, waiter_t, link);
+        
+    for (i=0;i < 10 ;i++) {
+        struct waiter_t *nw = make_waiter(pool);
+        APR_RING_INSERT_TAIL(&new_cond->flist, nw, waiter_t, link);
+    }
+
+    apr_pool_cleanup_register(new_cond->pool,
+                              (void *)new_cond, thread_cond_cleanup,
+                              apr_pool_cleanup_null);
+
+    *cond = new_cond;
+    return APR_SUCCESS;
+}
+
+
+static apr_status_t do_wait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex,
+                            int timeout)
+{
+    struct waiter_t *wait;
+    thread_id cth = find_thread(NULL);
+    apr_status_t rv;
+    int flags = B_RELATIVE_TIMEOUT;
+    
+    /* We must be the owner of the mutex or we can't do this... */    
+    if (mutex->owner != cth) {
+        /* What should we return??? */
+        return APR_EINVAL;
+    }
+
+    acquire_sem(cond->lock);
+    wait = APR_RING_FIRST(&cond->flist);
+    if (wait)
+        APR_RING_REMOVE(wait, link);
+    else
+        wait = make_waiter(cond->pool);   
+    APR_RING_INSERT_TAIL(&cond->alist, wait, waiter_t, link);
+    cond->condlock = mutex;
+    release_sem(cond->lock);
+       
+    apr_thread_mutex_unlock(cond->condlock);
+
+    if (timeout == 0)
+        flags = 0;
+        
+    rv = acquire_sem_etc(wait->sem, 1, flags, timeout);
+
+    apr_thread_mutex_lock(cond->condlock);
+    
+    if (rv != B_OK) {
+        if (rv == B_TIMED_OUT)
+            return APR_TIMEUP;
+        return rv;       
+    }
+
+    acquire_sem(cond->lock);
+    APR_RING_REMOVE(wait, link);
+    APR_RING_INSERT_TAIL(&cond->flist, wait, waiter_t, link);
+    release_sem(cond->lock);
+    
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond,
+                                               apr_thread_mutex_t *mutex)
+{
+    return do_wait(cond, mutex, 0);
+}
+
+APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond,
+                                                    apr_thread_mutex_t *mutex,
+                                                    apr_interval_time_t timeout)
+{
+    return do_wait(cond, mutex, timeout);
+}
+
+APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond)
+{
+    struct waiter_t *wake;
+
+    acquire_sem(cond->lock);    
+    if (!APR_RING_EMPTY(&cond->alist, waiter_t, link)) {
+        wake = APR_RING_FIRST(&cond->alist);
+        APR_RING_REMOVE(wake, link);
+        release_sem(wake->sem);
+        APR_RING_INSERT_TAIL(&cond->flist, wake, waiter_t, link);
+    }
+    release_sem(cond->lock);
+    
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond)
+{
+    struct waiter_t *wake;
+    
+    acquire_sem(cond->lock);
+    while (! APR_RING_EMPTY(&cond->alist, waiter_t, link)) {
+        wake = APR_RING_FIRST(&cond->alist);
+        APR_RING_REMOVE(wake, link);
+        release_sem(wake->sem);
+        APR_RING_INSERT_TAIL(&cond->flist, wake, waiter_t, link);
+    }
+    release_sem(cond->lock);
+    
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond)
+{
+    apr_status_t stat;
+    if ((stat = thread_cond_cleanup(cond)) == APR_SUCCESS) {
+        apr_pool_cleanup_kill(cond->pool, cond, thread_cond_cleanup);
+        return APR_SUCCESS;
+    }
+    return stat;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(thread_cond)
+

Deleted: vendor/apache/apr/1.5.2/locks/unix/proc_mutex.c
===================================================================
--- vendor/apache/apr/dist/locks/unix/proc_mutex.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/locks/unix/proc_mutex.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,982 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_strings.h"
-#include "apr_arch_proc_mutex.h"
-#include "apr_arch_file_io.h" /* for apr_mkstemp() */
-#include "apr_hash.h"
-
-APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex)
-{
-    return apr_pool_cleanup_run(mutex->pool, mutex, apr_proc_mutex_cleanup);
-}
-
-#if APR_HAS_POSIXSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || \
-    APR_HAS_PROC_PTHREAD_SERIALIZE || APR_HAS_SYSVSEM_SERIALIZE
-static apr_status_t proc_mutex_no_child_init(apr_proc_mutex_t **mutex,
-                                             apr_pool_t *cont,
-                                             const char *fname)
-{
-    return APR_SUCCESS;
-}
-#endif    
-
-#if APR_HAS_POSIXSEM_SERIALIZE
-
-#ifndef SEM_FAILED
-#define SEM_FAILED (-1)
-#endif
-
-static apr_status_t proc_mutex_posix_cleanup(void *mutex_)
-{
-    apr_proc_mutex_t *mutex = mutex_;
-    
-    if (sem_close(mutex->psem_interproc) < 0) {
-        return errno;
-    }
-
-    return APR_SUCCESS;
-}    
-
-static unsigned int rshash (char *p) {
-    /* hash function from Robert Sedgwicks 'Algorithms in C' book */
-   unsigned int b    = 378551;
-   unsigned int a    = 63689;
-   unsigned int retval = 0;
-
-   for( ; *p; p++)
-   {
-      retval = retval * a + (*p);
-      a *= b;
-   }
-
-   return retval;
-}
-
-static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex,
-                                            const char *fname)
-{
-    #define APR_POSIXSEM_NAME_MIN 13
-    sem_t *psem;
-    char semname[32];
-    
-    new_mutex->interproc = apr_palloc(new_mutex->pool,
-                                      sizeof(*new_mutex->interproc));
-    /*
-     * This bogusness is to follow what appears to be the
-     * lowest common denominator in Posix semaphore naming:
-     *   - start with '/'
-     *   - be at most 14 chars
-     *   - be unique and not match anything on the filesystem
-     *
-     * Because of this, we use fname to generate a (unique) hash
-     * and use that as the name of the semaphore. If no filename was
-     * given, we create one based on the time. We tuck the name
-     * away, since it might be useful for debugging. We use 2 hashing
-     * functions to try to avoid collisions.
-     *
-     * To  make this as robust as possible, we initially try something
-     * larger (and hopefully more unique) and gracefully fail down to the
-     * LCD above.
-     *
-     * NOTE: Darwin (Mac OS X) seems to be the most restrictive
-     * implementation. Versions previous to Darwin 6.2 had the 14
-     * char limit, but later rev's allow up to 31 characters.
-     *
-     */
-    if (fname) {
-        apr_ssize_t flen = strlen(fname);
-        char *p = apr_pstrndup(new_mutex->pool, fname, strlen(fname));
-        unsigned int h1, h2;
-        h1 = apr_hashfunc_default((const char *)p, &flen);
-        h2 = rshash(p);
-        apr_snprintf(semname, sizeof(semname), "/ApR.%xH%x", h1, h2);
-    } else {
-        apr_time_t now;
-        unsigned long sec;
-        unsigned long usec;
-        now = apr_time_now();
-        sec = apr_time_sec(now);
-        usec = apr_time_usec(now);
-        apr_snprintf(semname, sizeof(semname), "/ApR.%lxZ%lx", sec, usec);
-    }
-    psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1);
-    if (psem == (sem_t *)SEM_FAILED) {
-        if (errno == ENAMETOOLONG) {
-            /* Oh well, good try */
-            semname[APR_POSIXSEM_NAME_MIN] = '\0';
-        } else {
-            return errno;
-        }
-        psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1);
-    }
-
-    if (psem == (sem_t *)SEM_FAILED) {
-        return errno;
-    }
-    /* Ahhh. The joys of Posix sems. Predelete it... */
-    sem_unlink(semname);
-    new_mutex->psem_interproc = psem;
-    new_mutex->fname = apr_pstrdup(new_mutex->pool, semname);
-    apr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex,
-                              apr_proc_mutex_cleanup, 
-                              apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex)
-{
-    if (sem_wait(mutex->psem_interproc) < 0) {
-        return errno;
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_posix_tryacquire(apr_proc_mutex_t *mutex)
-{
-    if (sem_trywait(mutex->psem_interproc) < 0) {
-        if (errno == EAGAIN) {
-            return APR_EBUSY;
-        }
-        return errno;
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_posix_release(apr_proc_mutex_t *mutex)
-{
-    mutex->curr_locked = 0;
-    if (sem_post(mutex->psem_interproc) < 0) {
-        /* any failure is probably fatal, so no big deal to leave
-         * ->curr_locked at 0. */
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-static const apr_proc_mutex_unix_lock_methods_t mutex_posixsem_methods =
-{
-#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(POSIXSEM_IS_GLOBAL)
-    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
-#else
-    0,
-#endif
-    proc_mutex_posix_create,
-    proc_mutex_posix_acquire,
-    proc_mutex_posix_tryacquire,
-    proc_mutex_posix_release,
-    proc_mutex_posix_cleanup,
-    proc_mutex_no_child_init,
-    "posixsem"
-};
-
-#endif /* Posix sem implementation */
-
-#if APR_HAS_SYSVSEM_SERIALIZE
-
-static struct sembuf proc_mutex_op_on;
-static struct sembuf proc_mutex_op_try;
-static struct sembuf proc_mutex_op_off;
-
-static void proc_mutex_sysv_setup(void)
-{
-    proc_mutex_op_on.sem_num = 0;
-    proc_mutex_op_on.sem_op = -1;
-    proc_mutex_op_on.sem_flg = SEM_UNDO;
-    proc_mutex_op_try.sem_num = 0;
-    proc_mutex_op_try.sem_op = -1;
-    proc_mutex_op_try.sem_flg = SEM_UNDO | IPC_NOWAIT;
-    proc_mutex_op_off.sem_num = 0;
-    proc_mutex_op_off.sem_op = 1;
-    proc_mutex_op_off.sem_flg = SEM_UNDO;
-}
-
-static apr_status_t proc_mutex_sysv_cleanup(void *mutex_)
-{
-    apr_proc_mutex_t *mutex=mutex_;
-    union semun ick;
-    
-    if (mutex->interproc->filedes != -1) {
-        ick.val = 0;
-        semctl(mutex->interproc->filedes, 0, IPC_RMID, ick);
-    }
-    return APR_SUCCESS;
-}    
-
-static apr_status_t proc_mutex_sysv_create(apr_proc_mutex_t *new_mutex,
-                                           const char *fname)
-{
-    union semun ick;
-    apr_status_t rv;
-    
-    new_mutex->interproc = apr_palloc(new_mutex->pool, sizeof(*new_mutex->interproc));
-    new_mutex->interproc->filedes = semget(IPC_PRIVATE, 1, IPC_CREAT | 0600);
-
-    if (new_mutex->interproc->filedes < 0) {
-        rv = errno;
-        proc_mutex_sysv_cleanup(new_mutex);
-        return rv;
-    }
-    ick.val = 1;
-    if (semctl(new_mutex->interproc->filedes, 0, SETVAL, ick) < 0) {
-        rv = errno;
-        proc_mutex_sysv_cleanup(new_mutex);
-        return rv;
-    }
-    new_mutex->curr_locked = 0;
-    apr_pool_cleanup_register(new_mutex->pool,
-                              (void *)new_mutex, apr_proc_mutex_cleanup, 
-                              apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_sysv_acquire(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    do {
-        rc = semop(mutex->interproc->filedes, &proc_mutex_op_on, 1);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        return errno;
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_sysv_tryacquire(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    do {
-        rc = semop(mutex->interproc->filedes, &proc_mutex_op_try, 1);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        if (errno == EAGAIN) {
-            return APR_EBUSY;
-        }
-        return errno;
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_sysv_release(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    mutex->curr_locked = 0;
-    do {
-        rc = semop(mutex->interproc->filedes, &proc_mutex_op_off, 1);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-static const apr_proc_mutex_unix_lock_methods_t mutex_sysv_methods =
-{
-#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(SYSVSEM_IS_GLOBAL)
-    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
-#else
-    0,
-#endif
-    proc_mutex_sysv_create,
-    proc_mutex_sysv_acquire,
-    proc_mutex_sysv_tryacquire,
-    proc_mutex_sysv_release,
-    proc_mutex_sysv_cleanup,
-    proc_mutex_no_child_init,
-    "sysvsem"
-};
-
-#endif /* SysV sem implementation */
-
-#if APR_HAS_PROC_PTHREAD_SERIALIZE
-
-static apr_status_t proc_mutex_proc_pthread_cleanup(void *mutex_)
-{
-    apr_proc_mutex_t *mutex=mutex_;
-    apr_status_t rv;
-
-    if (mutex->curr_locked == 1) {
-        if ((rv = pthread_mutex_unlock(mutex->pthread_interproc))) {
-#ifdef HAVE_ZOS_PTHREADS
-            rv = errno;
-#endif
-            return rv;
-        }
-    }
-    /* curr_locked is set to -1 until the mutex has been created */
-    if (mutex->curr_locked != -1) {
-        if ((rv = pthread_mutex_destroy(mutex->pthread_interproc))) {
-#ifdef HAVE_ZOS_PTHREADS
-            rv = errno;
-#endif
-            return rv;
-        }
-    }
-    if (munmap((caddr_t)mutex->pthread_interproc, sizeof(pthread_mutex_t))) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_proc_pthread_create(apr_proc_mutex_t *new_mutex,
-                                                   const char *fname)
-{
-    apr_status_t rv;
-    int fd;
-    pthread_mutexattr_t mattr;
-
-    fd = open("/dev/zero", O_RDWR);
-    if (fd < 0) {
-        return errno;
-    }
-
-    new_mutex->pthread_interproc = (pthread_mutex_t *)mmap(
-                                       (caddr_t) 0, 
-                                       sizeof(pthread_mutex_t), 
-                                       PROT_READ | PROT_WRITE, MAP_SHARED,
-                                       fd, 0); 
-    if (new_mutex->pthread_interproc == (pthread_mutex_t *) (caddr_t) -1) {
-        close(fd);
-        return errno;
-    }
-    close(fd);
-
-    new_mutex->curr_locked = -1; /* until the mutex has been created */
-
-    if ((rv = pthread_mutexattr_init(&mattr))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-        proc_mutex_proc_pthread_cleanup(new_mutex);
-        return rv;
-    }
-    if ((rv = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-        proc_mutex_proc_pthread_cleanup(new_mutex);
-        pthread_mutexattr_destroy(&mattr);
-        return rv;
-    }
-
-#ifdef HAVE_PTHREAD_MUTEX_ROBUST
-    if ((rv = pthread_mutexattr_setrobust_np(&mattr, 
-                                               PTHREAD_MUTEX_ROBUST_NP))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-        proc_mutex_proc_pthread_cleanup(new_mutex);
-        pthread_mutexattr_destroy(&mattr);
-        return rv;
-    }
-    if ((rv = pthread_mutexattr_setprotocol(&mattr, PTHREAD_PRIO_INHERIT))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-        proc_mutex_proc_pthread_cleanup(new_mutex);
-        pthread_mutexattr_destroy(&mattr);
-        return rv;
-    }
-#endif /* HAVE_PTHREAD_MUTEX_ROBUST */
-
-    if ((rv = pthread_mutex_init(new_mutex->pthread_interproc, &mattr))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-        proc_mutex_proc_pthread_cleanup(new_mutex);
-        pthread_mutexattr_destroy(&mattr);
-        return rv;
-    }
-
-    new_mutex->curr_locked = 0; /* mutex created now */
-
-    if ((rv = pthread_mutexattr_destroy(&mattr))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-        proc_mutex_proc_pthread_cleanup(new_mutex);
-        return rv;
-    }
-
-    apr_pool_cleanup_register(new_mutex->pool,
-                              (void *)new_mutex,
-                              apr_proc_mutex_cleanup, 
-                              apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_proc_pthread_acquire(apr_proc_mutex_t *mutex)
-{
-    apr_status_t rv;
-
-    if ((rv = pthread_mutex_lock(mutex->pthread_interproc))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-#ifdef HAVE_PTHREAD_MUTEX_ROBUST
-        /* Okay, our owner died.  Let's try to make it consistent again. */
-        if (rv == EOWNERDEAD) {
-            pthread_mutex_consistent_np(mutex->pthread_interproc);
-        }
-        else
-            return rv;
-#else
-        return rv;
-#endif
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_proc_pthread_tryacquire(apr_proc_mutex_t *mutex)
-{
-    apr_status_t rv;
- 
-    if ((rv = pthread_mutex_trylock(mutex->pthread_interproc))) {
-#ifdef HAVE_ZOS_PTHREADS 
-        rv = errno;
-#endif
-        if (rv == EBUSY) {
-            return APR_EBUSY;
-        }
-#ifdef HAVE_PTHREAD_MUTEX_ROBUST
-        /* Okay, our owner died.  Let's try to make it consistent again. */
-        if (rv == EOWNERDEAD) {
-            pthread_mutex_consistent_np(mutex->pthread_interproc);
-            rv = APR_SUCCESS;
-        }
-        else
-            return rv;
-#else
-        return rv;
-#endif
-    }
-    mutex->curr_locked = 1;
-    return rv;
-}
-
-static apr_status_t proc_mutex_proc_pthread_release(apr_proc_mutex_t *mutex)
-{
-    apr_status_t rv;
-
-    mutex->curr_locked = 0;
-    if ((rv = pthread_mutex_unlock(mutex->pthread_interproc))) {
-#ifdef HAVE_ZOS_PTHREADS
-        rv = errno;
-#endif
-        return rv;
-    }
-    return APR_SUCCESS;
-}
-
-static const apr_proc_mutex_unix_lock_methods_t mutex_proc_pthread_methods =
-{
-    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
-    proc_mutex_proc_pthread_create,
-    proc_mutex_proc_pthread_acquire,
-    proc_mutex_proc_pthread_tryacquire,
-    proc_mutex_proc_pthread_release,
-    proc_mutex_proc_pthread_cleanup,
-    proc_mutex_no_child_init,
-    "pthread"
-};
-
-#endif
-
-#if APR_HAS_FCNTL_SERIALIZE
-
-static struct flock proc_mutex_lock_it;
-static struct flock proc_mutex_unlock_it;
-
-static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *);
-
-static void proc_mutex_fcntl_setup(void)
-{
-    proc_mutex_lock_it.l_whence = SEEK_SET;   /* from current point */
-    proc_mutex_lock_it.l_start = 0;           /* -"- */
-    proc_mutex_lock_it.l_len = 0;             /* until end of file */
-    proc_mutex_lock_it.l_type = F_WRLCK;      /* set exclusive/write lock */
-    proc_mutex_lock_it.l_pid = 0;             /* pid not actually interesting */
-    proc_mutex_unlock_it.l_whence = SEEK_SET; /* from current point */
-    proc_mutex_unlock_it.l_start = 0;         /* -"- */
-    proc_mutex_unlock_it.l_len = 0;           /* until end of file */
-    proc_mutex_unlock_it.l_type = F_UNLCK;    /* set exclusive/write lock */
-    proc_mutex_unlock_it.l_pid = 0;           /* pid not actually interesting */
-}
-
-static apr_status_t proc_mutex_fcntl_cleanup(void *mutex_)
-{
-    apr_status_t status;
-    apr_proc_mutex_t *mutex=mutex_;
-
-    if (mutex->curr_locked == 1) {
-        status = proc_mutex_fcntl_release(mutex);
-        if (status != APR_SUCCESS)
-            return status;
-    }
-        
-    return apr_file_close(mutex->interproc);
-}    
-
-static apr_status_t proc_mutex_fcntl_create(apr_proc_mutex_t *new_mutex,
-                                            const char *fname)
-{
-    int rv;
- 
-    if (fname) {
-        new_mutex->fname = apr_pstrdup(new_mutex->pool, fname);
-        rv = apr_file_open(&new_mutex->interproc, new_mutex->fname,
-                           APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
-                           APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD,
-                           new_mutex->pool);
-    }
-    else {
-        new_mutex->fname = apr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX");
-        rv = apr_file_mktemp(&new_mutex->interproc, new_mutex->fname,
-                             APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
-                             new_mutex->pool);
-    }
- 
-    if (rv != APR_SUCCESS) {
-        return rv;
-    }
-
-    new_mutex->curr_locked = 0;
-    unlink(new_mutex->fname);
-    apr_pool_cleanup_register(new_mutex->pool,
-                              (void*)new_mutex,
-                              apr_proc_mutex_cleanup, 
-                              apr_pool_cleanup_null);
-    return APR_SUCCESS; 
-}
-
-static apr_status_t proc_mutex_fcntl_acquire(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    do {
-        rc = fcntl(mutex->interproc->filedes, F_SETLKW, &proc_mutex_lock_it);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        return errno;
-    }
-    mutex->curr_locked=1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_fcntl_tryacquire(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    do {
-        rc = fcntl(mutex->interproc->filedes, F_SETLK, &proc_mutex_lock_it);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-#if FCNTL_TRYACQUIRE_EACCES
-        if (errno == EACCES) {
-#else
-        if (errno == EAGAIN) {
-#endif
-            return APR_EBUSY;
-        }
-        return errno;
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    mutex->curr_locked=0;
-    do {
-        rc = fcntl(mutex->interproc->filedes, F_SETLKW, &proc_mutex_unlock_it);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-static const apr_proc_mutex_unix_lock_methods_t mutex_fcntl_methods =
-{
-#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(FCNTL_IS_GLOBAL)
-    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
-#else
-    0,
-#endif
-    proc_mutex_fcntl_create,
-    proc_mutex_fcntl_acquire,
-    proc_mutex_fcntl_tryacquire,
-    proc_mutex_fcntl_release,
-    proc_mutex_fcntl_cleanup,
-    proc_mutex_no_child_init,
-    "fcntl"
-};
-
-#endif /* fcntl implementation */
-
-#if APR_HAS_FLOCK_SERIALIZE
-
-static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *);
-
-static apr_status_t proc_mutex_flock_cleanup(void *mutex_)
-{
-    apr_status_t status;
-    apr_proc_mutex_t *mutex=mutex_;
-
-    if (mutex->curr_locked == 1) {
-        status = proc_mutex_flock_release(mutex);
-        if (status != APR_SUCCESS)
-            return status;
-    }
-    if (mutex->interproc) { /* if it was opened properly */
-        apr_file_close(mutex->interproc);
-    }
-    unlink(mutex->fname);
-    return APR_SUCCESS;
-}    
-
-static apr_status_t proc_mutex_flock_create(apr_proc_mutex_t *new_mutex,
-                                            const char *fname)
-{
-    int rv;
- 
-    if (fname) {
-        new_mutex->fname = apr_pstrdup(new_mutex->pool, fname);
-        rv = apr_file_open(&new_mutex->interproc, new_mutex->fname,
-                           APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
-                           APR_UREAD | APR_UWRITE,
-                           new_mutex->pool);
-    }
-    else {
-        new_mutex->fname = apr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX");
-        rv = apr_file_mktemp(&new_mutex->interproc, new_mutex->fname,
-                             APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
-                             new_mutex->pool);
-    }
- 
-    if (rv != APR_SUCCESS) {
-        proc_mutex_flock_cleanup(new_mutex);
-        return errno;
-    }
-    new_mutex->curr_locked = 0;
-    apr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex,
-                              apr_proc_mutex_cleanup,
-                              apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_flock_acquire(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    do {
-        rc = flock(mutex->interproc->filedes, LOCK_EX);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        return errno;
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_flock_tryacquire(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    do {
-        rc = flock(mutex->interproc->filedes, LOCK_EX | LOCK_NB);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        if (errno == EWOULDBLOCK || errno == EAGAIN) {
-            return APR_EBUSY;
-        }
-        return errno;
-    }
-    mutex->curr_locked = 1;
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *mutex)
-{
-    int rc;
-
-    mutex->curr_locked = 0;
-    do {
-        rc = flock(mutex->interproc->filedes, LOCK_UN);
-    } while (rc < 0 && errno == EINTR);
-    if (rc < 0) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-static apr_status_t proc_mutex_flock_child_init(apr_proc_mutex_t **mutex,
-                                                apr_pool_t *pool, 
-                                                const char *fname)
-{
-    apr_proc_mutex_t *new_mutex;
-    int rv;
-
-    new_mutex = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t));
-
-    memcpy(new_mutex, *mutex, sizeof *new_mutex);
-    new_mutex->pool = pool;
-    if (!fname) {
-        fname = (*mutex)->fname;
-    }
-    new_mutex->fname = apr_pstrdup(pool, fname);
-    rv = apr_file_open(&new_mutex->interproc, new_mutex->fname,
-                       APR_FOPEN_WRITE, 0, new_mutex->pool);
-    if (rv != APR_SUCCESS) {
-        return rv;
-    }
-    *mutex = new_mutex;
-    return APR_SUCCESS;
-}
-
-static const apr_proc_mutex_unix_lock_methods_t mutex_flock_methods =
-{
-#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(FLOCK_IS_GLOBAL)
-    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
-#else
-    0,
-#endif
-    proc_mutex_flock_create,
-    proc_mutex_flock_acquire,
-    proc_mutex_flock_tryacquire,
-    proc_mutex_flock_release,
-    proc_mutex_flock_cleanup,
-    proc_mutex_flock_child_init,
-    "flock"
-};
-
-#endif /* flock implementation */
-
-void apr_proc_mutex_unix_setup_lock(void)
-{
-    /* setup only needed for sysvsem and fnctl */
-#if APR_HAS_SYSVSEM_SERIALIZE
-    proc_mutex_sysv_setup();
-#endif
-#if APR_HAS_FCNTL_SERIALIZE
-    proc_mutex_fcntl_setup();
-#endif
-}
-
-static apr_status_t proc_mutex_choose_method(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech)
-{
-    switch (mech) {
-    case APR_LOCK_FCNTL:
-#if APR_HAS_FCNTL_SERIALIZE
-        new_mutex->inter_meth = &mutex_fcntl_methods;
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_LOCK_FLOCK:
-#if APR_HAS_FLOCK_SERIALIZE
-        new_mutex->inter_meth = &mutex_flock_methods;
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_LOCK_SYSVSEM:
-#if APR_HAS_SYSVSEM_SERIALIZE
-        new_mutex->inter_meth = &mutex_sysv_methods;
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_LOCK_POSIXSEM:
-#if APR_HAS_POSIXSEM_SERIALIZE
-        new_mutex->inter_meth = &mutex_posixsem_methods;
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_LOCK_PROC_PTHREAD:
-#if APR_HAS_PROC_PTHREAD_SERIALIZE
-        new_mutex->inter_meth = &mutex_proc_pthread_methods;
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_LOCK_DEFAULT:
-#if APR_USE_FLOCK_SERIALIZE
-        new_mutex->inter_meth = &mutex_flock_methods;
-#elif APR_USE_SYSVSEM_SERIALIZE
-        new_mutex->inter_meth = &mutex_sysv_methods;
-#elif APR_USE_FCNTL_SERIALIZE
-        new_mutex->inter_meth = &mutex_fcntl_methods;
-#elif APR_USE_PROC_PTHREAD_SERIALIZE
-        new_mutex->inter_meth = &mutex_proc_pthread_methods;
-#elif APR_USE_POSIXSEM_SERIALIZE
-        new_mutex->inter_meth = &mutex_posixsem_methods;
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    default:
-        return APR_ENOTIMPL;
-    }
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(const char *) apr_proc_mutex_defname(void)
-{
-    apr_status_t rv;
-    apr_proc_mutex_t mutex;
-
-    if ((rv = proc_mutex_choose_method(&mutex, APR_LOCK_DEFAULT)) != APR_SUCCESS) {
-        return "unknown";
-    }
-    mutex.meth = mutex.inter_meth;
-
-    return apr_proc_mutex_name(&mutex);
-}
-   
-static apr_status_t proc_mutex_create(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech, const char *fname)
-{
-    apr_status_t rv;
-
-    if ((rv = proc_mutex_choose_method(new_mutex, mech)) != APR_SUCCESS) {
-        return rv;
-    }
-
-    new_mutex->meth = new_mutex->inter_meth;
-
-    if ((rv = new_mutex->meth->create(new_mutex, fname)) != APR_SUCCESS) {
-        return rv;
-    }
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex,
-                                                const char *fname,
-                                                apr_lockmech_e mech,
-                                                apr_pool_t *pool)
-{
-    apr_proc_mutex_t *new_mutex;
-    apr_status_t rv;
-
-    new_mutex = apr_pcalloc(pool, sizeof(apr_proc_mutex_t));
-    new_mutex->pool = pool;
-
-    if ((rv = proc_mutex_create(new_mutex, mech, fname)) != APR_SUCCESS)
-        return rv;
-
-    *mutex = new_mutex;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex,
-                                                    const char *fname,
-                                                    apr_pool_t *pool)
-{
-    return (*mutex)->meth->child_init(mutex, pool, fname);
-}
-
-APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex)
-{
-    return mutex->meth->acquire(mutex);
-}
-
-APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex)
-{
-    return mutex->meth->tryacquire(mutex);
-}
-
-APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex)
-{
-    return mutex->meth->release(mutex);
-}
-
-APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex)
-{
-    return ((apr_proc_mutex_t *)mutex)->meth->cleanup(mutex);
-}
-
-APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex)
-{
-    return mutex->meth->name;
-}
-
-APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex)
-{
-    /* POSIX sems use the fname field but don't use a file,
-     * so be careful. */
-#if APR_HAS_FLOCK_SERIALIZE
-    if (mutex->meth == &mutex_flock_methods) {
-        return mutex->fname;
-    }
-#endif
-#if APR_HAS_FCNTL_SERIALIZE
-    if (mutex->meth == &mutex_fcntl_methods) {
-        return mutex->fname;
-    }
-#endif
-    return NULL;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex)
-
-/* Implement OS-specific accessors defined in apr_portable.h */
-
-APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex,
-                                                apr_proc_mutex_t *pmutex)
-{
-#if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE || APR_HAS_POSIXSEM_SERIALIZE
-    ospmutex->crossproc = pmutex->interproc->filedes;
-#endif
-#if APR_HAS_PROC_PTHREAD_SERIALIZE
-    ospmutex->pthread_interproc = pmutex->pthread_interproc;
-#endif
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex,
-                                                apr_os_proc_mutex_t *ospmutex,
-                                                apr_pool_t *pool)
-{
-    if (pool == NULL) {
-        return APR_ENOPOOL;
-    }
-    if ((*pmutex) == NULL) {
-        (*pmutex) = (apr_proc_mutex_t *)apr_pcalloc(pool,
-                                                    sizeof(apr_proc_mutex_t));
-        (*pmutex)->pool = pool;
-    }
-#if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE || APR_HAS_POSIXSEM_SERIALIZE
-    apr_os_file_put(&(*pmutex)->interproc, &ospmutex->crossproc, 0, pool);
-#endif
-#if APR_HAS_PROC_PTHREAD_SERIALIZE
-    (*pmutex)->pthread_interproc = ospmutex->pthread_interproc;
-#endif
-    return APR_SUCCESS;
-}
-

Copied: vendor/apache/apr/1.5.2/locks/unix/proc_mutex.c (from rev 9273, vendor/apache/apr/dist/locks/unix/proc_mutex.c)
===================================================================
--- vendor/apache/apr/1.5.2/locks/unix/proc_mutex.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/locks/unix/proc_mutex.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1001 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_strings.h"
+#include "apr_arch_proc_mutex.h"
+#include "apr_arch_file_io.h" /* for apr_mkstemp() */
+#include "apr_hash.h"
+
+APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex)
+{
+    return apr_pool_cleanup_run(mutex->pool, mutex, apr_proc_mutex_cleanup);
+}
+
+#if APR_HAS_POSIXSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || \
+    APR_HAS_PROC_PTHREAD_SERIALIZE || APR_HAS_SYSVSEM_SERIALIZE
+static apr_status_t proc_mutex_no_child_init(apr_proc_mutex_t **mutex,
+                                             apr_pool_t *cont,
+                                             const char *fname)
+{
+    return APR_SUCCESS;
+}
+#endif    
+
+#if APR_HAS_POSIXSEM_SERIALIZE
+
+#ifndef SEM_FAILED
+#define SEM_FAILED (-1)
+#endif
+
+static apr_status_t proc_mutex_posix_cleanup(void *mutex_)
+{
+    apr_proc_mutex_t *mutex = mutex_;
+    
+    if (sem_close(mutex->psem_interproc) < 0) {
+        return errno;
+    }
+
+    return APR_SUCCESS;
+}    
+
+static unsigned int rshash (char *p) {
+    /* hash function from Robert Sedgwicks 'Algorithms in C' book */
+   unsigned int b    = 378551;
+   unsigned int a    = 63689;
+   unsigned int retval = 0;
+
+   for( ; *p; p++)
+   {
+      retval = retval * a + (*p);
+      a *= b;
+   }
+
+   return retval;
+}
+
+static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex,
+                                            const char *fname)
+{
+    #define APR_POSIXSEM_NAME_MIN 13
+    sem_t *psem;
+    char semname[32];
+    
+    new_mutex->interproc = apr_palloc(new_mutex->pool,
+                                      sizeof(*new_mutex->interproc));
+    /*
+     * This bogusness is to follow what appears to be the
+     * lowest common denominator in Posix semaphore naming:
+     *   - start with '/'
+     *   - be at most 14 chars
+     *   - be unique and not match anything on the filesystem
+     *
+     * Because of this, we use fname to generate a (unique) hash
+     * and use that as the name of the semaphore. If no filename was
+     * given, we create one based on the time. We tuck the name
+     * away, since it might be useful for debugging. We use 2 hashing
+     * functions to try to avoid collisions.
+     *
+     * To  make this as robust as possible, we initially try something
+     * larger (and hopefully more unique) and gracefully fail down to the
+     * LCD above.
+     *
+     * NOTE: Darwin (Mac OS X) seems to be the most restrictive
+     * implementation. Versions previous to Darwin 6.2 had the 14
+     * char limit, but later rev's allow up to 31 characters.
+     *
+     */
+    if (fname) {
+        apr_ssize_t flen = strlen(fname);
+        char *p = apr_pstrndup(new_mutex->pool, fname, strlen(fname));
+        unsigned int h1, h2;
+        h1 = (apr_hashfunc_default((const char *)p, &flen) & 0xffffffff);
+        h2 = (rshash(p) & 0xffffffff);
+        apr_snprintf(semname, sizeof(semname), "/ApR.%xH%x", h1, h2);
+    } else {
+        apr_time_t now;
+        unsigned long sec;
+        unsigned long usec;
+        now = apr_time_now();
+        sec = apr_time_sec(now);
+        usec = apr_time_usec(now);
+        apr_snprintf(semname, sizeof(semname), "/ApR.%lxZ%lx", sec, usec);
+    }
+    do {
+        psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1);
+    } while (psem == (sem_t *)SEM_FAILED && errno == EINTR);
+    if (psem == (sem_t *)SEM_FAILED) {
+        if (errno == ENAMETOOLONG) {
+            /* Oh well, good try */
+            semname[APR_POSIXSEM_NAME_MIN] = '\0';
+        } else {
+            return errno;
+        }
+        do {
+            psem = sem_open(semname, O_CREAT | O_EXCL, 0644, 1);
+        } while (psem == (sem_t *)SEM_FAILED && errno == EINTR);
+    }
+
+    if (psem == (sem_t *)SEM_FAILED) {
+        return errno;
+    }
+    /* Ahhh. The joys of Posix sems. Predelete it... */
+    sem_unlink(semname);
+    new_mutex->psem_interproc = psem;
+    new_mutex->fname = apr_pstrdup(new_mutex->pool, semname);
+    apr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex,
+                              apr_proc_mutex_cleanup, 
+                              apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = sem_wait(mutex->psem_interproc);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        return errno;
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_posix_tryacquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = sem_trywait(mutex->psem_interproc);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        if (errno == EAGAIN) {
+            return APR_EBUSY;
+        }
+        return errno;
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_posix_release(apr_proc_mutex_t *mutex)
+{
+    mutex->curr_locked = 0;
+    if (sem_post(mutex->psem_interproc) < 0) {
+        /* any failure is probably fatal, so no big deal to leave
+         * ->curr_locked at 0. */
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+static const apr_proc_mutex_unix_lock_methods_t mutex_posixsem_methods =
+{
+#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(POSIXSEM_IS_GLOBAL)
+    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
+#else
+    0,
+#endif
+    proc_mutex_posix_create,
+    proc_mutex_posix_acquire,
+    proc_mutex_posix_tryacquire,
+    proc_mutex_posix_release,
+    proc_mutex_posix_cleanup,
+    proc_mutex_no_child_init,
+    "posixsem"
+};
+
+#endif /* Posix sem implementation */
+
+#if APR_HAS_SYSVSEM_SERIALIZE
+
+static struct sembuf proc_mutex_op_on;
+static struct sembuf proc_mutex_op_try;
+static struct sembuf proc_mutex_op_off;
+
+static void proc_mutex_sysv_setup(void)
+{
+    proc_mutex_op_on.sem_num = 0;
+    proc_mutex_op_on.sem_op = -1;
+    proc_mutex_op_on.sem_flg = SEM_UNDO;
+    proc_mutex_op_try.sem_num = 0;
+    proc_mutex_op_try.sem_op = -1;
+    proc_mutex_op_try.sem_flg = SEM_UNDO | IPC_NOWAIT;
+    proc_mutex_op_off.sem_num = 0;
+    proc_mutex_op_off.sem_op = 1;
+    proc_mutex_op_off.sem_flg = SEM_UNDO;
+}
+
+static apr_status_t proc_mutex_sysv_cleanup(void *mutex_)
+{
+    apr_proc_mutex_t *mutex=mutex_;
+    union semun ick;
+    
+    if (mutex->interproc->filedes != -1) {
+        ick.val = 0;
+        semctl(mutex->interproc->filedes, 0, IPC_RMID, ick);
+    }
+    return APR_SUCCESS;
+}    
+
+static apr_status_t proc_mutex_sysv_create(apr_proc_mutex_t *new_mutex,
+                                           const char *fname)
+{
+    union semun ick;
+    apr_status_t rv;
+    
+    new_mutex->interproc = apr_palloc(new_mutex->pool, sizeof(*new_mutex->interproc));
+    new_mutex->interproc->filedes = semget(IPC_PRIVATE, 1, IPC_CREAT | 0600);
+
+    if (new_mutex->interproc->filedes < 0) {
+        rv = errno;
+        proc_mutex_sysv_cleanup(new_mutex);
+        return rv;
+    }
+    ick.val = 1;
+    if (semctl(new_mutex->interproc->filedes, 0, SETVAL, ick) < 0) {
+        rv = errno;
+        proc_mutex_sysv_cleanup(new_mutex);
+        return rv;
+    }
+    new_mutex->curr_locked = 0;
+    apr_pool_cleanup_register(new_mutex->pool,
+                              (void *)new_mutex, apr_proc_mutex_cleanup, 
+                              apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_sysv_acquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = semop(mutex->interproc->filedes, &proc_mutex_op_on, 1);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        return errno;
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_sysv_tryacquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = semop(mutex->interproc->filedes, &proc_mutex_op_try, 1);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        if (errno == EAGAIN) {
+            return APR_EBUSY;
+        }
+        return errno;
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_sysv_release(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    mutex->curr_locked = 0;
+    do {
+        rc = semop(mutex->interproc->filedes, &proc_mutex_op_off, 1);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+static const apr_proc_mutex_unix_lock_methods_t mutex_sysv_methods =
+{
+#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(SYSVSEM_IS_GLOBAL)
+    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
+#else
+    0,
+#endif
+    proc_mutex_sysv_create,
+    proc_mutex_sysv_acquire,
+    proc_mutex_sysv_tryacquire,
+    proc_mutex_sysv_release,
+    proc_mutex_sysv_cleanup,
+    proc_mutex_no_child_init,
+    "sysvsem"
+};
+
+#endif /* SysV sem implementation */
+
+#if APR_HAS_PROC_PTHREAD_SERIALIZE
+
+static apr_status_t proc_mutex_proc_pthread_cleanup(void *mutex_)
+{
+    apr_proc_mutex_t *mutex=mutex_;
+    apr_status_t rv;
+
+    if (mutex->curr_locked == 1) {
+        if ((rv = pthread_mutex_unlock(mutex->pthread_interproc))) {
+#ifdef HAVE_ZOS_PTHREADS
+            rv = errno;
+#endif
+            return rv;
+        }
+    }
+    /* curr_locked is set to -1 until the mutex has been created */
+    if (mutex->curr_locked != -1) {
+        if ((rv = pthread_mutex_destroy(mutex->pthread_interproc))) {
+#ifdef HAVE_ZOS_PTHREADS
+            rv = errno;
+#endif
+            return rv;
+        }
+    }
+    if (munmap((caddr_t)mutex->pthread_interproc, sizeof(pthread_mutex_t))) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_proc_pthread_create(apr_proc_mutex_t *new_mutex,
+                                                   const char *fname)
+{
+    apr_status_t rv;
+    int fd;
+    pthread_mutexattr_t mattr;
+
+    fd = open("/dev/zero", O_RDWR);
+    if (fd < 0) {
+        return errno;
+    }
+
+    new_mutex->pthread_interproc = (pthread_mutex_t *)mmap(
+                                       (caddr_t) 0, 
+                                       sizeof(pthread_mutex_t), 
+                                       PROT_READ | PROT_WRITE, MAP_SHARED,
+                                       fd, 0); 
+    if (new_mutex->pthread_interproc == (pthread_mutex_t *) (caddr_t) -1) {
+        close(fd);
+        return errno;
+    }
+    close(fd);
+
+    new_mutex->curr_locked = -1; /* until the mutex has been created */
+
+    if ((rv = pthread_mutexattr_init(&mattr))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+        proc_mutex_proc_pthread_cleanup(new_mutex);
+        return rv;
+    }
+    if ((rv = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+        proc_mutex_proc_pthread_cleanup(new_mutex);
+        pthread_mutexattr_destroy(&mattr);
+        return rv;
+    }
+
+#ifdef HAVE_PTHREAD_MUTEX_ROBUST
+    if ((rv = pthread_mutexattr_setrobust_np(&mattr, 
+                                               PTHREAD_MUTEX_ROBUST_NP))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+        proc_mutex_proc_pthread_cleanup(new_mutex);
+        pthread_mutexattr_destroy(&mattr);
+        return rv;
+    }
+    if ((rv = pthread_mutexattr_setprotocol(&mattr, PTHREAD_PRIO_INHERIT))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+        proc_mutex_proc_pthread_cleanup(new_mutex);
+        pthread_mutexattr_destroy(&mattr);
+        return rv;
+    }
+#endif /* HAVE_PTHREAD_MUTEX_ROBUST */
+
+    if ((rv = pthread_mutex_init(new_mutex->pthread_interproc, &mattr))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+        proc_mutex_proc_pthread_cleanup(new_mutex);
+        pthread_mutexattr_destroy(&mattr);
+        return rv;
+    }
+
+    new_mutex->curr_locked = 0; /* mutex created now */
+
+    if ((rv = pthread_mutexattr_destroy(&mattr))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+        proc_mutex_proc_pthread_cleanup(new_mutex);
+        return rv;
+    }
+
+    apr_pool_cleanup_register(new_mutex->pool,
+                              (void *)new_mutex,
+                              apr_proc_mutex_cleanup, 
+                              apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_proc_pthread_acquire(apr_proc_mutex_t *mutex)
+{
+    apr_status_t rv;
+
+    if ((rv = pthread_mutex_lock(mutex->pthread_interproc))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+#ifdef HAVE_PTHREAD_MUTEX_ROBUST
+        /* Okay, our owner died.  Let's try to make it consistent again. */
+        if (rv == EOWNERDEAD) {
+            pthread_mutex_consistent_np(mutex->pthread_interproc);
+        }
+        else
+            return rv;
+#else
+        return rv;
+#endif
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_proc_pthread_tryacquire(apr_proc_mutex_t *mutex)
+{
+    apr_status_t rv;
+ 
+    if ((rv = pthread_mutex_trylock(mutex->pthread_interproc))) {
+#ifdef HAVE_ZOS_PTHREADS 
+        rv = errno;
+#endif
+        if (rv == EBUSY) {
+            return APR_EBUSY;
+        }
+#ifdef HAVE_PTHREAD_MUTEX_ROBUST
+        /* Okay, our owner died.  Let's try to make it consistent again. */
+        if (rv == EOWNERDEAD) {
+            pthread_mutex_consistent_np(mutex->pthread_interproc);
+            rv = APR_SUCCESS;
+        }
+        else
+            return rv;
+#else
+        return rv;
+#endif
+    }
+    mutex->curr_locked = 1;
+    return rv;
+}
+
+static apr_status_t proc_mutex_proc_pthread_release(apr_proc_mutex_t *mutex)
+{
+    apr_status_t rv;
+
+    mutex->curr_locked = 0;
+    if ((rv = pthread_mutex_unlock(mutex->pthread_interproc))) {
+#ifdef HAVE_ZOS_PTHREADS
+        rv = errno;
+#endif
+        return rv;
+    }
+    return APR_SUCCESS;
+}
+
+static const apr_proc_mutex_unix_lock_methods_t mutex_proc_pthread_methods =
+{
+    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
+    proc_mutex_proc_pthread_create,
+    proc_mutex_proc_pthread_acquire,
+    proc_mutex_proc_pthread_tryacquire,
+    proc_mutex_proc_pthread_release,
+    proc_mutex_proc_pthread_cleanup,
+    proc_mutex_no_child_init,
+    "pthread"
+};
+
+#endif
+
+#if APR_HAS_FCNTL_SERIALIZE
+
+static struct flock proc_mutex_lock_it;
+static struct flock proc_mutex_unlock_it;
+
+static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *);
+
+static void proc_mutex_fcntl_setup(void)
+{
+    proc_mutex_lock_it.l_whence = SEEK_SET;   /* from current point */
+    proc_mutex_lock_it.l_start = 0;           /* -"- */
+    proc_mutex_lock_it.l_len = 0;             /* until end of file */
+    proc_mutex_lock_it.l_type = F_WRLCK;      /* set exclusive/write lock */
+    proc_mutex_lock_it.l_pid = 0;             /* pid not actually interesting */
+    proc_mutex_unlock_it.l_whence = SEEK_SET; /* from current point */
+    proc_mutex_unlock_it.l_start = 0;         /* -"- */
+    proc_mutex_unlock_it.l_len = 0;           /* until end of file */
+    proc_mutex_unlock_it.l_type = F_UNLCK;    /* set exclusive/write lock */
+    proc_mutex_unlock_it.l_pid = 0;           /* pid not actually interesting */
+}
+
+static apr_status_t proc_mutex_fcntl_cleanup(void *mutex_)
+{
+    apr_status_t status;
+    apr_proc_mutex_t *mutex=mutex_;
+
+    if (mutex->curr_locked == 1) {
+        status = proc_mutex_fcntl_release(mutex);
+        if (status != APR_SUCCESS)
+            return status;
+    }
+        
+    return apr_file_close(mutex->interproc);
+}    
+
+static apr_status_t proc_mutex_fcntl_create(apr_proc_mutex_t *new_mutex,
+                                            const char *fname)
+{
+    int rv;
+ 
+    if (fname) {
+        new_mutex->fname = apr_pstrdup(new_mutex->pool, fname);
+        rv = apr_file_open(&new_mutex->interproc, new_mutex->fname,
+                           APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
+                           APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD,
+                           new_mutex->pool);
+    }
+    else {
+        new_mutex->fname = apr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX");
+        rv = apr_file_mktemp(&new_mutex->interproc, new_mutex->fname,
+                             APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
+                             new_mutex->pool);
+    }
+ 
+    if (rv != APR_SUCCESS) {
+        return rv;
+    }
+
+    new_mutex->curr_locked = 0;
+    unlink(new_mutex->fname);
+    apr_pool_cleanup_register(new_mutex->pool,
+                              (void*)new_mutex,
+                              apr_proc_mutex_cleanup, 
+                              apr_pool_cleanup_null);
+    return APR_SUCCESS; 
+}
+
+static apr_status_t proc_mutex_fcntl_acquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = fcntl(mutex->interproc->filedes, F_SETLKW, &proc_mutex_lock_it);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        return errno;
+    }
+    mutex->curr_locked=1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_fcntl_tryacquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = fcntl(mutex->interproc->filedes, F_SETLK, &proc_mutex_lock_it);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+#if FCNTL_TRYACQUIRE_EACCES
+        if (errno == EACCES) {
+#else
+        if (errno == EAGAIN) {
+#endif
+            return APR_EBUSY;
+        }
+        return errno;
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    mutex->curr_locked=0;
+    do {
+        rc = fcntl(mutex->interproc->filedes, F_SETLKW, &proc_mutex_unlock_it);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+static const apr_proc_mutex_unix_lock_methods_t mutex_fcntl_methods =
+{
+#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(FCNTL_IS_GLOBAL)
+    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
+#else
+    0,
+#endif
+    proc_mutex_fcntl_create,
+    proc_mutex_fcntl_acquire,
+    proc_mutex_fcntl_tryacquire,
+    proc_mutex_fcntl_release,
+    proc_mutex_fcntl_cleanup,
+    proc_mutex_no_child_init,
+    "fcntl"
+};
+
+#endif /* fcntl implementation */
+
+#if APR_HAS_FLOCK_SERIALIZE
+
+static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *);
+
+static apr_status_t proc_mutex_flock_cleanup(void *mutex_)
+{
+    apr_status_t status;
+    apr_proc_mutex_t *mutex=mutex_;
+
+    if (mutex->curr_locked == 1) {
+        status = proc_mutex_flock_release(mutex);
+        if (status != APR_SUCCESS)
+            return status;
+    }
+    if (mutex->interproc) { /* if it was opened properly */
+        apr_file_close(mutex->interproc);
+    }
+    unlink(mutex->fname);
+    return APR_SUCCESS;
+}    
+
+static apr_status_t proc_mutex_flock_create(apr_proc_mutex_t *new_mutex,
+                                            const char *fname)
+{
+    int rv;
+ 
+    if (fname) {
+        new_mutex->fname = apr_pstrdup(new_mutex->pool, fname);
+        rv = apr_file_open(&new_mutex->interproc, new_mutex->fname,
+                           APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
+                           APR_UREAD | APR_UWRITE,
+                           new_mutex->pool);
+    }
+    else {
+        new_mutex->fname = apr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX");
+        rv = apr_file_mktemp(&new_mutex->interproc, new_mutex->fname,
+                             APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_EXCL,
+                             new_mutex->pool);
+    }
+ 
+    if (rv != APR_SUCCESS) {
+        proc_mutex_flock_cleanup(new_mutex);
+        return errno;
+    }
+    new_mutex->curr_locked = 0;
+    apr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex,
+                              apr_proc_mutex_cleanup,
+                              apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_flock_acquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = flock(mutex->interproc->filedes, LOCK_EX);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        return errno;
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_flock_tryacquire(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    do {
+        rc = flock(mutex->interproc->filedes, LOCK_EX | LOCK_NB);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        if (errno == EWOULDBLOCK || errno == EAGAIN) {
+            return APR_EBUSY;
+        }
+        return errno;
+    }
+    mutex->curr_locked = 1;
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *mutex)
+{
+    int rc;
+
+    mutex->curr_locked = 0;
+    do {
+        rc = flock(mutex->interproc->filedes, LOCK_UN);
+    } while (rc < 0 && errno == EINTR);
+    if (rc < 0) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+static apr_status_t proc_mutex_flock_child_init(apr_proc_mutex_t **mutex,
+                                                apr_pool_t *pool, 
+                                                const char *fname)
+{
+    apr_proc_mutex_t *new_mutex;
+    int rv;
+
+    new_mutex = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t));
+
+    memcpy(new_mutex, *mutex, sizeof *new_mutex);
+    new_mutex->pool = pool;
+    if (!fname) {
+        fname = (*mutex)->fname;
+    }
+    new_mutex->fname = apr_pstrdup(pool, fname);
+    rv = apr_file_open(&new_mutex->interproc, new_mutex->fname,
+                       APR_FOPEN_WRITE, 0, new_mutex->pool);
+    if (rv != APR_SUCCESS) {
+        return rv;
+    }
+    *mutex = new_mutex;
+    return APR_SUCCESS;
+}
+
+static const apr_proc_mutex_unix_lock_methods_t mutex_flock_methods =
+{
+#if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(FLOCK_IS_GLOBAL)
+    APR_PROCESS_LOCK_MECH_IS_GLOBAL,
+#else
+    0,
+#endif
+    proc_mutex_flock_create,
+    proc_mutex_flock_acquire,
+    proc_mutex_flock_tryacquire,
+    proc_mutex_flock_release,
+    proc_mutex_flock_cleanup,
+    proc_mutex_flock_child_init,
+    "flock"
+};
+
+#endif /* flock implementation */
+
+void apr_proc_mutex_unix_setup_lock(void)
+{
+    /* setup only needed for sysvsem and fnctl */
+#if APR_HAS_SYSVSEM_SERIALIZE
+    proc_mutex_sysv_setup();
+#endif
+#if APR_HAS_FCNTL_SERIALIZE
+    proc_mutex_fcntl_setup();
+#endif
+}
+
+static apr_status_t proc_mutex_choose_method(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech)
+{
+    switch (mech) {
+    case APR_LOCK_FCNTL:
+#if APR_HAS_FCNTL_SERIALIZE
+        new_mutex->inter_meth = &mutex_fcntl_methods;
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_LOCK_FLOCK:
+#if APR_HAS_FLOCK_SERIALIZE
+        new_mutex->inter_meth = &mutex_flock_methods;
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_LOCK_SYSVSEM:
+#if APR_HAS_SYSVSEM_SERIALIZE
+        new_mutex->inter_meth = &mutex_sysv_methods;
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_LOCK_POSIXSEM:
+#if APR_HAS_POSIXSEM_SERIALIZE
+        new_mutex->inter_meth = &mutex_posixsem_methods;
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_LOCK_PROC_PTHREAD:
+#if APR_HAS_PROC_PTHREAD_SERIALIZE
+        new_mutex->inter_meth = &mutex_proc_pthread_methods;
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_LOCK_DEFAULT:
+#if APR_USE_FLOCK_SERIALIZE
+        new_mutex->inter_meth = &mutex_flock_methods;
+#elif APR_USE_SYSVSEM_SERIALIZE
+        new_mutex->inter_meth = &mutex_sysv_methods;
+#elif APR_USE_FCNTL_SERIALIZE
+        new_mutex->inter_meth = &mutex_fcntl_methods;
+#elif APR_USE_PROC_PTHREAD_SERIALIZE
+        new_mutex->inter_meth = &mutex_proc_pthread_methods;
+#elif APR_USE_POSIXSEM_SERIALIZE
+        new_mutex->inter_meth = &mutex_posixsem_methods;
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    default:
+        return APR_ENOTIMPL;
+    }
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(const char *) apr_proc_mutex_defname(void)
+{
+    apr_status_t rv;
+    apr_proc_mutex_t mutex;
+
+    if ((rv = proc_mutex_choose_method(&mutex, APR_LOCK_DEFAULT)) != APR_SUCCESS) {
+        return "unknown";
+    }
+    mutex.meth = mutex.inter_meth;
+
+    return apr_proc_mutex_name(&mutex);
+}
+   
+static apr_status_t proc_mutex_create(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech, const char *fname)
+{
+    apr_status_t rv;
+
+    if ((rv = proc_mutex_choose_method(new_mutex, mech)) != APR_SUCCESS) {
+        return rv;
+    }
+
+    new_mutex->meth = new_mutex->inter_meth;
+
+    if ((rv = new_mutex->meth->create(new_mutex, fname)) != APR_SUCCESS) {
+        return rv;
+    }
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex,
+                                                const char *fname,
+                                                apr_lockmech_e mech,
+                                                apr_pool_t *pool)
+{
+    apr_proc_mutex_t *new_mutex;
+    apr_status_t rv;
+
+    new_mutex = apr_pcalloc(pool, sizeof(apr_proc_mutex_t));
+    new_mutex->pool = pool;
+
+    if ((rv = proc_mutex_create(new_mutex, mech, fname)) != APR_SUCCESS)
+        return rv;
+
+    *mutex = new_mutex;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex,
+                                                    const char *fname,
+                                                    apr_pool_t *pool)
+{
+    return (*mutex)->meth->child_init(mutex, pool, fname);
+}
+
+APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex)
+{
+    return mutex->meth->acquire(mutex);
+}
+
+APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex)
+{
+    return mutex->meth->tryacquire(mutex);
+}
+
+APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex)
+{
+    return mutex->meth->release(mutex);
+}
+
+APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex)
+{
+    return ((apr_proc_mutex_t *)mutex)->meth->cleanup(mutex);
+}
+
+APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex)
+{
+    return mutex->meth->name;
+}
+
+APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex)
+{
+    /* POSIX sems use the fname field but don't use a file,
+     * so be careful. */
+#if APR_HAS_FLOCK_SERIALIZE
+    if (mutex->meth == &mutex_flock_methods) {
+        return mutex->fname;
+    }
+#endif
+#if APR_HAS_FCNTL_SERIALIZE
+    if (mutex->meth == &mutex_fcntl_methods) {
+        return mutex->fname;
+    }
+#endif
+    return NULL;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex)
+
+/* Implement OS-specific accessors defined in apr_portable.h */
+
+APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex,
+                                                apr_proc_mutex_t *pmutex)
+{
+#if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE || APR_HAS_POSIXSEM_SERIALIZE
+    if (pmutex->interproc) {
+        ospmutex->crossproc = pmutex->interproc->filedes;
+    }
+    else {
+        ospmutex->crossproc = -1;
+    }
+#endif
+#if APR_HAS_PROC_PTHREAD_SERIALIZE
+    ospmutex->pthread_interproc = pmutex->pthread_interproc;
+#endif
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex,
+                                                apr_os_proc_mutex_t *ospmutex,
+                                                apr_pool_t *pool)
+{
+    if (pool == NULL) {
+        return APR_ENOPOOL;
+    }
+    if ((*pmutex) == NULL) {
+        (*pmutex) = (apr_proc_mutex_t *)apr_pcalloc(pool,
+                                                    sizeof(apr_proc_mutex_t));
+        (*pmutex)->pool = pool;
+    }
+#if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE || APR_HAS_POSIXSEM_SERIALIZE
+    apr_os_file_put(&(*pmutex)->interproc, &ospmutex->crossproc, 0, pool);
+#endif
+#if APR_HAS_PROC_PTHREAD_SERIALIZE
+    (*pmutex)->pthread_interproc = ospmutex->pthread_interproc;
+#endif
+    return APR_SUCCESS;
+}
+

Deleted: vendor/apache/apr/1.5.2/memory/unix/apr_pools.c
===================================================================
--- vendor/apache/apr/dist/memory/unix/apr_pools.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/memory/unix/apr_pools.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,2655 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_private.h"
-
-#include "apr_atomic.h"
-#include "apr_portable.h" /* for get_os_proc */
-#include "apr_strings.h"
-#include "apr_general.h"
-#include "apr_pools.h"
-#include "apr_allocator.h"
-#include "apr_lib.h"
-#include "apr_thread_mutex.h"
-#include "apr_hash.h"
-#include "apr_time.h"
-#define APR_WANT_MEMFUNC
-#include "apr_want.h"
-#include "apr_env.h"
-
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>     /* for malloc, free and abort */
-#endif
-
-#if APR_HAVE_UNISTD_H
-#include <unistd.h>     /* for getpid and sysconf */
-#endif
-
-#if APR_ALLOCATOR_USES_MMAP
-#include <sys/mman.h>
-#endif
-
-/*
- * Magic numbers
- */
-
-/*
- * XXX: This is not optimal when using --enable-allocator-uses-mmap on
- * XXX: machines with large pagesize, but currently the sink is assumed
- * XXX: to be index 0, so MIN_ALLOC must be at least two pages.
- */
-#define MIN_ALLOC (2 * BOUNDARY_SIZE)
-#define MAX_INDEX   20
-
-#if APR_ALLOCATOR_USES_MMAP && defined(_SC_PAGESIZE)
-static unsigned int boundary_index;
-static unsigned int boundary_size;
-#define BOUNDARY_INDEX  boundary_index
-#define BOUNDARY_SIZE   boundary_size
-#else
-#define BOUNDARY_INDEX 12
-#define BOUNDARY_SIZE (1 << BOUNDARY_INDEX)
-#endif
-
-/* 
- * Timing constants for killing subprocesses
- * There is a total 3-second delay between sending a SIGINT 
- * and sending of the final SIGKILL.
- * TIMEOUT_INTERVAL should be set to TIMEOUT_USECS / 64
- * for the exponetial timeout alogrithm.
- */
-#define TIMEOUT_USECS    3000000
-#define TIMEOUT_INTERVAL   46875
-
-/*
- * Allocator
- *
- * @note The max_free_index and current_free_index fields are not really
- * indices, but quantities of BOUNDARY_SIZE big memory blocks.
- */
-
-struct apr_allocator_t {
-    /** largest used index into free[], always < MAX_INDEX */
-    apr_uint32_t        max_index;
-    /** Total size (in BOUNDARY_SIZE multiples) of unused memory before
-     * blocks are given back. @see apr_allocator_max_free_set().
-     * @note Initialized to APR_ALLOCATOR_MAX_FREE_UNLIMITED,
-     * which means to never give back blocks.
-     */
-    apr_uint32_t        max_free_index;
-    /**
-     * Memory size (in BOUNDARY_SIZE multiples) that currently must be freed
-     * before blocks are given back. Range: 0..max_free_index
-     */
-    apr_uint32_t        current_free_index;
-#if APR_HAS_THREADS
-    apr_thread_mutex_t *mutex;
-#endif /* APR_HAS_THREADS */
-    apr_pool_t         *owner;
-    /**
-     * Lists of free nodes. Slot 0 is used for oversized nodes,
-     * and the slots 1..MAX_INDEX-1 contain nodes of sizes
-     * (i+1) * BOUNDARY_SIZE. Example for BOUNDARY_INDEX == 12:
-     * slot  0: nodes larger than 81920
-     * slot  1: size  8192
-     * slot  2: size 12288
-     * ...
-     * slot 19: size 81920
-     */
-    apr_memnode_t      *free[MAX_INDEX];
-};
-
-#define SIZEOF_ALLOCATOR_T  APR_ALIGN_DEFAULT(sizeof(apr_allocator_t))
-
-
-/*
- * Allocator
- */
-
-APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator)
-{
-    apr_allocator_t *new_allocator;
-
-    *allocator = NULL;
-
-    if ((new_allocator = malloc(SIZEOF_ALLOCATOR_T)) == NULL)
-        return APR_ENOMEM;
-
-    memset(new_allocator, 0, SIZEOF_ALLOCATOR_T);
-    new_allocator->max_free_index = APR_ALLOCATOR_MAX_FREE_UNLIMITED;
-
-    *allocator = new_allocator;
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator)
-{
-    apr_uint32_t index;
-    apr_memnode_t *node, **ref;
-
-    for (index = 0; index < MAX_INDEX; index++) {
-        ref = &allocator->free[index];
-        while ((node = *ref) != NULL) {
-            *ref = node->next;
-#if APR_ALLOCATOR_USES_MMAP
-            munmap(node, (node->index+1) << BOUNDARY_INDEX);
-#else
-            free(node);
-#endif
-        }
-    }
-
-    free(allocator);
-}
-
-#if APR_HAS_THREADS
-APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator,
-                                          apr_thread_mutex_t *mutex)
-{
-    allocator->mutex = mutex;
-}
-
-APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get(
-                                      apr_allocator_t *allocator)
-{
-    return allocator->mutex;
-}
-#endif /* APR_HAS_THREADS */
-
-APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator,
-                                          apr_pool_t *pool)
-{
-    allocator->owner = pool;
-}
-
-APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator)
-{
-    return allocator->owner;
-}
-
-APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
-                                             apr_size_t in_size)
-{
-    apr_uint32_t max_free_index;
-    apr_uint32_t size = (APR_UINT32_TRUNC_CAST)in_size;
-
-#if APR_HAS_THREADS
-    apr_thread_mutex_t *mutex;
-
-    mutex = apr_allocator_mutex_get(allocator);
-    if (mutex != NULL)
-        apr_thread_mutex_lock(mutex);
-#endif /* APR_HAS_THREADS */
-
-    max_free_index = APR_ALIGN(size, BOUNDARY_SIZE) >> BOUNDARY_INDEX;
-    allocator->current_free_index += max_free_index;
-    allocator->current_free_index -= allocator->max_free_index;
-    allocator->max_free_index = max_free_index;
-    if (allocator->current_free_index > max_free_index)
-        allocator->current_free_index = max_free_index;
-
-#if APR_HAS_THREADS
-    if (mutex != NULL)
-        apr_thread_mutex_unlock(mutex);
-#endif
-}
-
-static APR_INLINE
-apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t in_size)
-{
-    apr_memnode_t *node, **ref;
-    apr_uint32_t max_index;
-    apr_size_t size, i, index;
-
-    /* Round up the block size to the next boundary, but always
-     * allocate at least a certain size (MIN_ALLOC).
-     */
-    size = APR_ALIGN(in_size + APR_MEMNODE_T_SIZE, BOUNDARY_SIZE);
-    if (size < in_size) {
-        return NULL;
-    }
-    if (size < MIN_ALLOC)
-        size = MIN_ALLOC;
-
-    /* Find the index for this node size by
-     * dividing its size by the boundary size
-     */
-    index = (size >> BOUNDARY_INDEX) - 1;
-    
-    if (index > APR_UINT32_MAX) {
-        return NULL;
-    }
-
-    /* First see if there are any nodes in the area we know
-     * our node will fit into.
-     */
-    if (index <= allocator->max_index) {
-#if APR_HAS_THREADS
-        if (allocator->mutex)
-            apr_thread_mutex_lock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-
-        /* Walk the free list to see if there are
-         * any nodes on it of the requested size
-         *
-         * NOTE: an optimization would be to check
-         * allocator->free[index] first and if no
-         * node is present, directly use
-         * allocator->free[max_index].  This seems
-         * like overkill though and could cause
-         * memory waste.
-         */
-        max_index = allocator->max_index;
-        ref = &allocator->free[index];
-        i = index;
-        while (*ref == NULL && i < max_index) {
-           ref++;
-           i++;
-        }
-
-        if ((node = *ref) != NULL) {
-            /* If we have found a node and it doesn't have any
-             * nodes waiting in line behind it _and_ we are on
-             * the highest available index, find the new highest
-             * available index
-             */
-            if ((*ref = node->next) == NULL && i >= max_index) {
-                do {
-                    ref--;
-                    max_index--;
-                }
-                while (*ref == NULL && max_index > 0);
-
-                allocator->max_index = max_index;
-            }
-
-            allocator->current_free_index += node->index + 1;
-            if (allocator->current_free_index > allocator->max_free_index)
-                allocator->current_free_index = allocator->max_free_index;
-
-#if APR_HAS_THREADS
-            if (allocator->mutex)
-                apr_thread_mutex_unlock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-
-            node->next = NULL;
-            node->first_avail = (char *)node + APR_MEMNODE_T_SIZE;
-
-            return node;
-        }
-
-#if APR_HAS_THREADS
-        if (allocator->mutex)
-            apr_thread_mutex_unlock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-    }
-
-    /* If we found nothing, seek the sink (at index 0), if
-     * it is not empty.
-     */
-    else if (allocator->free[0]) {
-#if APR_HAS_THREADS
-        if (allocator->mutex)
-            apr_thread_mutex_lock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-
-        /* Walk the free list to see if there are
-         * any nodes on it of the requested size
-         */
-        ref = &allocator->free[0];
-        while ((node = *ref) != NULL && index > node->index)
-            ref = &node->next;
-
-        if (node) {
-            *ref = node->next;
-
-            allocator->current_free_index += node->index + 1;
-            if (allocator->current_free_index > allocator->max_free_index)
-                allocator->current_free_index = allocator->max_free_index;
-
-#if APR_HAS_THREADS
-            if (allocator->mutex)
-                apr_thread_mutex_unlock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-
-            node->next = NULL;
-            node->first_avail = (char *)node + APR_MEMNODE_T_SIZE;
-
-            return node;
-        }
-
-#if APR_HAS_THREADS
-        if (allocator->mutex)
-            apr_thread_mutex_unlock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-    }
-
-    /* If we haven't got a suitable node, malloc a new one
-     * and initialize it.
-     */
-#if APR_ALLOCATOR_USES_MMAP
-    if ((node = mmap(NULL, size, PROT_READ|PROT_WRITE,
-                     MAP_PRIVATE|MAP_ANON, -1, 0)) == MAP_FAILED)
-#else
-    if ((node = malloc(size)) == NULL)
-#endif
-        return NULL;
-
-    node->next = NULL;
-    node->index = (APR_UINT32_TRUNC_CAST)index;
-    node->first_avail = (char *)node + APR_MEMNODE_T_SIZE;
-    node->endp = (char *)node + size;
-
-    return node;
-}
-
-static APR_INLINE
-void allocator_free(apr_allocator_t *allocator, apr_memnode_t *node)
-{
-    apr_memnode_t *next, *freelist = NULL;
-    apr_uint32_t index, max_index;
-    apr_uint32_t max_free_index, current_free_index;
-
-#if APR_HAS_THREADS
-    if (allocator->mutex)
-        apr_thread_mutex_lock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-
-    max_index = allocator->max_index;
-    max_free_index = allocator->max_free_index;
-    current_free_index = allocator->current_free_index;
-
-    /* Walk the list of submitted nodes and free them one by one,
-     * shoving them in the right 'size' buckets as we go.
-     */
-    do {
-        next = node->next;
-        index = node->index;
-
-        if (max_free_index != APR_ALLOCATOR_MAX_FREE_UNLIMITED
-            && index + 1 > current_free_index) {
-            node->next = freelist;
-            freelist = node;
-        }
-        else if (index < MAX_INDEX) {
-            /* Add the node to the appropiate 'size' bucket.  Adjust
-             * the max_index when appropiate.
-             */
-            if ((node->next = allocator->free[index]) == NULL
-                && index > max_index) {
-                max_index = index;
-            }
-            allocator->free[index] = node;
-            if (current_free_index >= index + 1)
-                current_free_index -= index + 1;
-            else
-                current_free_index = 0;
-        }
-        else {
-            /* This node is too large to keep in a specific size bucket,
-             * just add it to the sink (at index 0).
-             */
-            node->next = allocator->free[0];
-            allocator->free[0] = node;
-            if (current_free_index >= index + 1)
-                current_free_index -= index + 1;
-            else
-                current_free_index = 0;
-        }
-    } while ((node = next) != NULL);
-
-    allocator->max_index = max_index;
-    allocator->current_free_index = current_free_index;
-
-#if APR_HAS_THREADS
-    if (allocator->mutex)
-        apr_thread_mutex_unlock(allocator->mutex);
-#endif /* APR_HAS_THREADS */
-
-    while (freelist != NULL) {
-        node = freelist;
-        freelist = node->next;
-#if APR_ALLOCATOR_USES_MMAP
-        munmap(node, (node->index+1) << BOUNDARY_INDEX);
-#else
-        free(node);
-#endif
-    }
-}
-
-APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator,
-                                                 apr_size_t size)
-{
-    return allocator_alloc(allocator, size);
-}
-
-APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator,
-                                     apr_memnode_t *node)
-{
-    allocator_free(allocator, node);
-}
-
-
-
-/*
- * Debug level
- */
-
-#define APR_POOL_DEBUG_GENERAL  0x01
-#define APR_POOL_DEBUG_VERBOSE  0x02
-#define APR_POOL_DEBUG_LIFETIME 0x04
-#define APR_POOL_DEBUG_OWNER    0x08
-#define APR_POOL_DEBUG_VERBOSE_ALLOC 0x10
-
-#define APR_POOL_DEBUG_VERBOSE_ALL (APR_POOL_DEBUG_VERBOSE \
-                                    | APR_POOL_DEBUG_VERBOSE_ALLOC)
-
-
-/*
- * Structures
- */
-
-typedef struct cleanup_t cleanup_t;
-
-/** A list of processes */
-struct process_chain {
-    /** The process ID */
-    apr_proc_t *proc;
-    apr_kill_conditions_e kill_how;
-    /** The next process in the list */
-    struct process_chain *next;
-};
-
-
-#if APR_POOL_DEBUG
-
-typedef struct debug_node_t debug_node_t;
-
-struct debug_node_t {
-    debug_node_t *next;
-    apr_uint32_t  index;
-    void         *beginp[64];
-    void         *endp[64];
-};
-
-#define SIZEOF_DEBUG_NODE_T APR_ALIGN_DEFAULT(sizeof(debug_node_t))
-
-#endif /* APR_POOL_DEBUG */
-
-/* The ref field in the apr_pool_t struct holds a
- * pointer to the pointer referencing this pool.
- * It is used for parent, child, sibling management.
- * Look at apr_pool_create_ex() and apr_pool_destroy()
- * to see how it is used.
- */
-struct apr_pool_t {
-    apr_pool_t           *parent;
-    apr_pool_t           *child;
-    apr_pool_t           *sibling;
-    apr_pool_t          **ref;
-    cleanup_t            *cleanups;
-    cleanup_t            *free_cleanups;
-    apr_allocator_t      *allocator;
-    struct process_chain *subprocesses;
-    apr_abortfunc_t       abort_fn;
-    apr_hash_t           *user_data;
-    const char           *tag;
-
-#if !APR_POOL_DEBUG
-    apr_memnode_t        *active;
-    apr_memnode_t        *self; /* The node containing the pool itself */
-    char                 *self_first_avail;
-
-#else /* APR_POOL_DEBUG */
-    apr_pool_t           *joined; /* the caller has guaranteed that this pool
-                                   * will survive as long as ->joined */
-    debug_node_t         *nodes;
-    const char           *file_line;
-    apr_uint32_t          creation_flags;
-    unsigned int          stat_alloc;
-    unsigned int          stat_total_alloc;
-    unsigned int          stat_clear;
-#if APR_HAS_THREADS
-    apr_os_thread_t       owner;
-    apr_thread_mutex_t   *mutex;
-#endif /* APR_HAS_THREADS */
-#endif /* APR_POOL_DEBUG */
-#ifdef NETWARE
-    apr_os_proc_t         owner_proc;
-#endif /* defined(NETWARE) */
-    cleanup_t            *pre_cleanups;
-};
-
-#define SIZEOF_POOL_T       APR_ALIGN_DEFAULT(sizeof(apr_pool_t))
-
-
-/*
- * Variables
- */
-
-static apr_byte_t   apr_pools_initialized = 0;
-static apr_pool_t  *global_pool = NULL;
-
-#if !APR_POOL_DEBUG
-static apr_allocator_t *global_allocator = NULL;
-#endif /* !APR_POOL_DEBUG */
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-static apr_file_t *file_stderr = NULL;
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
-
-/*
- * Local functions
- */
-
-static void run_cleanups(cleanup_t **c);
-static void free_proc_chain(struct process_chain *procs);
-
-#if APR_POOL_DEBUG
-static void pool_destroy_debug(apr_pool_t *pool, const char *file_line);
-#endif
-
-#if !APR_POOL_DEBUG
-/*
- * Initialization
- */
-
-APR_DECLARE(apr_status_t) apr_pool_initialize(void)
-{
-    apr_status_t rv;
-
-    if (apr_pools_initialized++)
-        return APR_SUCCESS;
-
-#if APR_ALLOCATOR_USES_MMAP && defined(_SC_PAGESIZE)
-    boundary_size = sysconf(_SC_PAGESIZE);
-    boundary_index = 12;
-    while ( (1 << boundary_index) < boundary_size)
-        boundary_index++;
-    boundary_size = (1 << boundary_index);
-#endif
-
-    if ((rv = apr_allocator_create(&global_allocator)) != APR_SUCCESS) {
-        apr_pools_initialized = 0;
-        return rv;
-    }
-
-    if ((rv = apr_pool_create_ex(&global_pool, NULL, NULL,
-                                 global_allocator)) != APR_SUCCESS) {
-        apr_allocator_destroy(global_allocator);
-        global_allocator = NULL;
-        apr_pools_initialized = 0;
-        return rv;
-    }
-
-    apr_pool_tag(global_pool, "apr_global_pool");
-
-    /* This has to happen here because mutexes might be backed by
-     * atomics.  It used to be snug and safe in apr_initialize().
-     *
-     * Warning: apr_atomic_init() must always be called, by any
-     * means possible, from apr_initialize().
-     */
-    if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) {
-        return rv;
-    }
-
-#if APR_HAS_THREADS
-    {
-        apr_thread_mutex_t *mutex;
-
-        if ((rv = apr_thread_mutex_create(&mutex,
-                                          APR_THREAD_MUTEX_DEFAULT,
-                                          global_pool)) != APR_SUCCESS) {
-            return rv;
-        }
-
-        apr_allocator_mutex_set(global_allocator, mutex);
-    }
-#endif /* APR_HAS_THREADS */
-
-    apr_allocator_owner_set(global_allocator, global_pool);
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(void) apr_pool_terminate(void)
-{
-    if (!apr_pools_initialized)
-        return;
-
-    if (--apr_pools_initialized)
-        return;
-
-    apr_pool_destroy(global_pool); /* This will also destroy the mutex */
-    global_pool = NULL;
-
-    global_allocator = NULL;
-}
-
-
-/* Node list management helper macros; list_insert() inserts 'node'
- * before 'point'. */
-#define list_insert(node, point) do {           \
-    node->ref = point->ref;                     \
-    *node->ref = node;                          \
-    node->next = point;                         \
-    point->ref = &node->next;                   \
-} while (0)
-
-/* list_remove() removes 'node' from its list. */
-#define list_remove(node) do {                  \
-    *node->ref = node->next;                    \
-    node->next->ref = node->ref;                \
-} while (0)
-
-/* Returns the amount of free space in the given node. */
-#define node_free_space(node_) ((apr_size_t)(node_->endp - node_->first_avail))
-
-/*
- * Memory allocation
- */
-
-APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t in_size)
-{
-    apr_memnode_t *active, *node;
-    void *mem;
-    apr_size_t size, free_index;
-
-    size = APR_ALIGN_DEFAULT(in_size);
-    if (size < in_size) {
-        if (pool->abort_fn)
-            pool->abort_fn(APR_ENOMEM);
-
-        return NULL;
-    }
-    active = pool->active;
-
-    /* If the active node has enough bytes left, use it. */
-    if (size <= node_free_space(active)) {
-        mem = active->first_avail;
-        active->first_avail += size;
-
-        return mem;
-    }
-
-    node = active->next;
-    if (size <= node_free_space(node)) {
-        list_remove(node);
-    }
-    else {
-        if ((node = allocator_alloc(pool->allocator, size)) == NULL) {
-            if (pool->abort_fn)
-                pool->abort_fn(APR_ENOMEM);
-
-            return NULL;
-        }
-    }
-
-    node->free_index = 0;
-
-    mem = node->first_avail;
-    node->first_avail += size;
-
-    list_insert(node, active);
-
-    pool->active = node;
-
-    free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
-                            BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
-
-    active->free_index = (APR_UINT32_TRUNC_CAST)free_index;
-    node = active->next;
-    if (free_index >= node->free_index)
-        return mem;
-
-    do {
-        node = node->next;
-    }
-    while (free_index < node->free_index);
-
-    list_remove(active);
-    list_insert(active, node);
-
-    return mem;
-}
-
-/* Provide an implementation of apr_pcalloc for backward compatibility
- * with code built before apr_pcalloc was a macro
- */
-
-#ifdef apr_pcalloc
-#undef apr_pcalloc
-#endif
-
-APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size);
-APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size)
-{
-    void *mem;
-
-    if ((mem = apr_palloc(pool, size)) != NULL) {
-        memset(mem, 0, size);
-    }
-
-    return mem;
-}
-
-
-/*
- * Pool creation/destruction
- */
-
-APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool)
-{
-    apr_memnode_t *active;
-
-    /* Run pre destroy cleanups */
-    run_cleanups(&pool->pre_cleanups);
-    pool->pre_cleanups = NULL;
-
-    /* Destroy the subpools.  The subpools will detach themselves from
-     * this pool thus this loop is safe and easy.
-     */
-    while (pool->child)
-        apr_pool_destroy(pool->child);
-
-    /* Run cleanups */
-    run_cleanups(&pool->cleanups);
-    pool->cleanups = NULL;
-    pool->free_cleanups = NULL;
-
-    /* Free subprocesses */
-    free_proc_chain(pool->subprocesses);
-    pool->subprocesses = NULL;
-
-    /* Clear the user data. */
-    pool->user_data = NULL;
-
-    /* Find the node attached to the pool structure, reset it, make
-     * it the active node and free the rest of the nodes.
-     */
-    active = pool->active = pool->self;
-    active->first_avail = pool->self_first_avail;
-
-    if (active->next == active)
-        return;
-
-    *active->ref = NULL;
-    allocator_free(pool->allocator, active->next);
-    active->next = active;
-    active->ref = &active->next;
-}
-
-APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool)
-{
-    apr_memnode_t *active;
-    apr_allocator_t *allocator;
-
-    /* Run pre destroy cleanups */
-    run_cleanups(&pool->pre_cleanups);
-    pool->pre_cleanups = NULL;
-
-    /* Destroy the subpools.  The subpools will detach themselve from
-     * this pool thus this loop is safe and easy.
-     */
-    while (pool->child)
-        apr_pool_destroy(pool->child);
-
-    /* Run cleanups */
-    run_cleanups(&pool->cleanups);
-
-    /* Free subprocesses */
-    free_proc_chain(pool->subprocesses);
-
-    /* Remove the pool from the parents child list */
-    if (pool->parent) {
-#if APR_HAS_THREADS
-        apr_thread_mutex_t *mutex;
-
-        if ((mutex = apr_allocator_mutex_get(pool->parent->allocator)) != NULL)
-            apr_thread_mutex_lock(mutex);
-#endif /* APR_HAS_THREADS */
-
-        if ((*pool->ref = pool->sibling) != NULL)
-            pool->sibling->ref = pool->ref;
-
-#if APR_HAS_THREADS
-        if (mutex)
-            apr_thread_mutex_unlock(mutex);
-#endif /* APR_HAS_THREADS */
-    }
-
-    /* Find the block attached to the pool structure.  Save a copy of the
-     * allocator pointer, because the pool struct soon will be no more.
-     */
-    allocator = pool->allocator;
-    active = pool->self;
-    *active->ref = NULL;
-
-#if APR_HAS_THREADS
-    if (apr_allocator_owner_get(allocator) == pool) {
-        /* Make sure to remove the lock, since it is highly likely to
-         * be invalid now.
-         */
-        apr_allocator_mutex_set(allocator, NULL);
-    }
-#endif /* APR_HAS_THREADS */
-
-    /* Free all the nodes in the pool (including the node holding the
-     * pool struct), by giving them back to the allocator.
-     */
-    allocator_free(allocator, active);
-
-    /* If this pool happens to be the owner of the allocator, free
-     * everything in the allocator (that includes the pool struct
-     * and the allocator).  Don't worry about destroying the optional mutex
-     * in the allocator, it will have been destroyed by the cleanup function.
-     */
-    if (apr_allocator_owner_get(allocator) == pool) {
-        apr_allocator_destroy(allocator);
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
-                                             apr_pool_t *parent,
-                                             apr_abortfunc_t abort_fn,
-                                             apr_allocator_t *allocator)
-{
-    apr_pool_t *pool;
-    apr_memnode_t *node;
-
-    *newpool = NULL;
-
-    if (!parent)
-        parent = global_pool;
-
-    /* parent will always be non-NULL here except the first time a
-     * pool is created, in which case allocator is guaranteed to be
-     * non-NULL. */
-
-    if (!abort_fn && parent)
-        abort_fn = parent->abort_fn;
-
-    if (allocator == NULL)
-        allocator = parent->allocator;
-
-    if ((node = allocator_alloc(allocator,
-                                MIN_ALLOC - APR_MEMNODE_T_SIZE)) == NULL) {
-        if (abort_fn)
-            abort_fn(APR_ENOMEM);
-
-        return APR_ENOMEM;
-    }
-
-    node->next = node;
-    node->ref = &node->next;
-
-    pool = (apr_pool_t *)node->first_avail;
-    node->first_avail = pool->self_first_avail = (char *)pool + SIZEOF_POOL_T;
-
-    pool->allocator = allocator;
-    pool->active = pool->self = node;
-    pool->abort_fn = abort_fn;
-    pool->child = NULL;
-    pool->cleanups = NULL;
-    pool->free_cleanups = NULL;
-    pool->pre_cleanups = NULL;
-    pool->subprocesses = NULL;
-    pool->user_data = NULL;
-    pool->tag = NULL;
-
-#ifdef NETWARE
-    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
-#endif /* defined(NETWARE) */
-
-    if ((pool->parent = parent) != NULL) {
-#if APR_HAS_THREADS
-        apr_thread_mutex_t *mutex;
-
-        if ((mutex = apr_allocator_mutex_get(parent->allocator)) != NULL)
-            apr_thread_mutex_lock(mutex);
-#endif /* APR_HAS_THREADS */
-
-        if ((pool->sibling = parent->child) != NULL)
-            pool->sibling->ref = &pool->sibling;
-
-        parent->child = pool;
-        pool->ref = &parent->child;
-
-#if APR_HAS_THREADS
-        if (mutex)
-            apr_thread_mutex_unlock(mutex);
-#endif /* APR_HAS_THREADS */
-    }
-    else {
-        pool->sibling = NULL;
-        pool->ref = NULL;
-    }
-
-    *newpool = pool;
-
-    return APR_SUCCESS;
-}
-
-/* Deprecated. Renamed to apr_pool_create_unmanaged_ex
- */
-APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
-                                                  apr_abortfunc_t abort_fn,
-                                                  apr_allocator_t *allocator)
-{
-    return apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator);
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
-                                                  apr_abortfunc_t abort_fn,
-                                                  apr_allocator_t *allocator)
-{
-    apr_pool_t *pool;
-    apr_memnode_t *node;
-    apr_allocator_t *pool_allocator;
-
-    *newpool = NULL;
-
-    if (!apr_pools_initialized)
-        return APR_ENOPOOL;
-    if ((pool_allocator = allocator) == NULL) {
-        if ((pool_allocator = malloc(SIZEOF_ALLOCATOR_T)) == NULL) {
-            if (abort_fn)
-                abort_fn(APR_ENOMEM);
-
-            return APR_ENOMEM;
-        }
-        memset(pool_allocator, 0, SIZEOF_ALLOCATOR_T);
-        pool_allocator->max_free_index = APR_ALLOCATOR_MAX_FREE_UNLIMITED;
-    }
-    if ((node = allocator_alloc(pool_allocator,
-                                MIN_ALLOC - APR_MEMNODE_T_SIZE)) == NULL) {
-        if (abort_fn)
-            abort_fn(APR_ENOMEM);
-
-        return APR_ENOMEM;
-    }
-
-    node->next = node;
-    node->ref = &node->next;
-
-    pool = (apr_pool_t *)node->first_avail;
-    node->first_avail = pool->self_first_avail = (char *)pool + SIZEOF_POOL_T;
-
-    pool->allocator = pool_allocator;
-    pool->active = pool->self = node;
-    pool->abort_fn = abort_fn;
-    pool->child = NULL;
-    pool->cleanups = NULL;
-    pool->free_cleanups = NULL;
-    pool->pre_cleanups = NULL;
-    pool->subprocesses = NULL;
-    pool->user_data = NULL;
-    pool->tag = NULL;
-    pool->parent = NULL;
-    pool->sibling = NULL;
-    pool->ref = NULL;
-
-#ifdef NETWARE
-    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
-#endif /* defined(NETWARE) */
-    if (!allocator)
-        pool_allocator->owner = pool;
-    *newpool = pool;
-
-    return APR_SUCCESS;
-}
-
-/*
- * "Print" functions
- */
-
-/*
- * apr_psprintf is implemented by writing directly into the current
- * block of the pool, starting right at first_avail.  If there's
- * insufficient room, then a new block is allocated and the earlier
- * output is copied over.  The new block isn't linked into the pool
- * until all the output is done.
- *
- * Note that this is completely safe because nothing else can
- * allocate in this apr_pool_t while apr_psprintf is running.  alarms are
- * blocked, and the only thing outside of apr_pools.c that's invoked
- * is apr_vformatter -- which was purposefully written to be
- * self-contained with no callouts.
- */
-
-struct psprintf_data {
-    apr_vformatter_buff_t vbuff;
-    apr_memnode_t   *node;
-    apr_pool_t      *pool;
-    apr_byte_t       got_a_new_node;
-    apr_memnode_t   *free;
-};
-
-#define APR_PSPRINTF_MIN_STRINGSIZE 32
-
-static int psprintf_flush(apr_vformatter_buff_t *vbuff)
-{
-    struct psprintf_data *ps = (struct psprintf_data *)vbuff;
-    apr_memnode_t *node, *active;
-    apr_size_t cur_len, size;
-    char *strp;
-    apr_pool_t *pool;
-    apr_size_t free_index;
-
-    pool = ps->pool;
-    active = ps->node;
-    strp = ps->vbuff.curpos;
-    cur_len = strp - active->first_avail;
-    size = cur_len << 1;
-
-    /* Make sure that we don't try to use a block that has less
-     * than APR_PSPRINTF_MIN_STRINGSIZE bytes left in it.  This
-     * also catches the case where size == 0, which would result
-     * in reusing a block that can't even hold the NUL byte.
-     */
-    if (size < APR_PSPRINTF_MIN_STRINGSIZE)
-        size = APR_PSPRINTF_MIN_STRINGSIZE;
-
-    node = active->next;
-    if (!ps->got_a_new_node && size <= node_free_space(node)) {
-
-        list_remove(node);
-        list_insert(node, active);
-
-        node->free_index = 0;
-
-        pool->active = node;
-
-        free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
-                                BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
-
-        active->free_index = (APR_UINT32_TRUNC_CAST)free_index;
-        node = active->next;
-        if (free_index < node->free_index) {
-            do {
-                node = node->next;
-            }
-            while (free_index < node->free_index);
-
-            list_remove(active);
-            list_insert(active, node);
-        }
-
-        node = pool->active;
-    }
-    else {
-        if ((node = allocator_alloc(pool->allocator, size)) == NULL)
-            return -1;
-
-        if (ps->got_a_new_node) {
-            active->next = ps->free;
-            ps->free = active;
-        }
-
-        ps->got_a_new_node = 1;
-    }
-
-    memcpy(node->first_avail, active->first_avail, cur_len);
-
-    ps->node = node;
-    ps->vbuff.curpos = node->first_avail + cur_len;
-    ps->vbuff.endpos = node->endp - 1; /* Save a byte for NUL terminator */
-
-    return 0;
-}
-
-APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap)
-{
-    struct psprintf_data ps;
-    char *strp;
-    apr_size_t size;
-    apr_memnode_t *active, *node;
-    apr_size_t free_index;
-
-    ps.node = active = pool->active;
-    ps.pool = pool;
-    ps.vbuff.curpos  = ps.node->first_avail;
-
-    /* Save a byte for the NUL terminator */
-    ps.vbuff.endpos = ps.node->endp - 1;
-    ps.got_a_new_node = 0;
-    ps.free = NULL;
-
-    /* Make sure that the first node passed to apr_vformatter has at least
-     * room to hold the NUL terminator.
-     */
-    if (ps.node->first_avail == ps.node->endp) {
-        if (psprintf_flush(&ps.vbuff) == -1) {
-            if (pool->abort_fn) {
-                pool->abort_fn(APR_ENOMEM);
-            }
-
-            return NULL;
-        }
-    }
-
-    if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) {
-        if (pool->abort_fn)
-            pool->abort_fn(APR_ENOMEM);
-
-        return NULL;
-    }
-
-    strp = ps.vbuff.curpos;
-    *strp++ = '\0';
-
-    size = strp - ps.node->first_avail;
-    size = APR_ALIGN_DEFAULT(size);
-    strp = ps.node->first_avail;
-    ps.node->first_avail += size;
-
-    if (ps.free)
-        allocator_free(pool->allocator, ps.free);
-
-    /*
-     * Link the node in if it's a new one
-     */
-    if (!ps.got_a_new_node)
-        return strp;
-
-    active = pool->active;
-    node = ps.node;
-
-    node->free_index = 0;
-
-    list_insert(node, active);
-
-    pool->active = node;
-
-    free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
-                            BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
-
-    active->free_index = (APR_UINT32_TRUNC_CAST)free_index;
-    node = active->next;
-
-    if (free_index >= node->free_index)
-        return strp;
-
-    do {
-        node = node->next;
-    }
-    while (free_index < node->free_index);
-
-    list_remove(active);
-    list_insert(active, node);
-
-    return strp;
-}
-
-
-#else /* APR_POOL_DEBUG */
-/*
- * Debug helper functions
- */
-
-
-/*
- * Walk the pool tree rooted at pool, depth first.  When fn returns
- * anything other than 0, abort the traversal and return the value
- * returned by fn.
- */
-static int apr_pool_walk_tree(apr_pool_t *pool,
-                              int (*fn)(apr_pool_t *pool, void *data),
-                              void *data)
-{
-    int rv;
-    apr_pool_t *child;
-
-    rv = fn(pool, data);
-    if (rv)
-        return rv;
-
-#if APR_HAS_THREADS
-    if (pool->mutex) {
-        apr_thread_mutex_lock(pool->mutex);
-                        }
-#endif /* APR_HAS_THREADS */
-
-    child = pool->child;
-    while (child) {
-        rv = apr_pool_walk_tree(child, fn, data);
-        if (rv)
-            break;
-
-        child = child->sibling;
-    }
-
-#if APR_HAS_THREADS
-    if (pool->mutex) {
-        apr_thread_mutex_unlock(pool->mutex);
-    }
-#endif /* APR_HAS_THREADS */
-
-    return rv;
-}
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-static void apr_pool_log_event(apr_pool_t *pool, const char *event,
-                               const char *file_line, int deref)
-{
-    if (file_stderr) {
-        if (deref) {
-            apr_file_printf(file_stderr,
-                "POOL DEBUG: "
-                "[%lu"
-#if APR_HAS_THREADS
-                "/%lu"
-#endif /* APR_HAS_THREADS */
-                "] "
-                "%7s "
-                "(%10lu/%10lu/%10lu) "
-                "0x%pp \"%s\" "
-                "<%s> "
-                "(%u/%u/%u) "
-                "\n",
-                (unsigned long)getpid(),
-#if APR_HAS_THREADS
-                (unsigned long)apr_os_thread_current(),
-#endif /* APR_HAS_THREADS */
-                event,
-                (unsigned long)apr_pool_num_bytes(pool, 0),
-                (unsigned long)apr_pool_num_bytes(pool, 1),
-                (unsigned long)apr_pool_num_bytes(global_pool, 1),
-                pool, pool->tag,
-                file_line,
-                pool->stat_alloc, pool->stat_total_alloc, pool->stat_clear);
-        }
-        else {
-            apr_file_printf(file_stderr,
-                "POOL DEBUG: "
-                "[%lu"
-#if APR_HAS_THREADS
-                "/%lu"
-#endif /* APR_HAS_THREADS */
-                "] "
-                "%7s "
-                "                                   "
-                "0x%pp "
-                "<%s> "
-                "\n",
-                (unsigned long)getpid(),
-#if APR_HAS_THREADS
-                (unsigned long)apr_os_thread_current(),
-#endif /* APR_HAS_THREADS */
-                event,
-                pool,
-                file_line);
-        }
-    }
-}
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME)
-static int pool_is_child_of(apr_pool_t *parent, void *data)
-{
-    apr_pool_t *pool = (apr_pool_t *)data;
-
-    return (pool == parent);
-}
-
-static int apr_pool_is_child_of(apr_pool_t *pool, apr_pool_t *parent)
-{
-    if (parent == NULL)
-        return 0;
-
-    return apr_pool_walk_tree(parent, pool_is_child_of, pool);
-}
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
-
-static void apr_pool_check_integrity(apr_pool_t *pool)
-{
-    /* Rule of thumb: use of the global pool is always
-     * ok, since the only user is apr_pools.c.  Unless
-     * people have searched for the top level parent and
-     * started to use that...
-     */
-    if (pool == global_pool || global_pool == NULL)
-        return;
-
-    /* Lifetime
-     * This basically checks to see if the pool being used is still
-     * a relative to the global pool.  If not it was previously
-     * destroyed, in which case we abort().
-     */
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME)
-    if (!apr_pool_is_child_of(pool, global_pool)) {
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-        apr_pool_log_event(pool, "LIFE",
-                           __FILE__ ":apr_pool_integrity check", 0);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
-        abort();
-    }
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER)
-#if APR_HAS_THREADS
-    if (!apr_os_thread_equal(pool->owner, apr_os_thread_current())) {
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-        apr_pool_log_event(pool, "THREAD",
-                           __FILE__ ":apr_pool_integrity check", 0);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
-        abort();
-    }
-#endif /* APR_HAS_THREADS */
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER) */
-}
-
-
-/*
- * Initialization (debug)
- */
-
-APR_DECLARE(apr_status_t) apr_pool_initialize(void)
-{
-    apr_status_t rv;
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-    char *logpath;
-    apr_file_t *debug_log = NULL;
-#endif
-
-    if (apr_pools_initialized++)
-        return APR_SUCCESS;
-
-#if APR_ALLOCATOR_USES_MMAP && defined(_SC_PAGESIZE)
-    boundary_size = sysconf(_SC_PAGESIZE);
-    boundary_index = 12;
-    while ( (1 << boundary_index) < boundary_size)
-        boundary_index++;
-    boundary_size = (1 << boundary_index);
-#endif
-
-    /* Since the debug code works a bit differently then the
-     * regular pools code, we ask for a lock here.  The regular
-     * pools code has got this lock embedded in the global
-     * allocator, a concept unknown to debug mode.
-     */
-    if ((rv = apr_pool_create_ex(&global_pool, NULL, NULL,
-                                 NULL)) != APR_SUCCESS) {
-        return rv;
-    }
-
-    apr_pool_tag(global_pool, "APR global pool");
-
-    apr_pools_initialized = 1;
-
-    /* This has to happen here because mutexes might be backed by
-     * atomics.  It used to be snug and safe in apr_initialize().
-     */
-    if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) {
-        return rv;
-    }
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-    rv = apr_env_get(&logpath, "APR_POOL_DEBUG_LOG", global_pool);
-
-    /* Don't pass file_stderr directly to apr_file_open() here, since
-     * apr_file_open() can call back to apr_pool_log_event() and that
-     * may attempt to use then then non-NULL but partially set up file
-     * object. */
-    if (rv == APR_SUCCESS) {
-        apr_file_open(&debug_log, logpath, APR_APPEND|APR_WRITE|APR_CREATE,
-                      APR_OS_DEFAULT, global_pool);
-    }
-    else {
-        apr_file_open_stderr(&debug_log, global_pool);
-    }
-
-    /* debug_log is now a file handle. */
-    file_stderr = debug_log;
-
-    if (file_stderr) {
-        apr_file_printf(file_stderr,
-            "POOL DEBUG: [PID"
-#if APR_HAS_THREADS
-            "/TID"
-#endif /* APR_HAS_THREADS */
-            "] ACTION  (SIZE      /POOL SIZE /TOTAL SIZE) "
-            "POOL       \"TAG\" <__FILE__:__LINE__> (ALLOCS/TOTAL ALLOCS/CLEARS)\n");
-
-        apr_pool_log_event(global_pool, "GLOBAL", __FILE__ ":apr_pool_initialize", 0);
-    }
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(void) apr_pool_terminate(void)
-{
-    if (!apr_pools_initialized)
-        return;
-
-    if (--apr_pools_initialized)
-        return;
-
-    apr_pool_destroy(global_pool); /* This will also destroy the mutex */
-    global_pool = NULL;
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-    file_stderr = NULL;
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
-}
-
-
-/*
- * Memory allocation (debug)
- */
-
-static void *pool_alloc(apr_pool_t *pool, apr_size_t size)
-{
-    debug_node_t *node;
-    void *mem;
-
-    if ((mem = malloc(size)) == NULL) {
-        if (pool->abort_fn)
-            pool->abort_fn(APR_ENOMEM);
-
-        return NULL;
-    }
-
-    node = pool->nodes;
-    if (node == NULL || node->index == 64) {
-        if ((node = malloc(SIZEOF_DEBUG_NODE_T)) == NULL) {
-            free(mem);
-            if (pool->abort_fn)
-                pool->abort_fn(APR_ENOMEM);
-
-            return NULL;
-        }
-
-        memset(node, 0, SIZEOF_DEBUG_NODE_T);
-
-        node->next = pool->nodes;
-        pool->nodes = node;
-        node->index = 0;
-    }
-
-    node->beginp[node->index] = mem;
-    node->endp[node->index] = (char *)mem + size;
-    node->index++;
-
-    pool->stat_alloc++;
-    pool->stat_total_alloc++;
-
-    return mem;
-}
-
-APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *pool, apr_size_t size,
-                                     const char *file_line)
-{
-    void *mem;
-
-    apr_pool_check_integrity(pool);
-
-    mem = pool_alloc(pool, size);
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC)
-    apr_pool_log_event(pool, "PALLOC", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) */
-
-    return mem;
-}
-
-APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *pool, apr_size_t size,
-                                      const char *file_line)
-{
-    void *mem;
-
-    apr_pool_check_integrity(pool);
-
-    mem = pool_alloc(pool, size);
-    memset(mem, 0, size);
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC)
-    apr_pool_log_event(pool, "PCALLOC", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) */
-
-    return mem;
-}
-
-
-/*
- * Pool creation/destruction (debug)
- */
-
-#define POOL_POISON_BYTE 'A'
-
-static void pool_clear_debug(apr_pool_t *pool, const char *file_line)
-{
-    debug_node_t *node;
-    apr_uint32_t index;
-
-    /* Run pre destroy cleanups */
-    run_cleanups(&pool->pre_cleanups);
-    pool->pre_cleanups = NULL;
-
-    /* Destroy the subpools.  The subpools will detach themselves from
-     * this pool thus this loop is safe and easy.
-     */
-    while (pool->child)
-        pool_destroy_debug(pool->child, file_line);
-
-    /* Run cleanups */
-    run_cleanups(&pool->cleanups);
-    pool->free_cleanups = NULL;
-    pool->cleanups = NULL;
-
-    /* If new child pools showed up, this is a reason to raise a flag */
-    if (pool->child)
-        abort();
-
-    /* Free subprocesses */
-    free_proc_chain(pool->subprocesses);
-    pool->subprocesses = NULL;
-
-    /* Clear the user data. */
-    pool->user_data = NULL;
-
-    /* Free the blocks, scribbling over them first to help highlight
-     * use-after-free issues. */
-    while ((node = pool->nodes) != NULL) {
-        pool->nodes = node->next;
-
-        for (index = 0; index < node->index; index++) {
-            memset(node->beginp[index], POOL_POISON_BYTE,
-                   (char *)node->endp[index] - (char *)node->beginp[index]);
-            free(node->beginp[index]);
-        }
-
-        memset(node, POOL_POISON_BYTE, SIZEOF_DEBUG_NODE_T);
-        free(node);
-    }
-
-    pool->stat_alloc = 0;
-    pool->stat_clear++;
-}
-
-APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
-                                       const char *file_line)
-{
-#if APR_HAS_THREADS
-    apr_thread_mutex_t *mutex = NULL;
-#endif
-
-    apr_pool_check_integrity(pool);
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
-    apr_pool_log_event(pool, "CLEAR", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
-
-#if APR_HAS_THREADS
-    if (pool->parent != NULL)
-        mutex = pool->parent->mutex;
-
-    /* Lock the parent mutex before clearing so that if we have our
-     * own mutex it won't be accessed by apr_pool_walk_tree after
-     * it has been destroyed.
-     */
-    if (mutex != NULL && mutex != pool->mutex) {
-        apr_thread_mutex_lock(mutex);
-    }
-#endif
-
-    pool_clear_debug(pool, file_line);
-
-#if APR_HAS_THREADS
-    /* If we had our own mutex, it will have been destroyed by
-     * the registered cleanups.  Recreate the mutex.  Unlock
-     * the mutex we obtained above.
-     */
-    if (mutex != pool->mutex) {
-        (void)apr_thread_mutex_create(&pool->mutex,
-                                      APR_THREAD_MUTEX_NESTED, pool);
-
-        if (mutex != NULL)
-            (void)apr_thread_mutex_unlock(mutex);
-    }
-#endif /* APR_HAS_THREADS */
-}
-
-static void pool_destroy_debug(apr_pool_t *pool, const char *file_line)
-{
-    apr_pool_check_integrity(pool);
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
-    apr_pool_log_event(pool, "DESTROY", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
-
-    pool_clear_debug(pool, file_line);
-
-    /* Remove the pool from the parents child list */
-    if (pool->parent) {
-#if APR_HAS_THREADS
-        apr_thread_mutex_t *mutex;
-
-        if ((mutex = pool->parent->mutex) != NULL)
-            apr_thread_mutex_lock(mutex);
-#endif /* APR_HAS_THREADS */
-
-        if ((*pool->ref = pool->sibling) != NULL)
-            pool->sibling->ref = pool->ref;
-
-#if APR_HAS_THREADS
-        if (mutex)
-            apr_thread_mutex_unlock(mutex);
-#endif /* APR_HAS_THREADS */
-    }
-
-    if (pool->allocator != NULL
-        && apr_allocator_owner_get(pool->allocator) == pool) {
-        apr_allocator_destroy(pool->allocator);
-    }
-
-    /* Free the pool itself */
-    free(pool);
-}
-
-APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool,
-                                         const char *file_line)
-{
-    if (pool->joined) {
-        /* Joined pools must not be explicitly destroyed; the caller
-         * has broken the guarantee. */
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
-        apr_pool_log_event(pool, "LIFE",
-                           __FILE__ ":apr_pool_destroy abort on joined", 0);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
-
-        abort();
-    }
-    pool_destroy_debug(pool, file_line);
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
-                                                   apr_pool_t *parent,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-{
-    apr_pool_t *pool;
-
-    *newpool = NULL;
-
-    if (!parent) {
-        parent = global_pool;
-    }
-    else {
-       apr_pool_check_integrity(parent);
-
-       if (!allocator)
-           allocator = parent->allocator;
-    }
-
-    if (!abort_fn && parent)
-        abort_fn = parent->abort_fn;
-
-    if ((pool = malloc(SIZEOF_POOL_T)) == NULL) {
-        if (abort_fn)
-            abort_fn(APR_ENOMEM);
-
-         return APR_ENOMEM;
-    }
-
-    memset(pool, 0, SIZEOF_POOL_T);
-
-    pool->allocator = allocator;
-    pool->abort_fn = abort_fn;
-    pool->tag = file_line;
-    pool->file_line = file_line;
-
-    if ((pool->parent = parent) != NULL) {
-#if APR_HAS_THREADS
-        if (parent->mutex)
-            apr_thread_mutex_lock(parent->mutex);
-#endif /* APR_HAS_THREADS */
-        if ((pool->sibling = parent->child) != NULL)
-            pool->sibling->ref = &pool->sibling;
-
-        parent->child = pool;
-        pool->ref = &parent->child;
-
-#if APR_HAS_THREADS
-        if (parent->mutex)
-            apr_thread_mutex_unlock(parent->mutex);
-#endif /* APR_HAS_THREADS */
-    }
-    else {
-        pool->sibling = NULL;
-        pool->ref = NULL;
-    }
-
-#if APR_HAS_THREADS
-    pool->owner = apr_os_thread_current();
-#endif /* APR_HAS_THREADS */
-#ifdef NETWARE
-    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
-#endif /* defined(NETWARE) */
-
-
-    if (parent == NULL || parent->allocator != allocator) {
-#if APR_HAS_THREADS
-        apr_status_t rv;
-
-        /* No matter what the creation flags say, always create
-         * a lock.  Without it integrity_check and apr_pool_num_bytes
-         * blow up (because they traverse pools child lists that
-         * possibly belong to another thread, in combination with
-         * the pool having no lock).  However, this might actually
-         * hide problems like creating a child pool of a pool
-         * belonging to another thread.
-         */
-        if ((rv = apr_thread_mutex_create(&pool->mutex,
-                APR_THREAD_MUTEX_NESTED, pool)) != APR_SUCCESS) {
-            free(pool);
-            return rv;
-        }
-#endif /* APR_HAS_THREADS */
-    }
-    else {
-#if APR_HAS_THREADS
-        if (parent)
-            pool->mutex = parent->mutex;
-#endif /* APR_HAS_THREADS */
-    }
-
-    *newpool = pool;
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
-    apr_pool_log_event(pool, "CREATE", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_core_ex_debug(apr_pool_t **newpool,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-{
-    return apr_pool_create_unmanaged_ex_debug(newpool, abort_fn, allocator,
-                                              file_line);
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-{
-    apr_pool_t *pool;
-    apr_allocator_t *pool_allocator;
-
-    *newpool = NULL;
-
-    if ((pool = malloc(SIZEOF_POOL_T)) == NULL) {
-        if (abort_fn)
-            abort_fn(APR_ENOMEM);
-
-         return APR_ENOMEM;
-    }
-
-    memset(pool, 0, SIZEOF_POOL_T);
-
-    pool->abort_fn = abort_fn;
-    pool->tag = file_line;
-    pool->file_line = file_line;
-
-#if APR_HAS_THREADS
-    pool->owner = apr_os_thread_current();
-#endif /* APR_HAS_THREADS */
-#ifdef NETWARE
-    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
-#endif /* defined(NETWARE) */
-
-    if ((pool_allocator = allocator) == NULL) {
-        apr_status_t rv;
-        if ((rv = apr_allocator_create(&pool_allocator)) != APR_SUCCESS) {
-            if (abort_fn)
-                abort_fn(rv);
-            return rv;
-        }
-        pool_allocator->owner = pool;
-    }
-    pool->allocator = pool_allocator;
-
-    if (pool->allocator != allocator) {
-#if APR_HAS_THREADS
-        apr_status_t rv;
-
-        /* No matter what the creation flags say, always create
-         * a lock.  Without it integrity_check and apr_pool_num_bytes
-         * blow up (because they traverse pools child lists that
-         * possibly belong to another thread, in combination with
-         * the pool having no lock).  However, this might actually
-         * hide problems like creating a child pool of a pool
-         * belonging to another thread.
-         */
-        if ((rv = apr_thread_mutex_create(&pool->mutex,
-                APR_THREAD_MUTEX_NESTED, pool)) != APR_SUCCESS) {
-            free(pool);
-            return rv;
-        }
-#endif /* APR_HAS_THREADS */
-    }
-
-    *newpool = pool;
-
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
-    apr_pool_log_event(pool, "CREATE", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
-
-    return APR_SUCCESS;
-}
-
-/*
- * "Print" functions (debug)
- */
-
-struct psprintf_data {
-    apr_vformatter_buff_t vbuff;
-    char      *mem;
-    apr_size_t size;
-};
-
-static int psprintf_flush(apr_vformatter_buff_t *vbuff)
-{
-    struct psprintf_data *ps = (struct psprintf_data *)vbuff;
-    apr_size_t size;
-
-    size = ps->vbuff.curpos - ps->mem;
-
-    ps->size <<= 1;
-    if ((ps->mem = realloc(ps->mem, ps->size)) == NULL)
-        return -1;
-
-    ps->vbuff.curpos = ps->mem + size;
-    ps->vbuff.endpos = ps->mem + ps->size - 1;
-
-    return 0;
-}
-
-APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap)
-{
-    struct psprintf_data ps;
-    debug_node_t *node;
-
-    apr_pool_check_integrity(pool);
-
-    ps.size = 64;
-    ps.mem = malloc(ps.size);
-    ps.vbuff.curpos  = ps.mem;
-
-    /* Save a byte for the NUL terminator */
-    ps.vbuff.endpos = ps.mem + ps.size - 1;
-
-    if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) {
-        if (pool->abort_fn)
-            pool->abort_fn(APR_ENOMEM);
-
-        return NULL;
-    }
-
-    *ps.vbuff.curpos++ = '\0';
-
-    /*
-     * Link the node in
-     */
-    node = pool->nodes;
-    if (node == NULL || node->index == 64) {
-        if ((node = malloc(SIZEOF_DEBUG_NODE_T)) == NULL) {
-            if (pool->abort_fn)
-                pool->abort_fn(APR_ENOMEM);
-
-            return NULL;
-        }
-
-        node->next = pool->nodes;
-        pool->nodes = node;
-        node->index = 0;
-    }
-
-    node->beginp[node->index] = ps.mem;
-    node->endp[node->index] = ps.mem + ps.size;
-    node->index++;
-
-    return ps.mem;
-}
-
-
-/*
- * Debug functions
- */
-
-APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub)
-{
-#if APR_POOL_DEBUG
-    if (sub->parent != p) {
-        abort();
-    }
-    sub->joined = p;
-#endif
-}
-
-static int pool_find(apr_pool_t *pool, void *data)
-{
-    void **pmem = (void **)data;
-    debug_node_t *node;
-    apr_uint32_t index;
-
-    node = pool->nodes;
-
-    while (node) {
-        for (index = 0; index < node->index; index++) {
-             if (node->beginp[index] <= *pmem
-                 && node->endp[index] > *pmem) {
-                 *pmem = pool;
-                 return 1;
-             }
-        }
-
-        node = node->next;
-    }
-
-    return 0;
-}
-
-APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem)
-{
-    void *pool = (void *)mem;
-
-    if (apr_pool_walk_tree(global_pool, pool_find, &pool))
-        return pool;
-
-    return NULL;
-}
-
-static int pool_num_bytes(apr_pool_t *pool, void *data)
-{
-    apr_size_t *psize = (apr_size_t *)data;
-    debug_node_t *node;
-    apr_uint32_t index;
-
-    node = pool->nodes;
-
-    while (node) {
-        for (index = 0; index < node->index; index++) {
-            *psize += (char *)node->endp[index] - (char *)node->beginp[index];
-        }
-
-        node = node->next;
-    }
-
-    return 0;
-}
-
-APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *pool, int recurse)
-{
-    apr_size_t size = 0;
-
-    if (!recurse) {
-        pool_num_bytes(pool, &size);
-
-        return size;
-    }
-
-    apr_pool_walk_tree(pool, pool_num_bytes, &size);
-
-    return size;
-}
-
-APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag)
-{
-}
-
-#endif /* !APR_POOL_DEBUG */
-
-#ifdef NETWARE
-void netware_pool_proc_cleanup ()
-{
-    apr_pool_t *pool = global_pool->child;
-    apr_os_proc_t owner_proc = (apr_os_proc_t)getnlmhandle();
-
-    while (pool) {
-        if (pool->owner_proc == owner_proc) {
-            apr_pool_destroy (pool);
-            pool = global_pool->child;
-        }
-        else {
-            pool = pool->sibling;
-        }
-    }
-    return;
-}
-#endif /* defined(NETWARE) */
-
-
-/*
- * "Print" functions (common)
- */
-
-APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...)
-{
-    va_list ap;
-    char *res;
-
-    va_start(ap, fmt);
-    res = apr_pvsprintf(p, fmt, ap);
-    va_end(ap);
-    return res;
-}
-
-/*
- * Pool Properties
- */
-
-APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abort_fn,
-                                     apr_pool_t *pool)
-{
-    pool->abort_fn = abort_fn;
-}
-
-APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool)
-{
-    return pool->abort_fn;
-}
-
-APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool)
-{
-#ifdef NETWARE
-    /* On NetWare, don't return the global_pool, return the application pool 
-       as the top most pool */
-    if (pool->parent == global_pool)
-        return pool;
-    else
-#endif
-    return pool->parent;
-}
-
-APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool)
-{
-    return pool->allocator;
-}
-
-/* return TRUE if a is an ancestor of b
- * NULL is considered an ancestor of all pools
- */
-APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b)
-{
-    if (a == NULL)
-        return 1;
-
-#if APR_POOL_DEBUG
-    /* Find the pool with the longest lifetime guaranteed by the
-     * caller: */
-    while (a->joined) {
-        a = a->joined;
-    }
-#endif
-
-    while (b) {
-        if (a == b)
-            return 1;
-
-        b = b->parent;
-    }
-
-    return 0;
-}
-
-APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag)
-{
-    pool->tag = tag;
-}
-
-
-/*
- * User data management
- */
-
-APR_DECLARE(apr_status_t) apr_pool_userdata_set(const void *data, const char *key,
-                                                apr_status_t (*cleanup) (void *),
-                                                apr_pool_t *pool)
-{
-#if APR_POOL_DEBUG
-    apr_pool_check_integrity(pool);
-#endif /* APR_POOL_DEBUG */
-
-    if (pool->user_data == NULL)
-        pool->user_data = apr_hash_make(pool);
-
-    if (apr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING) == NULL) {
-        char *new_key = apr_pstrdup(pool, key);
-        apr_hash_set(pool->user_data, new_key, APR_HASH_KEY_STRING, data);
-    }
-    else {
-        apr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data);
-    }
-
-    if (cleanup)
-        apr_pool_cleanup_register(pool, data, cleanup, cleanup);
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_pool_userdata_setn(const void *data,
-                              const char *key,
-                              apr_status_t (*cleanup)(void *),
-                              apr_pool_t *pool)
-{
-#if APR_POOL_DEBUG
-    apr_pool_check_integrity(pool);
-#endif /* APR_POOL_DEBUG */
-
-    if (pool->user_data == NULL)
-        pool->user_data = apr_hash_make(pool);
-
-    apr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data);
-
-    if (cleanup)
-        apr_pool_cleanup_register(pool, data, cleanup, cleanup);
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key,
-                                                apr_pool_t *pool)
-{
-#if APR_POOL_DEBUG
-    apr_pool_check_integrity(pool);
-#endif /* APR_POOL_DEBUG */
-
-    if (pool->user_data == NULL) {
-        *data = NULL;
-    }
-    else {
-        *data = apr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING);
-    }
-
-    return APR_SUCCESS;
-}
-
-
-/*
- * Cleanup
- */
-
-struct cleanup_t {
-    struct cleanup_t *next;
-    const void *data;
-    apr_status_t (*plain_cleanup_fn)(void *data);
-    apr_status_t (*child_cleanup_fn)(void *data);
-};
-
-APR_DECLARE(void) apr_pool_cleanup_register(apr_pool_t *p, const void *data,
-                      apr_status_t (*plain_cleanup_fn)(void *data),
-                      apr_status_t (*child_cleanup_fn)(void *data))
-{
-    cleanup_t *c;
-
-#if APR_POOL_DEBUG
-    apr_pool_check_integrity(p);
-#endif /* APR_POOL_DEBUG */
-
-    if (p != NULL) {
-        if (p->free_cleanups) {
-            /* reuse a cleanup structure */
-            c = p->free_cleanups;
-            p->free_cleanups = c->next;
-        } else {
-            c = apr_palloc(p, sizeof(cleanup_t));
-        }
-        c->data = data;
-        c->plain_cleanup_fn = plain_cleanup_fn;
-        c->child_cleanup_fn = child_cleanup_fn;
-        c->next = p->cleanups;
-        p->cleanups = c;
-    }
-}
-
-APR_DECLARE(void) apr_pool_pre_cleanup_register(apr_pool_t *p, const void *data,
-                      apr_status_t (*plain_cleanup_fn)(void *data))
-{
-    cleanup_t *c;
-
-#if APR_POOL_DEBUG
-    apr_pool_check_integrity(p);
-#endif /* APR_POOL_DEBUG */
-
-    if (p != NULL) {
-        if (p->free_cleanups) {
-            /* reuse a cleanup structure */
-            c = p->free_cleanups;
-            p->free_cleanups = c->next;
-        } else {
-            c = apr_palloc(p, sizeof(cleanup_t));
-        }
-        c->data = data;
-        c->plain_cleanup_fn = plain_cleanup_fn;
-        c->next = p->pre_cleanups;
-        p->pre_cleanups = c;
-    }
-}
-
-APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data,
-                      apr_status_t (*cleanup_fn)(void *))
-{
-    cleanup_t *c, **lastp;
-
-#if APR_POOL_DEBUG
-    apr_pool_check_integrity(p);
-#endif /* APR_POOL_DEBUG */
-
-    if (p == NULL)
-        return;
-
-    c = p->cleanups;
-    lastp = &p->cleanups;
-    while (c) {
-#if APR_POOL_DEBUG
-        /* Some cheap loop detection to catch a corrupt list: */
-        if (c == c->next
-            || (c->next && c == c->next->next)
-            || (c->next && c->next->next && c == c->next->next->next)) {
-            abort();
-        }
-#endif
-
-        if (c->data == data && c->plain_cleanup_fn == cleanup_fn) {
-            *lastp = c->next;
-            /* move to freelist */
-            c->next = p->free_cleanups;
-            p->free_cleanups = c;
-            break;
-        }
-
-        lastp = &c->next;
-        c = c->next;
-    }
-
-    /* Remove any pre-cleanup as well */
-    c = p->pre_cleanups;
-    lastp = &p->pre_cleanups;
-    while (c) {
-#if APR_POOL_DEBUG
-        /* Some cheap loop detection to catch a corrupt list: */
-        if (c == c->next
-            || (c->next && c == c->next->next)
-            || (c->next && c->next->next && c == c->next->next->next)) {
-            abort();
-        }
-#endif
-
-        if (c->data == data && c->plain_cleanup_fn == cleanup_fn) {
-            *lastp = c->next;
-            /* move to freelist */
-            c->next = p->free_cleanups;
-            p->free_cleanups = c;
-            break;
-        }
-
-        lastp = &c->next;
-        c = c->next;
-    }
-
-}
-
-APR_DECLARE(void) apr_pool_child_cleanup_set(apr_pool_t *p, const void *data,
-                      apr_status_t (*plain_cleanup_fn)(void *),
-                      apr_status_t (*child_cleanup_fn)(void *))
-{
-    cleanup_t *c;
-
-#if APR_POOL_DEBUG
-    apr_pool_check_integrity(p);
-#endif /* APR_POOL_DEBUG */
-
-    if (p == NULL)
-        return;
-
-    c = p->cleanups;
-    while (c) {
-        if (c->data == data && c->plain_cleanup_fn == plain_cleanup_fn) {
-            c->child_cleanup_fn = child_cleanup_fn;
-            break;
-        }
-
-        c = c->next;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_pool_cleanup_run(apr_pool_t *p, void *data,
-                              apr_status_t (*cleanup_fn)(void *))
-{
-    apr_pool_cleanup_kill(p, data, cleanup_fn);
-    return (*cleanup_fn)(data);
-}
-
-static void run_cleanups(cleanup_t **cref)
-{
-    cleanup_t *c = *cref;
-
-    while (c) {
-        *cref = c->next;
-        (*c->plain_cleanup_fn)((void *)c->data);
-        c = *cref;
-    }
-}
-
-#if !defined(WIN32) && !defined(OS2)
-
-static void run_child_cleanups(cleanup_t **cref)
-{
-    cleanup_t *c = *cref;
-
-    while (c) {
-        *cref = c->next;
-        (*c->child_cleanup_fn)((void *)c->data);
-        c = *cref;
-    }
-}
-
-static void cleanup_pool_for_exec(apr_pool_t *p)
-{
-    run_child_cleanups(&p->cleanups);
-
-    for (p = p->child; p; p = p->sibling)
-        cleanup_pool_for_exec(p);
-}
-
-APR_DECLARE(void) apr_pool_cleanup_for_exec(void)
-{
-    cleanup_pool_for_exec(global_pool);
-}
-
-#else /* !defined(WIN32) && !defined(OS2) */
-
-APR_DECLARE(void) apr_pool_cleanup_for_exec(void)
-{
-    /*
-     * Don't need to do anything on NT or OS/2, because 
-     * these platforms will spawn the new process - not
-     * fork for exec. All handles that are not inheritable,
-     * will be automajically closed. The only problem is
-     * with file handles that are open, but there isn't
-     * much that can be done about that (except if the
-     * child decides to go out and close them, or the
-     * developer quits opening them shared)
-     */
-    return;
-}
-
-#endif /* !defined(WIN32) && !defined(OS2) */
-
-APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data)
-{
-    /* do nothing cleanup routine */
-    return APR_SUCCESS;
-}
-
-/* Subprocesses don't use the generic cleanup interface because
- * we don't want multiple subprocesses to result in multiple
- * three-second pauses; the subprocesses have to be "freed" all
- * at once.  If other resources are introduced with the same property,
- * we might want to fold support for that into the generic interface.
- * For now, it's a special case.
- */
-APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *pool, apr_proc_t *proc,
-                                           apr_kill_conditions_e how)
-{
-    struct process_chain *pc = apr_palloc(pool, sizeof(struct process_chain));
-
-    pc->proc = proc;
-    pc->kill_how = how;
-    pc->next = pool->subprocesses;
-    pool->subprocesses = pc;
-}
-
-static void free_proc_chain(struct process_chain *procs)
-{
-    /* Dispose of the subprocesses we've spawned off in the course of
-     * whatever it was we're cleaning up now.  This may involve killing
-     * some of them off...
-     */
-    struct process_chain *pc;
-    int need_timeout = 0;
-    apr_time_t timeout_interval;
-
-    if (!procs)
-        return; /* No work.  Whew! */
-
-    /* First, check to see if we need to do the SIGTERM, sleep, SIGKILL
-     * dance with any of the processes we're cleaning up.  If we've got
-     * any kill-on-sight subprocesses, ditch them now as well, so they
-     * don't waste any more cycles doing whatever it is that they shouldn't
-     * be doing anymore.
-     */
-
-#ifndef NEED_WAITPID
-    /* Pick up all defunct processes */
-    for (pc = procs; pc; pc = pc->next) {
-        if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) != APR_CHILD_NOTDONE)
-            pc->kill_how = APR_KILL_NEVER;
-    }
-#endif /* !defined(NEED_WAITPID) */
-
-    for (pc = procs; pc; pc = pc->next) {
-#ifndef WIN32
-        if ((pc->kill_how == APR_KILL_AFTER_TIMEOUT)
-            || (pc->kill_how == APR_KILL_ONLY_ONCE)) {
-            /*
-             * Subprocess may be dead already.  Only need the timeout if not.
-             * Note: apr_proc_kill on Windows is TerminateProcess(), which is
-             * similar to a SIGKILL, so always give the process a timeout
-             * under Windows before killing it.
-             */
-            if (apr_proc_kill(pc->proc, SIGTERM) == APR_SUCCESS)
-                need_timeout = 1;
-        }
-        else if (pc->kill_how == APR_KILL_ALWAYS) {
-#else /* WIN32 knows only one fast, clean method of killing processes today */
-        if (pc->kill_how != APR_KILL_NEVER) {
-            need_timeout = 1;
-            pc->kill_how = APR_KILL_ALWAYS;
-#endif
-            apr_proc_kill(pc->proc, SIGKILL);
-        }
-    }
-
-    /* Sleep only if we have to. The sleep algorithm grows
-     * by a factor of two on each iteration. TIMEOUT_INTERVAL
-     * is equal to TIMEOUT_USECS / 64.
-     */
-    if (need_timeout) {
-        timeout_interval = TIMEOUT_INTERVAL;
-        apr_sleep(timeout_interval);
-
-        do {
-            /* check the status of the subprocesses */
-            need_timeout = 0;
-            for (pc = procs; pc; pc = pc->next) {
-                if (pc->kill_how == APR_KILL_AFTER_TIMEOUT) {
-                    if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT)
-                            == APR_CHILD_NOTDONE)
-                        need_timeout = 1;		/* subprocess is still active */
-                    else
-                        pc->kill_how = APR_KILL_NEVER;	/* subprocess has exited */
-                }
-            }
-            if (need_timeout) {
-                if (timeout_interval >= TIMEOUT_USECS) {
-                    break;
-                }
-                apr_sleep(timeout_interval);
-                timeout_interval *= 2;
-            }
-        } while (need_timeout);
-    }
-
-    /* OK, the scripts we just timed out for have had a chance to clean up
-     * --- now, just get rid of them, and also clean up the system accounting
-     * goop...
-     */
-    for (pc = procs; pc; pc = pc->next) {
-        if (pc->kill_how == APR_KILL_AFTER_TIMEOUT)
-            apr_proc_kill(pc->proc, SIGKILL);
-    }
-
-    /* Now wait for all the signaled processes to die */
-    for (pc = procs; pc; pc = pc->next) {
-        if (pc->kill_how != APR_KILL_NEVER)
-            (void)apr_proc_wait(pc->proc, NULL, NULL, APR_WAIT);
-    }
-}
-
-
-/*
- * Pool creation/destruction stubs, for people who are running
- * mixed release/debug enviroments.
- */
-
-#if !APR_POOL_DEBUG
-APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *pool, apr_size_t size,
-                                     const char *file_line)
-{
-    return apr_palloc(pool, size);
-}
-
-APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *pool, apr_size_t size,
-                                      const char *file_line)
-{
-    return apr_pcalloc(pool, size);
-}
-
-APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
-                                       const char *file_line)
-{
-    apr_pool_clear(pool);
-}
-
-APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool,
-                                         const char *file_line)
-{
-    apr_pool_destroy(pool);
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
-                                                   apr_pool_t *parent,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-{
-    return apr_pool_create_ex(newpool, parent, abort_fn, allocator);
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_core_ex_debug(apr_pool_t **newpool,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-{
-    return apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator);
-}
-
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
-                                                   apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator,
-                                                   const char *file_line)
-{
-    return apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator);
-}
-
-#else /* APR_POOL_DEBUG */
-
-#undef apr_palloc
-APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size);
-
-APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size)
-{
-    return apr_palloc_debug(pool, size, "undefined");
-}
-
-#undef apr_pcalloc
-APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size);
-
-APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size)
-{
-    return apr_pcalloc_debug(pool, size, "undefined");
-}
-
-#undef apr_pool_clear
-APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool);
-
-APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool)
-{
-    apr_pool_clear_debug(pool, "undefined");
-}
-
-#undef apr_pool_destroy
-APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool);
-
-APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool)
-{
-    apr_pool_destroy_debug(pool, "undefined");
-}
-
-#undef apr_pool_create_ex
-APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
-                                             apr_pool_t *parent,
-                                             apr_abortfunc_t abort_fn,
-                                             apr_allocator_t *allocator);
-
-APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
-                                             apr_pool_t *parent,
-                                             apr_abortfunc_t abort_fn,
-                                             apr_allocator_t *allocator)
-{
-    return apr_pool_create_ex_debug(newpool, parent,
-                                    abort_fn, allocator,
-                                    "undefined");
-}
-
-#undef apr_pool_create_core_ex
-APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
-                                                  apr_abortfunc_t abort_fn,
-                                                  apr_allocator_t *allocator);
-
-APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
-                                                  apr_abortfunc_t abort_fn,
-                                                  apr_allocator_t *allocator)
-{
-    return apr_pool_create_unmanaged_ex_debug(newpool, abort_fn,
-                                         allocator, "undefined");
-}
-
-#undef apr_pool_create_unmanaged_ex
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
-                                                  apr_abortfunc_t abort_fn,
-                                                  apr_allocator_t *allocator);
-
-APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
-                                                  apr_abortfunc_t abort_fn,
-                                                  apr_allocator_t *allocator)
-{
-    return apr_pool_create_unmanaged_ex_debug(newpool, abort_fn,
-                                         allocator, "undefined");
-}
-
-#endif /* APR_POOL_DEBUG */

Copied: vendor/apache/apr/1.5.2/memory/unix/apr_pools.c (from rev 9273, vendor/apache/apr/dist/memory/unix/apr_pools.c)
===================================================================
--- vendor/apache/apr/1.5.2/memory/unix/apr_pools.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/memory/unix/apr_pools.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,2655 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_private.h"
+
+#include "apr_atomic.h"
+#include "apr_portable.h" /* for get_os_proc */
+#include "apr_strings.h"
+#include "apr_general.h"
+#include "apr_pools.h"
+#include "apr_allocator.h"
+#include "apr_lib.h"
+#include "apr_thread_mutex.h"
+#include "apr_hash.h"
+#include "apr_time.h"
+#define APR_WANT_MEMFUNC
+#include "apr_want.h"
+#include "apr_env.h"
+
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>     /* for malloc, free and abort */
+#endif
+
+#if APR_HAVE_UNISTD_H
+#include <unistd.h>     /* for getpid and sysconf */
+#endif
+
+#if APR_ALLOCATOR_USES_MMAP
+#include <sys/mman.h>
+#endif
+
+/*
+ * Magic numbers
+ */
+
+/*
+ * XXX: This is not optimal when using --enable-allocator-uses-mmap on
+ * XXX: machines with large pagesize, but currently the sink is assumed
+ * XXX: to be index 0, so MIN_ALLOC must be at least two pages.
+ */
+#define MIN_ALLOC (2 * BOUNDARY_SIZE)
+#define MAX_INDEX   20
+
+#if APR_ALLOCATOR_USES_MMAP && defined(_SC_PAGESIZE)
+static unsigned int boundary_index;
+static unsigned int boundary_size;
+#define BOUNDARY_INDEX  boundary_index
+#define BOUNDARY_SIZE   boundary_size
+#else
+#define BOUNDARY_INDEX 12
+#define BOUNDARY_SIZE (1 << BOUNDARY_INDEX)
+#endif
+
+/* 
+ * Timing constants for killing subprocesses
+ * There is a total 3-second delay between sending a SIGINT 
+ * and sending of the final SIGKILL.
+ * TIMEOUT_INTERVAL should be set to TIMEOUT_USECS / 64
+ * for the exponetial timeout alogrithm.
+ */
+#define TIMEOUT_USECS    3000000
+#define TIMEOUT_INTERVAL   46875
+
+/*
+ * Allocator
+ *
+ * @note The max_free_index and current_free_index fields are not really
+ * indices, but quantities of BOUNDARY_SIZE big memory blocks.
+ */
+
+struct apr_allocator_t {
+    /** largest used index into free[], always < MAX_INDEX */
+    apr_uint32_t        max_index;
+    /** Total size (in BOUNDARY_SIZE multiples) of unused memory before
+     * blocks are given back. @see apr_allocator_max_free_set().
+     * @note Initialized to APR_ALLOCATOR_MAX_FREE_UNLIMITED,
+     * which means to never give back blocks.
+     */
+    apr_uint32_t        max_free_index;
+    /**
+     * Memory size (in BOUNDARY_SIZE multiples) that currently must be freed
+     * before blocks are given back. Range: 0..max_free_index
+     */
+    apr_uint32_t        current_free_index;
+#if APR_HAS_THREADS
+    apr_thread_mutex_t *mutex;
+#endif /* APR_HAS_THREADS */
+    apr_pool_t         *owner;
+    /**
+     * Lists of free nodes. Slot 0 is used for oversized nodes,
+     * and the slots 1..MAX_INDEX-1 contain nodes of sizes
+     * (i+1) * BOUNDARY_SIZE. Example for BOUNDARY_INDEX == 12:
+     * slot  0: nodes larger than 81920
+     * slot  1: size  8192
+     * slot  2: size 12288
+     * ...
+     * slot 19: size 81920
+     */
+    apr_memnode_t      *free[MAX_INDEX];
+};
+
+#define SIZEOF_ALLOCATOR_T  APR_ALIGN_DEFAULT(sizeof(apr_allocator_t))
+
+
+/*
+ * Allocator
+ */
+
+APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator)
+{
+    apr_allocator_t *new_allocator;
+
+    *allocator = NULL;
+
+    if ((new_allocator = malloc(SIZEOF_ALLOCATOR_T)) == NULL)
+        return APR_ENOMEM;
+
+    memset(new_allocator, 0, SIZEOF_ALLOCATOR_T);
+    new_allocator->max_free_index = APR_ALLOCATOR_MAX_FREE_UNLIMITED;
+
+    *allocator = new_allocator;
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator)
+{
+    apr_uint32_t index;
+    apr_memnode_t *node, **ref;
+
+    for (index = 0; index < MAX_INDEX; index++) {
+        ref = &allocator->free[index];
+        while ((node = *ref) != NULL) {
+            *ref = node->next;
+#if APR_ALLOCATOR_USES_MMAP
+            munmap(node, (node->index+1) << BOUNDARY_INDEX);
+#else
+            free(node);
+#endif
+        }
+    }
+
+    free(allocator);
+}
+
+#if APR_HAS_THREADS
+APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator,
+                                          apr_thread_mutex_t *mutex)
+{
+    allocator->mutex = mutex;
+}
+
+APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get(
+                                      apr_allocator_t *allocator)
+{
+    return allocator->mutex;
+}
+#endif /* APR_HAS_THREADS */
+
+APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator,
+                                          apr_pool_t *pool)
+{
+    allocator->owner = pool;
+}
+
+APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator)
+{
+    return allocator->owner;
+}
+
+APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
+                                             apr_size_t in_size)
+{
+    apr_uint32_t max_free_index;
+    apr_uint32_t size = (APR_UINT32_TRUNC_CAST)in_size;
+
+#if APR_HAS_THREADS
+    apr_thread_mutex_t *mutex;
+
+    mutex = apr_allocator_mutex_get(allocator);
+    if (mutex != NULL)
+        apr_thread_mutex_lock(mutex);
+#endif /* APR_HAS_THREADS */
+
+    max_free_index = APR_ALIGN(size, BOUNDARY_SIZE) >> BOUNDARY_INDEX;
+    allocator->current_free_index += max_free_index;
+    allocator->current_free_index -= allocator->max_free_index;
+    allocator->max_free_index = max_free_index;
+    if (allocator->current_free_index > max_free_index)
+        allocator->current_free_index = max_free_index;
+
+#if APR_HAS_THREADS
+    if (mutex != NULL)
+        apr_thread_mutex_unlock(mutex);
+#endif
+}
+
+static APR_INLINE
+apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t in_size)
+{
+    apr_memnode_t *node, **ref;
+    apr_uint32_t max_index;
+    apr_size_t size, i, index;
+
+    /* Round up the block size to the next boundary, but always
+     * allocate at least a certain size (MIN_ALLOC).
+     */
+    size = APR_ALIGN(in_size + APR_MEMNODE_T_SIZE, BOUNDARY_SIZE);
+    if (size < in_size) {
+        return NULL;
+    }
+    if (size < MIN_ALLOC)
+        size = MIN_ALLOC;
+
+    /* Find the index for this node size by
+     * dividing its size by the boundary size
+     */
+    index = (size >> BOUNDARY_INDEX) - 1;
+    
+    if (index > APR_UINT32_MAX) {
+        return NULL;
+    }
+
+    /* First see if there are any nodes in the area we know
+     * our node will fit into.
+     */
+    if (index <= allocator->max_index) {
+#if APR_HAS_THREADS
+        if (allocator->mutex)
+            apr_thread_mutex_lock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+
+        /* Walk the free list to see if there are
+         * any nodes on it of the requested size
+         *
+         * NOTE: an optimization would be to check
+         * allocator->free[index] first and if no
+         * node is present, directly use
+         * allocator->free[max_index].  This seems
+         * like overkill though and could cause
+         * memory waste.
+         */
+        max_index = allocator->max_index;
+        ref = &allocator->free[index];
+        i = index;
+        while (*ref == NULL && i < max_index) {
+           ref++;
+           i++;
+        }
+
+        if ((node = *ref) != NULL) {
+            /* If we have found a node and it doesn't have any
+             * nodes waiting in line behind it _and_ we are on
+             * the highest available index, find the new highest
+             * available index
+             */
+            if ((*ref = node->next) == NULL && i >= max_index) {
+                do {
+                    ref--;
+                    max_index--;
+                }
+                while (*ref == NULL && max_index > 0);
+
+                allocator->max_index = max_index;
+            }
+
+            allocator->current_free_index += node->index + 1;
+            if (allocator->current_free_index > allocator->max_free_index)
+                allocator->current_free_index = allocator->max_free_index;
+
+#if APR_HAS_THREADS
+            if (allocator->mutex)
+                apr_thread_mutex_unlock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+
+            node->next = NULL;
+            node->first_avail = (char *)node + APR_MEMNODE_T_SIZE;
+
+            return node;
+        }
+
+#if APR_HAS_THREADS
+        if (allocator->mutex)
+            apr_thread_mutex_unlock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+    }
+
+    /* If we found nothing, seek the sink (at index 0), if
+     * it is not empty.
+     */
+    else if (allocator->free[0]) {
+#if APR_HAS_THREADS
+        if (allocator->mutex)
+            apr_thread_mutex_lock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+
+        /* Walk the free list to see if there are
+         * any nodes on it of the requested size
+         */
+        ref = &allocator->free[0];
+        while ((node = *ref) != NULL && index > node->index)
+            ref = &node->next;
+
+        if (node) {
+            *ref = node->next;
+
+            allocator->current_free_index += node->index + 1;
+            if (allocator->current_free_index > allocator->max_free_index)
+                allocator->current_free_index = allocator->max_free_index;
+
+#if APR_HAS_THREADS
+            if (allocator->mutex)
+                apr_thread_mutex_unlock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+
+            node->next = NULL;
+            node->first_avail = (char *)node + APR_MEMNODE_T_SIZE;
+
+            return node;
+        }
+
+#if APR_HAS_THREADS
+        if (allocator->mutex)
+            apr_thread_mutex_unlock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+    }
+
+    /* If we haven't got a suitable node, malloc a new one
+     * and initialize it.
+     */
+#if APR_ALLOCATOR_USES_MMAP
+    if ((node = mmap(NULL, size, PROT_READ|PROT_WRITE,
+                     MAP_PRIVATE|MAP_ANON, -1, 0)) == MAP_FAILED)
+#else
+    if ((node = malloc(size)) == NULL)
+#endif
+        return NULL;
+
+    node->next = NULL;
+    node->index = (APR_UINT32_TRUNC_CAST)index;
+    node->first_avail = (char *)node + APR_MEMNODE_T_SIZE;
+    node->endp = (char *)node + size;
+
+    return node;
+}
+
+static APR_INLINE
+void allocator_free(apr_allocator_t *allocator, apr_memnode_t *node)
+{
+    apr_memnode_t *next, *freelist = NULL;
+    apr_uint32_t index, max_index;
+    apr_uint32_t max_free_index, current_free_index;
+
+#if APR_HAS_THREADS
+    if (allocator->mutex)
+        apr_thread_mutex_lock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+
+    max_index = allocator->max_index;
+    max_free_index = allocator->max_free_index;
+    current_free_index = allocator->current_free_index;
+
+    /* Walk the list of submitted nodes and free them one by one,
+     * shoving them in the right 'size' buckets as we go.
+     */
+    do {
+        next = node->next;
+        index = node->index;
+
+        if (max_free_index != APR_ALLOCATOR_MAX_FREE_UNLIMITED
+            && index + 1 > current_free_index) {
+            node->next = freelist;
+            freelist = node;
+        }
+        else if (index < MAX_INDEX) {
+            /* Add the node to the appropiate 'size' bucket.  Adjust
+             * the max_index when appropiate.
+             */
+            if ((node->next = allocator->free[index]) == NULL
+                && index > max_index) {
+                max_index = index;
+            }
+            allocator->free[index] = node;
+            if (current_free_index >= index + 1)
+                current_free_index -= index + 1;
+            else
+                current_free_index = 0;
+        }
+        else {
+            /* This node is too large to keep in a specific size bucket,
+             * just add it to the sink (at index 0).
+             */
+            node->next = allocator->free[0];
+            allocator->free[0] = node;
+            if (current_free_index >= index + 1)
+                current_free_index -= index + 1;
+            else
+                current_free_index = 0;
+        }
+    } while ((node = next) != NULL);
+
+    allocator->max_index = max_index;
+    allocator->current_free_index = current_free_index;
+
+#if APR_HAS_THREADS
+    if (allocator->mutex)
+        apr_thread_mutex_unlock(allocator->mutex);
+#endif /* APR_HAS_THREADS */
+
+    while (freelist != NULL) {
+        node = freelist;
+        freelist = node->next;
+#if APR_ALLOCATOR_USES_MMAP
+        munmap(node, (node->index+1) << BOUNDARY_INDEX);
+#else
+        free(node);
+#endif
+    }
+}
+
+APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator,
+                                                 apr_size_t size)
+{
+    return allocator_alloc(allocator, size);
+}
+
+APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator,
+                                     apr_memnode_t *node)
+{
+    allocator_free(allocator, node);
+}
+
+
+
+/*
+ * Debug level
+ */
+
+#define APR_POOL_DEBUG_GENERAL  0x01
+#define APR_POOL_DEBUG_VERBOSE  0x02
+#define APR_POOL_DEBUG_LIFETIME 0x04
+#define APR_POOL_DEBUG_OWNER    0x08
+#define APR_POOL_DEBUG_VERBOSE_ALLOC 0x10
+
+#define APR_POOL_DEBUG_VERBOSE_ALL (APR_POOL_DEBUG_VERBOSE \
+                                    | APR_POOL_DEBUG_VERBOSE_ALLOC)
+
+
+/*
+ * Structures
+ */
+
+typedef struct cleanup_t cleanup_t;
+
+/** A list of processes */
+struct process_chain {
+    /** The process ID */
+    apr_proc_t *proc;
+    apr_kill_conditions_e kill_how;
+    /** The next process in the list */
+    struct process_chain *next;
+};
+
+
+#if APR_POOL_DEBUG
+
+typedef struct debug_node_t debug_node_t;
+
+struct debug_node_t {
+    debug_node_t *next;
+    apr_uint32_t  index;
+    void         *beginp[64];
+    void         *endp[64];
+};
+
+#define SIZEOF_DEBUG_NODE_T APR_ALIGN_DEFAULT(sizeof(debug_node_t))
+
+#endif /* APR_POOL_DEBUG */
+
+/* The ref field in the apr_pool_t struct holds a
+ * pointer to the pointer referencing this pool.
+ * It is used for parent, child, sibling management.
+ * Look at apr_pool_create_ex() and apr_pool_destroy()
+ * to see how it is used.
+ */
+struct apr_pool_t {
+    apr_pool_t           *parent;
+    apr_pool_t           *child;
+    apr_pool_t           *sibling;
+    apr_pool_t          **ref;
+    cleanup_t            *cleanups;
+    cleanup_t            *free_cleanups;
+    apr_allocator_t      *allocator;
+    struct process_chain *subprocesses;
+    apr_abortfunc_t       abort_fn;
+    apr_hash_t           *user_data;
+    const char           *tag;
+
+#if !APR_POOL_DEBUG
+    apr_memnode_t        *active;
+    apr_memnode_t        *self; /* The node containing the pool itself */
+    char                 *self_first_avail;
+
+#else /* APR_POOL_DEBUG */
+    apr_pool_t           *joined; /* the caller has guaranteed that this pool
+                                   * will survive as long as ->joined */
+    debug_node_t         *nodes;
+    const char           *file_line;
+    apr_uint32_t          creation_flags;
+    unsigned int          stat_alloc;
+    unsigned int          stat_total_alloc;
+    unsigned int          stat_clear;
+#if APR_HAS_THREADS
+    apr_os_thread_t       owner;
+    apr_thread_mutex_t   *mutex;
+#endif /* APR_HAS_THREADS */
+#endif /* APR_POOL_DEBUG */
+#ifdef NETWARE
+    apr_os_proc_t         owner_proc;
+#endif /* defined(NETWARE) */
+    cleanup_t            *pre_cleanups;
+};
+
+#define SIZEOF_POOL_T       APR_ALIGN_DEFAULT(sizeof(apr_pool_t))
+
+
+/*
+ * Variables
+ */
+
+static apr_byte_t   apr_pools_initialized = 0;
+static apr_pool_t  *global_pool = NULL;
+
+#if !APR_POOL_DEBUG
+static apr_allocator_t *global_allocator = NULL;
+#endif /* !APR_POOL_DEBUG */
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+static apr_file_t *file_stderr = NULL;
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
+
+/*
+ * Local functions
+ */
+
+static void run_cleanups(cleanup_t **c);
+static void free_proc_chain(struct process_chain *procs);
+
+#if APR_POOL_DEBUG
+static void pool_destroy_debug(apr_pool_t *pool, const char *file_line);
+#endif
+
+#if !APR_POOL_DEBUG
+/*
+ * Initialization
+ */
+
+APR_DECLARE(apr_status_t) apr_pool_initialize(void)
+{
+    apr_status_t rv;
+
+    if (apr_pools_initialized++)
+        return APR_SUCCESS;
+
+#if APR_ALLOCATOR_USES_MMAP && defined(_SC_PAGESIZE)
+    boundary_size = sysconf(_SC_PAGESIZE);
+    boundary_index = 12;
+    while ( (1 << boundary_index) < boundary_size)
+        boundary_index++;
+    boundary_size = (1 << boundary_index);
+#endif
+
+    if ((rv = apr_allocator_create(&global_allocator)) != APR_SUCCESS) {
+        apr_pools_initialized = 0;
+        return rv;
+    }
+
+    if ((rv = apr_pool_create_ex(&global_pool, NULL, NULL,
+                                 global_allocator)) != APR_SUCCESS) {
+        apr_allocator_destroy(global_allocator);
+        global_allocator = NULL;
+        apr_pools_initialized = 0;
+        return rv;
+    }
+
+    apr_pool_tag(global_pool, "apr_global_pool");
+
+    /* This has to happen here because mutexes might be backed by
+     * atomics.  It used to be snug and safe in apr_initialize().
+     *
+     * Warning: apr_atomic_init() must always be called, by any
+     * means possible, from apr_initialize().
+     */
+    if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) {
+        return rv;
+    }
+
+#if APR_HAS_THREADS
+    {
+        apr_thread_mutex_t *mutex;
+
+        if ((rv = apr_thread_mutex_create(&mutex,
+                                          APR_THREAD_MUTEX_DEFAULT,
+                                          global_pool)) != APR_SUCCESS) {
+            return rv;
+        }
+
+        apr_allocator_mutex_set(global_allocator, mutex);
+    }
+#endif /* APR_HAS_THREADS */
+
+    apr_allocator_owner_set(global_allocator, global_pool);
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(void) apr_pool_terminate(void)
+{
+    if (!apr_pools_initialized)
+        return;
+
+    if (--apr_pools_initialized)
+        return;
+
+    apr_pool_destroy(global_pool); /* This will also destroy the mutex */
+    global_pool = NULL;
+
+    global_allocator = NULL;
+}
+
+
+/* Node list management helper macros; list_insert() inserts 'node'
+ * before 'point'. */
+#define list_insert(node, point) do {           \
+    node->ref = point->ref;                     \
+    *node->ref = node;                          \
+    node->next = point;                         \
+    point->ref = &node->next;                   \
+} while (0)
+
+/* list_remove() removes 'node' from its list. */
+#define list_remove(node) do {                  \
+    *node->ref = node->next;                    \
+    node->next->ref = node->ref;                \
+} while (0)
+
+/* Returns the amount of free space in the given node. */
+#define node_free_space(node_) ((apr_size_t)(node_->endp - node_->first_avail))
+
+/*
+ * Memory allocation
+ */
+
+APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t in_size)
+{
+    apr_memnode_t *active, *node;
+    void *mem;
+    apr_size_t size, free_index;
+
+    size = APR_ALIGN_DEFAULT(in_size);
+    if (size < in_size) {
+        if (pool->abort_fn)
+            pool->abort_fn(APR_ENOMEM);
+
+        return NULL;
+    }
+    active = pool->active;
+
+    /* If the active node has enough bytes left, use it. */
+    if (size <= node_free_space(active)) {
+        mem = active->first_avail;
+        active->first_avail += size;
+
+        return mem;
+    }
+
+    node = active->next;
+    if (size <= node_free_space(node)) {
+        list_remove(node);
+    }
+    else {
+        if ((node = allocator_alloc(pool->allocator, size)) == NULL) {
+            if (pool->abort_fn)
+                pool->abort_fn(APR_ENOMEM);
+
+            return NULL;
+        }
+    }
+
+    node->free_index = 0;
+
+    mem = node->first_avail;
+    node->first_avail += size;
+
+    list_insert(node, active);
+
+    pool->active = node;
+
+    free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
+                            BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
+
+    active->free_index = (APR_UINT32_TRUNC_CAST)free_index;
+    node = active->next;
+    if (free_index >= node->free_index)
+        return mem;
+
+    do {
+        node = node->next;
+    }
+    while (free_index < node->free_index);
+
+    list_remove(active);
+    list_insert(active, node);
+
+    return mem;
+}
+
+/* Provide an implementation of apr_pcalloc for backward compatibility
+ * with code built before apr_pcalloc was a macro
+ */
+
+#ifdef apr_pcalloc
+#undef apr_pcalloc
+#endif
+
+APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size);
+APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size)
+{
+    void *mem;
+
+    if ((mem = apr_palloc(pool, size)) != NULL) {
+        memset(mem, 0, size);
+    }
+
+    return mem;
+}
+
+
+/*
+ * Pool creation/destruction
+ */
+
+APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool)
+{
+    apr_memnode_t *active;
+
+    /* Run pre destroy cleanups */
+    run_cleanups(&pool->pre_cleanups);
+    pool->pre_cleanups = NULL;
+
+    /* Destroy the subpools.  The subpools will detach themselves from
+     * this pool thus this loop is safe and easy.
+     */
+    while (pool->child)
+        apr_pool_destroy(pool->child);
+
+    /* Run cleanups */
+    run_cleanups(&pool->cleanups);
+    pool->cleanups = NULL;
+    pool->free_cleanups = NULL;
+
+    /* Free subprocesses */
+    free_proc_chain(pool->subprocesses);
+    pool->subprocesses = NULL;
+
+    /* Clear the user data. */
+    pool->user_data = NULL;
+
+    /* Find the node attached to the pool structure, reset it, make
+     * it the active node and free the rest of the nodes.
+     */
+    active = pool->active = pool->self;
+    active->first_avail = pool->self_first_avail;
+
+    if (active->next == active)
+        return;
+
+    *active->ref = NULL;
+    allocator_free(pool->allocator, active->next);
+    active->next = active;
+    active->ref = &active->next;
+}
+
+APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool)
+{
+    apr_memnode_t *active;
+    apr_allocator_t *allocator;
+
+    /* Run pre destroy cleanups */
+    run_cleanups(&pool->pre_cleanups);
+    pool->pre_cleanups = NULL;
+
+    /* Destroy the subpools.  The subpools will detach themselve from
+     * this pool thus this loop is safe and easy.
+     */
+    while (pool->child)
+        apr_pool_destroy(pool->child);
+
+    /* Run cleanups */
+    run_cleanups(&pool->cleanups);
+
+    /* Free subprocesses */
+    free_proc_chain(pool->subprocesses);
+
+    /* Remove the pool from the parents child list */
+    if (pool->parent) {
+#if APR_HAS_THREADS
+        apr_thread_mutex_t *mutex;
+
+        if ((mutex = apr_allocator_mutex_get(pool->parent->allocator)) != NULL)
+            apr_thread_mutex_lock(mutex);
+#endif /* APR_HAS_THREADS */
+
+        if ((*pool->ref = pool->sibling) != NULL)
+            pool->sibling->ref = pool->ref;
+
+#if APR_HAS_THREADS
+        if (mutex)
+            apr_thread_mutex_unlock(mutex);
+#endif /* APR_HAS_THREADS */
+    }
+
+    /* Find the block attached to the pool structure.  Save a copy of the
+     * allocator pointer, because the pool struct soon will be no more.
+     */
+    allocator = pool->allocator;
+    active = pool->self;
+    *active->ref = NULL;
+
+#if APR_HAS_THREADS
+    if (apr_allocator_owner_get(allocator) == pool) {
+        /* Make sure to remove the lock, since it is highly likely to
+         * be invalid now.
+         */
+        apr_allocator_mutex_set(allocator, NULL);
+    }
+#endif /* APR_HAS_THREADS */
+
+    /* Free all the nodes in the pool (including the node holding the
+     * pool struct), by giving them back to the allocator.
+     */
+    allocator_free(allocator, active);
+
+    /* If this pool happens to be the owner of the allocator, free
+     * everything in the allocator (that includes the pool struct
+     * and the allocator).  Don't worry about destroying the optional mutex
+     * in the allocator, it will have been destroyed by the cleanup function.
+     */
+    if (apr_allocator_owner_get(allocator) == pool) {
+        apr_allocator_destroy(allocator);
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
+                                             apr_pool_t *parent,
+                                             apr_abortfunc_t abort_fn,
+                                             apr_allocator_t *allocator)
+{
+    apr_pool_t *pool;
+    apr_memnode_t *node;
+
+    *newpool = NULL;
+
+    if (!parent)
+        parent = global_pool;
+
+    /* parent will always be non-NULL here except the first time a
+     * pool is created, in which case allocator is guaranteed to be
+     * non-NULL. */
+
+    if (!abort_fn && parent)
+        abort_fn = parent->abort_fn;
+
+    if (allocator == NULL)
+        allocator = parent->allocator;
+
+    if ((node = allocator_alloc(allocator,
+                                MIN_ALLOC - APR_MEMNODE_T_SIZE)) == NULL) {
+        if (abort_fn)
+            abort_fn(APR_ENOMEM);
+
+        return APR_ENOMEM;
+    }
+
+    node->next = node;
+    node->ref = &node->next;
+
+    pool = (apr_pool_t *)node->first_avail;
+    node->first_avail = pool->self_first_avail = (char *)pool + SIZEOF_POOL_T;
+
+    pool->allocator = allocator;
+    pool->active = pool->self = node;
+    pool->abort_fn = abort_fn;
+    pool->child = NULL;
+    pool->cleanups = NULL;
+    pool->free_cleanups = NULL;
+    pool->pre_cleanups = NULL;
+    pool->subprocesses = NULL;
+    pool->user_data = NULL;
+    pool->tag = NULL;
+
+#ifdef NETWARE
+    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
+#endif /* defined(NETWARE) */
+
+    if ((pool->parent = parent) != NULL) {
+#if APR_HAS_THREADS
+        apr_thread_mutex_t *mutex;
+
+        if ((mutex = apr_allocator_mutex_get(parent->allocator)) != NULL)
+            apr_thread_mutex_lock(mutex);
+#endif /* APR_HAS_THREADS */
+
+        if ((pool->sibling = parent->child) != NULL)
+            pool->sibling->ref = &pool->sibling;
+
+        parent->child = pool;
+        pool->ref = &parent->child;
+
+#if APR_HAS_THREADS
+        if (mutex)
+            apr_thread_mutex_unlock(mutex);
+#endif /* APR_HAS_THREADS */
+    }
+    else {
+        pool->sibling = NULL;
+        pool->ref = NULL;
+    }
+
+    *newpool = pool;
+
+    return APR_SUCCESS;
+}
+
+/* Deprecated. Renamed to apr_pool_create_unmanaged_ex
+ */
+APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
+                                                  apr_abortfunc_t abort_fn,
+                                                  apr_allocator_t *allocator)
+{
+    return apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator);
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
+                                                  apr_abortfunc_t abort_fn,
+                                                  apr_allocator_t *allocator)
+{
+    apr_pool_t *pool;
+    apr_memnode_t *node;
+    apr_allocator_t *pool_allocator;
+
+    *newpool = NULL;
+
+    if (!apr_pools_initialized)
+        return APR_ENOPOOL;
+    if ((pool_allocator = allocator) == NULL) {
+        if ((pool_allocator = malloc(SIZEOF_ALLOCATOR_T)) == NULL) {
+            if (abort_fn)
+                abort_fn(APR_ENOMEM);
+
+            return APR_ENOMEM;
+        }
+        memset(pool_allocator, 0, SIZEOF_ALLOCATOR_T);
+        pool_allocator->max_free_index = APR_ALLOCATOR_MAX_FREE_UNLIMITED;
+    }
+    if ((node = allocator_alloc(pool_allocator,
+                                MIN_ALLOC - APR_MEMNODE_T_SIZE)) == NULL) {
+        if (abort_fn)
+            abort_fn(APR_ENOMEM);
+
+        return APR_ENOMEM;
+    }
+
+    node->next = node;
+    node->ref = &node->next;
+
+    pool = (apr_pool_t *)node->first_avail;
+    node->first_avail = pool->self_first_avail = (char *)pool + SIZEOF_POOL_T;
+
+    pool->allocator = pool_allocator;
+    pool->active = pool->self = node;
+    pool->abort_fn = abort_fn;
+    pool->child = NULL;
+    pool->cleanups = NULL;
+    pool->free_cleanups = NULL;
+    pool->pre_cleanups = NULL;
+    pool->subprocesses = NULL;
+    pool->user_data = NULL;
+    pool->tag = NULL;
+    pool->parent = NULL;
+    pool->sibling = NULL;
+    pool->ref = NULL;
+
+#ifdef NETWARE
+    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
+#endif /* defined(NETWARE) */
+    if (!allocator)
+        pool_allocator->owner = pool;
+    *newpool = pool;
+
+    return APR_SUCCESS;
+}
+
+/*
+ * "Print" functions
+ */
+
+/*
+ * apr_psprintf is implemented by writing directly into the current
+ * block of the pool, starting right at first_avail.  If there's
+ * insufficient room, then a new block is allocated and the earlier
+ * output is copied over.  The new block isn't linked into the pool
+ * until all the output is done.
+ *
+ * Note that this is completely safe because nothing else can
+ * allocate in this apr_pool_t while apr_psprintf is running.  alarms are
+ * blocked, and the only thing outside of apr_pools.c that's invoked
+ * is apr_vformatter -- which was purposefully written to be
+ * self-contained with no callouts.
+ */
+
+struct psprintf_data {
+    apr_vformatter_buff_t vbuff;
+    apr_memnode_t   *node;
+    apr_pool_t      *pool;
+    apr_byte_t       got_a_new_node;
+    apr_memnode_t   *free;
+};
+
+#define APR_PSPRINTF_MIN_STRINGSIZE 32
+
+static int psprintf_flush(apr_vformatter_buff_t *vbuff)
+{
+    struct psprintf_data *ps = (struct psprintf_data *)vbuff;
+    apr_memnode_t *node, *active;
+    apr_size_t cur_len, size;
+    char *strp;
+    apr_pool_t *pool;
+    apr_size_t free_index;
+
+    pool = ps->pool;
+    active = ps->node;
+    strp = ps->vbuff.curpos;
+    cur_len = strp - active->first_avail;
+    size = cur_len << 1;
+
+    /* Make sure that we don't try to use a block that has less
+     * than APR_PSPRINTF_MIN_STRINGSIZE bytes left in it.  This
+     * also catches the case where size == 0, which would result
+     * in reusing a block that can't even hold the NUL byte.
+     */
+    if (size < APR_PSPRINTF_MIN_STRINGSIZE)
+        size = APR_PSPRINTF_MIN_STRINGSIZE;
+
+    node = active->next;
+    if (!ps->got_a_new_node && size <= node_free_space(node)) {
+
+        list_remove(node);
+        list_insert(node, active);
+
+        node->free_index = 0;
+
+        pool->active = node;
+
+        free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
+                                BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
+
+        active->free_index = (APR_UINT32_TRUNC_CAST)free_index;
+        node = active->next;
+        if (free_index < node->free_index) {
+            do {
+                node = node->next;
+            }
+            while (free_index < node->free_index);
+
+            list_remove(active);
+            list_insert(active, node);
+        }
+
+        node = pool->active;
+    }
+    else {
+        if ((node = allocator_alloc(pool->allocator, size)) == NULL)
+            return -1;
+
+        if (ps->got_a_new_node) {
+            active->next = ps->free;
+            ps->free = active;
+        }
+
+        ps->got_a_new_node = 1;
+    }
+
+    memcpy(node->first_avail, active->first_avail, cur_len);
+
+    ps->node = node;
+    ps->vbuff.curpos = node->first_avail + cur_len;
+    ps->vbuff.endpos = node->endp - 1; /* Save a byte for NUL terminator */
+
+    return 0;
+}
+
+APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap)
+{
+    struct psprintf_data ps;
+    char *strp;
+    apr_size_t size;
+    apr_memnode_t *active, *node;
+    apr_size_t free_index;
+
+    ps.node = active = pool->active;
+    ps.pool = pool;
+    ps.vbuff.curpos  = ps.node->first_avail;
+
+    /* Save a byte for the NUL terminator */
+    ps.vbuff.endpos = ps.node->endp - 1;
+    ps.got_a_new_node = 0;
+    ps.free = NULL;
+
+    /* Make sure that the first node passed to apr_vformatter has at least
+     * room to hold the NUL terminator.
+     */
+    if (ps.node->first_avail == ps.node->endp) {
+        if (psprintf_flush(&ps.vbuff) == -1)
+           goto error;
+    }
+
+    if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1)
+        goto error;
+
+    strp = ps.vbuff.curpos;
+    *strp++ = '\0';
+
+    size = strp - ps.node->first_avail;
+    size = APR_ALIGN_DEFAULT(size);
+    strp = ps.node->first_avail;
+    ps.node->first_avail += size;
+
+    if (ps.free)
+        allocator_free(pool->allocator, ps.free);
+
+    /*
+     * Link the node in if it's a new one
+     */
+    if (!ps.got_a_new_node)
+        return strp;
+
+    active = pool->active;
+    node = ps.node;
+
+    node->free_index = 0;
+
+    list_insert(node, active);
+
+    pool->active = node;
+
+    free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
+                            BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
+
+    active->free_index = (APR_UINT32_TRUNC_CAST)free_index;
+    node = active->next;
+
+    if (free_index >= node->free_index)
+        return strp;
+
+    do {
+        node = node->next;
+    }
+    while (free_index < node->free_index);
+
+    list_remove(active);
+    list_insert(active, node);
+
+    return strp;
+
+error:
+    if (pool->abort_fn)
+        pool->abort_fn(APR_ENOMEM);
+    if (ps.got_a_new_node) {
+        ps.node->next = ps.free;
+        allocator_free(pool->allocator, ps.node);
+    }
+    return NULL;
+}
+
+
+#else /* APR_POOL_DEBUG */
+/*
+ * Debug helper functions
+ */
+
+
+/*
+ * Walk the pool tree rooted at pool, depth first.  When fn returns
+ * anything other than 0, abort the traversal and return the value
+ * returned by fn.
+ */
+static int apr_pool_walk_tree(apr_pool_t *pool,
+                              int (*fn)(apr_pool_t *pool, void *data),
+                              void *data)
+{
+    int rv;
+    apr_pool_t *child;
+
+    rv = fn(pool, data);
+    if (rv)
+        return rv;
+
+#if APR_HAS_THREADS
+    if (pool->mutex) {
+        apr_thread_mutex_lock(pool->mutex);
+                        }
+#endif /* APR_HAS_THREADS */
+
+    child = pool->child;
+    while (child) {
+        rv = apr_pool_walk_tree(child, fn, data);
+        if (rv)
+            break;
+
+        child = child->sibling;
+    }
+
+#if APR_HAS_THREADS
+    if (pool->mutex) {
+        apr_thread_mutex_unlock(pool->mutex);
+    }
+#endif /* APR_HAS_THREADS */
+
+    return rv;
+}
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+static void apr_pool_log_event(apr_pool_t *pool, const char *event,
+                               const char *file_line, int deref)
+{
+    if (file_stderr) {
+        if (deref) {
+            apr_file_printf(file_stderr,
+                "POOL DEBUG: "
+                "[%lu"
+#if APR_HAS_THREADS
+                "/%lu"
+#endif /* APR_HAS_THREADS */
+                "] "
+                "%7s "
+                "(%10lu/%10lu/%10lu) "
+                "0x%pp \"%s\" "
+                "<%s> "
+                "(%u/%u/%u) "
+                "\n",
+                (unsigned long)getpid(),
+#if APR_HAS_THREADS
+                (unsigned long)apr_os_thread_current(),
+#endif /* APR_HAS_THREADS */
+                event,
+                (unsigned long)apr_pool_num_bytes(pool, 0),
+                (unsigned long)apr_pool_num_bytes(pool, 1),
+                (unsigned long)apr_pool_num_bytes(global_pool, 1),
+                pool, pool->tag,
+                file_line,
+                pool->stat_alloc, pool->stat_total_alloc, pool->stat_clear);
+        }
+        else {
+            apr_file_printf(file_stderr,
+                "POOL DEBUG: "
+                "[%lu"
+#if APR_HAS_THREADS
+                "/%lu"
+#endif /* APR_HAS_THREADS */
+                "] "
+                "%7s "
+                "                                   "
+                "0x%pp "
+                "<%s> "
+                "\n",
+                (unsigned long)getpid(),
+#if APR_HAS_THREADS
+                (unsigned long)apr_os_thread_current(),
+#endif /* APR_HAS_THREADS */
+                event,
+                pool,
+                file_line);
+        }
+    }
+}
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME)
+static int pool_is_child_of(apr_pool_t *parent, void *data)
+{
+    apr_pool_t *pool = (apr_pool_t *)data;
+
+    return (pool == parent);
+}
+
+static int apr_pool_is_child_of(apr_pool_t *pool, apr_pool_t *parent)
+{
+    if (parent == NULL)
+        return 0;
+
+    return apr_pool_walk_tree(parent, pool_is_child_of, pool);
+}
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
+
+static void apr_pool_check_integrity(apr_pool_t *pool)
+{
+    /* Rule of thumb: use of the global pool is always
+     * ok, since the only user is apr_pools.c.  Unless
+     * people have searched for the top level parent and
+     * started to use that...
+     */
+    if (pool == global_pool || global_pool == NULL)
+        return;
+
+    /* Lifetime
+     * This basically checks to see if the pool being used is still
+     * a relative to the global pool.  If not it was previously
+     * destroyed, in which case we abort().
+     */
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME)
+    if (!apr_pool_is_child_of(pool, global_pool)) {
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+        apr_pool_log_event(pool, "LIFE",
+                           __FILE__ ":apr_pool_integrity check", 0);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
+        abort();
+    }
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER)
+#if APR_HAS_THREADS
+    if (!apr_os_thread_equal(pool->owner, apr_os_thread_current())) {
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+        apr_pool_log_event(pool, "THREAD",
+                           __FILE__ ":apr_pool_integrity check", 0);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
+        abort();
+    }
+#endif /* APR_HAS_THREADS */
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER) */
+}
+
+
+/*
+ * Initialization (debug)
+ */
+
+APR_DECLARE(apr_status_t) apr_pool_initialize(void)
+{
+    apr_status_t rv;
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+    char *logpath;
+    apr_file_t *debug_log = NULL;
+#endif
+
+    if (apr_pools_initialized++)
+        return APR_SUCCESS;
+
+#if APR_ALLOCATOR_USES_MMAP && defined(_SC_PAGESIZE)
+    boundary_size = sysconf(_SC_PAGESIZE);
+    boundary_index = 12;
+    while ( (1 << boundary_index) < boundary_size)
+        boundary_index++;
+    boundary_size = (1 << boundary_index);
+#endif
+
+    /* Since the debug code works a bit differently then the
+     * regular pools code, we ask for a lock here.  The regular
+     * pools code has got this lock embedded in the global
+     * allocator, a concept unknown to debug mode.
+     */
+    if ((rv = apr_pool_create_ex(&global_pool, NULL, NULL,
+                                 NULL)) != APR_SUCCESS) {
+        return rv;
+    }
+
+    apr_pool_tag(global_pool, "APR global pool");
+
+    apr_pools_initialized = 1;
+
+    /* This has to happen here because mutexes might be backed by
+     * atomics.  It used to be snug and safe in apr_initialize().
+     */
+    if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) {
+        return rv;
+    }
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+    rv = apr_env_get(&logpath, "APR_POOL_DEBUG_LOG", global_pool);
+
+    /* Don't pass file_stderr directly to apr_file_open() here, since
+     * apr_file_open() can call back to apr_pool_log_event() and that
+     * may attempt to use then then non-NULL but partially set up file
+     * object. */
+    if (rv == APR_SUCCESS) {
+        apr_file_open(&debug_log, logpath, APR_APPEND|APR_WRITE|APR_CREATE,
+                      APR_OS_DEFAULT, global_pool);
+    }
+    else {
+        apr_file_open_stderr(&debug_log, global_pool);
+    }
+
+    /* debug_log is now a file handle. */
+    file_stderr = debug_log;
+
+    if (file_stderr) {
+        apr_file_printf(file_stderr,
+            "POOL DEBUG: [PID"
+#if APR_HAS_THREADS
+            "/TID"
+#endif /* APR_HAS_THREADS */
+            "] ACTION  (SIZE      /POOL SIZE /TOTAL SIZE) "
+            "POOL       \"TAG\" <__FILE__:__LINE__> (ALLOCS/TOTAL ALLOCS/CLEARS)\n");
+
+        apr_pool_log_event(global_pool, "GLOBAL", __FILE__ ":apr_pool_initialize", 0);
+    }
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(void) apr_pool_terminate(void)
+{
+    if (!apr_pools_initialized)
+        return;
+
+    if (--apr_pools_initialized)
+        return;
+
+    apr_pool_destroy(global_pool); /* This will also destroy the mutex */
+    global_pool = NULL;
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+    file_stderr = NULL;
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
+}
+
+
+/*
+ * Memory allocation (debug)
+ */
+
+static void *pool_alloc(apr_pool_t *pool, apr_size_t size)
+{
+    debug_node_t *node;
+    void *mem;
+
+    if ((mem = malloc(size)) == NULL) {
+        if (pool->abort_fn)
+            pool->abort_fn(APR_ENOMEM);
+
+        return NULL;
+    }
+
+    node = pool->nodes;
+    if (node == NULL || node->index == 64) {
+        if ((node = malloc(SIZEOF_DEBUG_NODE_T)) == NULL) {
+            free(mem);
+            if (pool->abort_fn)
+                pool->abort_fn(APR_ENOMEM);
+
+            return NULL;
+        }
+
+        memset(node, 0, SIZEOF_DEBUG_NODE_T);
+
+        node->next = pool->nodes;
+        pool->nodes = node;
+        node->index = 0;
+    }
+
+    node->beginp[node->index] = mem;
+    node->endp[node->index] = (char *)mem + size;
+    node->index++;
+
+    pool->stat_alloc++;
+    pool->stat_total_alloc++;
+
+    return mem;
+}
+
+APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *pool, apr_size_t size,
+                                     const char *file_line)
+{
+    void *mem;
+
+    apr_pool_check_integrity(pool);
+
+    mem = pool_alloc(pool, size);
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC)
+    apr_pool_log_event(pool, "PALLOC", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) */
+
+    return mem;
+}
+
+APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *pool, apr_size_t size,
+                                      const char *file_line)
+{
+    void *mem;
+
+    apr_pool_check_integrity(pool);
+
+    mem = pool_alloc(pool, size);
+    memset(mem, 0, size);
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC)
+    apr_pool_log_event(pool, "PCALLOC", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) */
+
+    return mem;
+}
+
+
+/*
+ * Pool creation/destruction (debug)
+ */
+
+#define POOL_POISON_BYTE 'A'
+
+static void pool_clear_debug(apr_pool_t *pool, const char *file_line)
+{
+    debug_node_t *node;
+    apr_uint32_t index;
+
+    /* Run pre destroy cleanups */
+    run_cleanups(&pool->pre_cleanups);
+    pool->pre_cleanups = NULL;
+
+    /* Destroy the subpools.  The subpools will detach themselves from
+     * this pool thus this loop is safe and easy.
+     */
+    while (pool->child)
+        pool_destroy_debug(pool->child, file_line);
+
+    /* Run cleanups */
+    run_cleanups(&pool->cleanups);
+    pool->free_cleanups = NULL;
+    pool->cleanups = NULL;
+
+    /* If new child pools showed up, this is a reason to raise a flag */
+    if (pool->child)
+        abort();
+
+    /* Free subprocesses */
+    free_proc_chain(pool->subprocesses);
+    pool->subprocesses = NULL;
+
+    /* Clear the user data. */
+    pool->user_data = NULL;
+
+    /* Free the blocks, scribbling over them first to help highlight
+     * use-after-free issues. */
+    while ((node = pool->nodes) != NULL) {
+        pool->nodes = node->next;
+
+        for (index = 0; index < node->index; index++) {
+            memset(node->beginp[index], POOL_POISON_BYTE,
+                   (char *)node->endp[index] - (char *)node->beginp[index]);
+            free(node->beginp[index]);
+        }
+
+        memset(node, POOL_POISON_BYTE, SIZEOF_DEBUG_NODE_T);
+        free(node);
+    }
+
+    pool->stat_alloc = 0;
+    pool->stat_clear++;
+}
+
+APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
+                                       const char *file_line)
+{
+#if APR_HAS_THREADS
+    apr_thread_mutex_t *mutex = NULL;
+#endif
+
+    apr_pool_check_integrity(pool);
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
+    apr_pool_log_event(pool, "CLEAR", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
+
+#if APR_HAS_THREADS
+    if (pool->parent != NULL)
+        mutex = pool->parent->mutex;
+
+    /* Lock the parent mutex before clearing so that if we have our
+     * own mutex it won't be accessed by apr_pool_walk_tree after
+     * it has been destroyed.
+     */
+    if (mutex != NULL && mutex != pool->mutex) {
+        apr_thread_mutex_lock(mutex);
+    }
+#endif
+
+    pool_clear_debug(pool, file_line);
+
+#if APR_HAS_THREADS
+    /* If we had our own mutex, it will have been destroyed by
+     * the registered cleanups.  Recreate the mutex.  Unlock
+     * the mutex we obtained above.
+     */
+    if (mutex != pool->mutex) {
+        (void)apr_thread_mutex_create(&pool->mutex,
+                                      APR_THREAD_MUTEX_NESTED, pool);
+
+        if (mutex != NULL)
+            (void)apr_thread_mutex_unlock(mutex);
+    }
+#endif /* APR_HAS_THREADS */
+}
+
+static void pool_destroy_debug(apr_pool_t *pool, const char *file_line)
+{
+    apr_pool_check_integrity(pool);
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
+    apr_pool_log_event(pool, "DESTROY", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
+
+    pool_clear_debug(pool, file_line);
+
+    /* Remove the pool from the parents child list */
+    if (pool->parent) {
+#if APR_HAS_THREADS
+        apr_thread_mutex_t *mutex;
+
+        if ((mutex = pool->parent->mutex) != NULL)
+            apr_thread_mutex_lock(mutex);
+#endif /* APR_HAS_THREADS */
+
+        if ((*pool->ref = pool->sibling) != NULL)
+            pool->sibling->ref = pool->ref;
+
+#if APR_HAS_THREADS
+        if (mutex)
+            apr_thread_mutex_unlock(mutex);
+#endif /* APR_HAS_THREADS */
+    }
+
+    if (pool->allocator != NULL
+        && apr_allocator_owner_get(pool->allocator) == pool) {
+        apr_allocator_destroy(pool->allocator);
+    }
+
+    /* Free the pool itself */
+    free(pool);
+}
+
+APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool,
+                                         const char *file_line)
+{
+    if (pool->joined) {
+        /* Joined pools must not be explicitly destroyed; the caller
+         * has broken the guarantee. */
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
+        apr_pool_log_event(pool, "LIFE",
+                           __FILE__ ":apr_pool_destroy abort on joined", 0);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */
+
+        abort();
+    }
+    pool_destroy_debug(pool, file_line);
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
+                                                   apr_pool_t *parent,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+{
+    apr_pool_t *pool;
+
+    *newpool = NULL;
+
+    if (!parent) {
+        parent = global_pool;
+    }
+    else {
+       apr_pool_check_integrity(parent);
+
+       if (!allocator)
+           allocator = parent->allocator;
+    }
+
+    if (!abort_fn && parent)
+        abort_fn = parent->abort_fn;
+
+    if ((pool = malloc(SIZEOF_POOL_T)) == NULL) {
+        if (abort_fn)
+            abort_fn(APR_ENOMEM);
+
+         return APR_ENOMEM;
+    }
+
+    memset(pool, 0, SIZEOF_POOL_T);
+
+    pool->allocator = allocator;
+    pool->abort_fn = abort_fn;
+    pool->tag = file_line;
+    pool->file_line = file_line;
+
+    if ((pool->parent = parent) != NULL) {
+#if APR_HAS_THREADS
+        if (parent->mutex)
+            apr_thread_mutex_lock(parent->mutex);
+#endif /* APR_HAS_THREADS */
+        if ((pool->sibling = parent->child) != NULL)
+            pool->sibling->ref = &pool->sibling;
+
+        parent->child = pool;
+        pool->ref = &parent->child;
+
+#if APR_HAS_THREADS
+        if (parent->mutex)
+            apr_thread_mutex_unlock(parent->mutex);
+#endif /* APR_HAS_THREADS */
+    }
+    else {
+        pool->sibling = NULL;
+        pool->ref = NULL;
+    }
+
+#if APR_HAS_THREADS
+    pool->owner = apr_os_thread_current();
+#endif /* APR_HAS_THREADS */
+#ifdef NETWARE
+    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
+#endif /* defined(NETWARE) */
+
+
+    if (parent == NULL || parent->allocator != allocator) {
+#if APR_HAS_THREADS
+        apr_status_t rv;
+
+        /* No matter what the creation flags say, always create
+         * a lock.  Without it integrity_check and apr_pool_num_bytes
+         * blow up (because they traverse pools child lists that
+         * possibly belong to another thread, in combination with
+         * the pool having no lock).  However, this might actually
+         * hide problems like creating a child pool of a pool
+         * belonging to another thread.
+         */
+        if ((rv = apr_thread_mutex_create(&pool->mutex,
+                APR_THREAD_MUTEX_NESTED, pool)) != APR_SUCCESS) {
+            free(pool);
+            return rv;
+        }
+#endif /* APR_HAS_THREADS */
+    }
+    else {
+#if APR_HAS_THREADS
+        if (parent)
+            pool->mutex = parent->mutex;
+#endif /* APR_HAS_THREADS */
+    }
+
+    *newpool = pool;
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
+    apr_pool_log_event(pool, "CREATE", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_core_ex_debug(apr_pool_t **newpool,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+{
+    return apr_pool_create_unmanaged_ex_debug(newpool, abort_fn, allocator,
+                                              file_line);
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+{
+    apr_pool_t *pool;
+    apr_allocator_t *pool_allocator;
+
+    *newpool = NULL;
+
+    if ((pool = malloc(SIZEOF_POOL_T)) == NULL) {
+        if (abort_fn)
+            abort_fn(APR_ENOMEM);
+
+         return APR_ENOMEM;
+    }
+
+    memset(pool, 0, SIZEOF_POOL_T);
+
+    pool->abort_fn = abort_fn;
+    pool->tag = file_line;
+    pool->file_line = file_line;
+
+#if APR_HAS_THREADS
+    pool->owner = apr_os_thread_current();
+#endif /* APR_HAS_THREADS */
+#ifdef NETWARE
+    pool->owner_proc = (apr_os_proc_t)getnlmhandle();
+#endif /* defined(NETWARE) */
+
+    if ((pool_allocator = allocator) == NULL) {
+        apr_status_t rv;
+        if ((rv = apr_allocator_create(&pool_allocator)) != APR_SUCCESS) {
+            if (abort_fn)
+                abort_fn(rv);
+            return rv;
+        }
+        pool_allocator->owner = pool;
+    }
+    pool->allocator = pool_allocator;
+
+    if (pool->allocator != allocator) {
+#if APR_HAS_THREADS
+        apr_status_t rv;
+
+        /* No matter what the creation flags say, always create
+         * a lock.  Without it integrity_check and apr_pool_num_bytes
+         * blow up (because they traverse pools child lists that
+         * possibly belong to another thread, in combination with
+         * the pool having no lock).  However, this might actually
+         * hide problems like creating a child pool of a pool
+         * belonging to another thread.
+         */
+        if ((rv = apr_thread_mutex_create(&pool->mutex,
+                APR_THREAD_MUTEX_NESTED, pool)) != APR_SUCCESS) {
+            free(pool);
+            return rv;
+        }
+#endif /* APR_HAS_THREADS */
+    }
+
+    *newpool = pool;
+
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
+    apr_pool_log_event(pool, "CREATE", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
+
+    return APR_SUCCESS;
+}
+
+/*
+ * "Print" functions (debug)
+ */
+
+struct psprintf_data {
+    apr_vformatter_buff_t vbuff;
+    char      *mem;
+    apr_size_t size;
+};
+
+static int psprintf_flush(apr_vformatter_buff_t *vbuff)
+{
+    struct psprintf_data *ps = (struct psprintf_data *)vbuff;
+    apr_size_t size;
+
+    size = ps->vbuff.curpos - ps->mem;
+
+    ps->size <<= 1;
+    if ((ps->mem = realloc(ps->mem, ps->size)) == NULL)
+        return -1;
+
+    ps->vbuff.curpos = ps->mem + size;
+    ps->vbuff.endpos = ps->mem + ps->size - 1;
+
+    return 0;
+}
+
+APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap)
+{
+    struct psprintf_data ps;
+    debug_node_t *node;
+
+    apr_pool_check_integrity(pool);
+
+    ps.size = 64;
+    ps.mem = malloc(ps.size);
+    ps.vbuff.curpos  = ps.mem;
+
+    /* Save a byte for the NUL terminator */
+    ps.vbuff.endpos = ps.mem + ps.size - 1;
+
+    if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) {
+        if (pool->abort_fn)
+            pool->abort_fn(APR_ENOMEM);
+
+        return NULL;
+    }
+
+    *ps.vbuff.curpos++ = '\0';
+
+    /*
+     * Link the node in
+     */
+    node = pool->nodes;
+    if (node == NULL || node->index == 64) {
+        if ((node = malloc(SIZEOF_DEBUG_NODE_T)) == NULL) {
+            if (pool->abort_fn)
+                pool->abort_fn(APR_ENOMEM);
+
+            return NULL;
+        }
+
+        node->next = pool->nodes;
+        pool->nodes = node;
+        node->index = 0;
+    }
+
+    node->beginp[node->index] = ps.mem;
+    node->endp[node->index] = ps.mem + ps.size;
+    node->index++;
+
+    return ps.mem;
+}
+
+
+/*
+ * Debug functions
+ */
+
+APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub)
+{
+#if APR_POOL_DEBUG
+    if (sub->parent != p) {
+        abort();
+    }
+    sub->joined = p;
+#endif
+}
+
+static int pool_find(apr_pool_t *pool, void *data)
+{
+    void **pmem = (void **)data;
+    debug_node_t *node;
+    apr_uint32_t index;
+
+    node = pool->nodes;
+
+    while (node) {
+        for (index = 0; index < node->index; index++) {
+             if (node->beginp[index] <= *pmem
+                 && node->endp[index] > *pmem) {
+                 *pmem = pool;
+                 return 1;
+             }
+        }
+
+        node = node->next;
+    }
+
+    return 0;
+}
+
+APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem)
+{
+    void *pool = (void *)mem;
+
+    if (apr_pool_walk_tree(global_pool, pool_find, &pool))
+        return pool;
+
+    return NULL;
+}
+
+static int pool_num_bytes(apr_pool_t *pool, void *data)
+{
+    apr_size_t *psize = (apr_size_t *)data;
+    debug_node_t *node;
+    apr_uint32_t index;
+
+    node = pool->nodes;
+
+    while (node) {
+        for (index = 0; index < node->index; index++) {
+            *psize += (char *)node->endp[index] - (char *)node->beginp[index];
+        }
+
+        node = node->next;
+    }
+
+    return 0;
+}
+
+APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *pool, int recurse)
+{
+    apr_size_t size = 0;
+
+    if (!recurse) {
+        pool_num_bytes(pool, &size);
+
+        return size;
+    }
+
+    apr_pool_walk_tree(pool, pool_num_bytes, &size);
+
+    return size;
+}
+
+APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag)
+{
+}
+
+#endif /* !APR_POOL_DEBUG */
+
+#ifdef NETWARE
+void netware_pool_proc_cleanup ()
+{
+    apr_pool_t *pool = global_pool->child;
+    apr_os_proc_t owner_proc = (apr_os_proc_t)getnlmhandle();
+
+    while (pool) {
+        if (pool->owner_proc == owner_proc) {
+            apr_pool_destroy (pool);
+            pool = global_pool->child;
+        }
+        else {
+            pool = pool->sibling;
+        }
+    }
+    return;
+}
+#endif /* defined(NETWARE) */
+
+
+/*
+ * "Print" functions (common)
+ */
+
+APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...)
+{
+    va_list ap;
+    char *res;
+
+    va_start(ap, fmt);
+    res = apr_pvsprintf(p, fmt, ap);
+    va_end(ap);
+    return res;
+}
+
+/*
+ * Pool Properties
+ */
+
+APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abort_fn,
+                                     apr_pool_t *pool)
+{
+    pool->abort_fn = abort_fn;
+}
+
+APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool)
+{
+    return pool->abort_fn;
+}
+
+APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool)
+{
+#ifdef NETWARE
+    /* On NetWare, don't return the global_pool, return the application pool 
+       as the top most pool */
+    if (pool->parent == global_pool)
+        return pool;
+    else
+#endif
+    return pool->parent;
+}
+
+APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool)
+{
+    return pool->allocator;
+}
+
+/* return TRUE if a is an ancestor of b
+ * NULL is considered an ancestor of all pools
+ */
+APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b)
+{
+    if (a == NULL)
+        return 1;
+
+#if APR_POOL_DEBUG
+    /* Find the pool with the longest lifetime guaranteed by the
+     * caller: */
+    while (a->joined) {
+        a = a->joined;
+    }
+#endif
+
+    while (b) {
+        if (a == b)
+            return 1;
+
+        b = b->parent;
+    }
+
+    return 0;
+}
+
+APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag)
+{
+    pool->tag = tag;
+}
+
+
+/*
+ * User data management
+ */
+
+APR_DECLARE(apr_status_t) apr_pool_userdata_set(const void *data, const char *key,
+                                                apr_status_t (*cleanup) (void *),
+                                                apr_pool_t *pool)
+{
+#if APR_POOL_DEBUG
+    apr_pool_check_integrity(pool);
+#endif /* APR_POOL_DEBUG */
+
+    if (pool->user_data == NULL)
+        pool->user_data = apr_hash_make(pool);
+
+    if (apr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING) == NULL) {
+        char *new_key = apr_pstrdup(pool, key);
+        apr_hash_set(pool->user_data, new_key, APR_HASH_KEY_STRING, data);
+    }
+    else {
+        apr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data);
+    }
+
+    if (cleanup)
+        apr_pool_cleanup_register(pool, data, cleanup, cleanup);
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_pool_userdata_setn(const void *data,
+                              const char *key,
+                              apr_status_t (*cleanup)(void *),
+                              apr_pool_t *pool)
+{
+#if APR_POOL_DEBUG
+    apr_pool_check_integrity(pool);
+#endif /* APR_POOL_DEBUG */
+
+    if (pool->user_data == NULL)
+        pool->user_data = apr_hash_make(pool);
+
+    apr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data);
+
+    if (cleanup)
+        apr_pool_cleanup_register(pool, data, cleanup, cleanup);
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key,
+                                                apr_pool_t *pool)
+{
+#if APR_POOL_DEBUG
+    apr_pool_check_integrity(pool);
+#endif /* APR_POOL_DEBUG */
+
+    if (pool->user_data == NULL) {
+        *data = NULL;
+    }
+    else {
+        *data = apr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING);
+    }
+
+    return APR_SUCCESS;
+}
+
+
+/*
+ * Cleanup
+ */
+
+struct cleanup_t {
+    struct cleanup_t *next;
+    const void *data;
+    apr_status_t (*plain_cleanup_fn)(void *data);
+    apr_status_t (*child_cleanup_fn)(void *data);
+};
+
+APR_DECLARE(void) apr_pool_cleanup_register(apr_pool_t *p, const void *data,
+                      apr_status_t (*plain_cleanup_fn)(void *data),
+                      apr_status_t (*child_cleanup_fn)(void *data))
+{
+    cleanup_t *c;
+
+#if APR_POOL_DEBUG
+    apr_pool_check_integrity(p);
+#endif /* APR_POOL_DEBUG */
+
+    if (p != NULL) {
+        if (p->free_cleanups) {
+            /* reuse a cleanup structure */
+            c = p->free_cleanups;
+            p->free_cleanups = c->next;
+        } else {
+            c = apr_palloc(p, sizeof(cleanup_t));
+        }
+        c->data = data;
+        c->plain_cleanup_fn = plain_cleanup_fn;
+        c->child_cleanup_fn = child_cleanup_fn;
+        c->next = p->cleanups;
+        p->cleanups = c;
+    }
+}
+
+APR_DECLARE(void) apr_pool_pre_cleanup_register(apr_pool_t *p, const void *data,
+                      apr_status_t (*plain_cleanup_fn)(void *data))
+{
+    cleanup_t *c;
+
+#if APR_POOL_DEBUG
+    apr_pool_check_integrity(p);
+#endif /* APR_POOL_DEBUG */
+
+    if (p != NULL) {
+        if (p->free_cleanups) {
+            /* reuse a cleanup structure */
+            c = p->free_cleanups;
+            p->free_cleanups = c->next;
+        } else {
+            c = apr_palloc(p, sizeof(cleanup_t));
+        }
+        c->data = data;
+        c->plain_cleanup_fn = plain_cleanup_fn;
+        c->next = p->pre_cleanups;
+        p->pre_cleanups = c;
+    }
+}
+
+APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data,
+                      apr_status_t (*cleanup_fn)(void *))
+{
+    cleanup_t *c, **lastp;
+
+#if APR_POOL_DEBUG
+    apr_pool_check_integrity(p);
+#endif /* APR_POOL_DEBUG */
+
+    if (p == NULL)
+        return;
+
+    c = p->cleanups;
+    lastp = &p->cleanups;
+    while (c) {
+#if APR_POOL_DEBUG
+        /* Some cheap loop detection to catch a corrupt list: */
+        if (c == c->next
+            || (c->next && c == c->next->next)
+            || (c->next && c->next->next && c == c->next->next->next)) {
+            abort();
+        }
+#endif
+
+        if (c->data == data && c->plain_cleanup_fn == cleanup_fn) {
+            *lastp = c->next;
+            /* move to freelist */
+            c->next = p->free_cleanups;
+            p->free_cleanups = c;
+            break;
+        }
+
+        lastp = &c->next;
+        c = c->next;
+    }
+
+    /* Remove any pre-cleanup as well */
+    c = p->pre_cleanups;
+    lastp = &p->pre_cleanups;
+    while (c) {
+#if APR_POOL_DEBUG
+        /* Some cheap loop detection to catch a corrupt list: */
+        if (c == c->next
+            || (c->next && c == c->next->next)
+            || (c->next && c->next->next && c == c->next->next->next)) {
+            abort();
+        }
+#endif
+
+        if (c->data == data && c->plain_cleanup_fn == cleanup_fn) {
+            *lastp = c->next;
+            /* move to freelist */
+            c->next = p->free_cleanups;
+            p->free_cleanups = c;
+            break;
+        }
+
+        lastp = &c->next;
+        c = c->next;
+    }
+
+}
+
+APR_DECLARE(void) apr_pool_child_cleanup_set(apr_pool_t *p, const void *data,
+                      apr_status_t (*plain_cleanup_fn)(void *),
+                      apr_status_t (*child_cleanup_fn)(void *))
+{
+    cleanup_t *c;
+
+#if APR_POOL_DEBUG
+    apr_pool_check_integrity(p);
+#endif /* APR_POOL_DEBUG */
+
+    if (p == NULL)
+        return;
+
+    c = p->cleanups;
+    while (c) {
+        if (c->data == data && c->plain_cleanup_fn == plain_cleanup_fn) {
+            c->child_cleanup_fn = child_cleanup_fn;
+            break;
+        }
+
+        c = c->next;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_pool_cleanup_run(apr_pool_t *p, void *data,
+                              apr_status_t (*cleanup_fn)(void *))
+{
+    apr_pool_cleanup_kill(p, data, cleanup_fn);
+    return (*cleanup_fn)(data);
+}
+
+static void run_cleanups(cleanup_t **cref)
+{
+    cleanup_t *c = *cref;
+
+    while (c) {
+        *cref = c->next;
+        (*c->plain_cleanup_fn)((void *)c->data);
+        c = *cref;
+    }
+}
+
+#if !defined(WIN32) && !defined(OS2)
+
+static void run_child_cleanups(cleanup_t **cref)
+{
+    cleanup_t *c = *cref;
+
+    while (c) {
+        *cref = c->next;
+        (*c->child_cleanup_fn)((void *)c->data);
+        c = *cref;
+    }
+}
+
+static void cleanup_pool_for_exec(apr_pool_t *p)
+{
+    run_child_cleanups(&p->cleanups);
+
+    for (p = p->child; p; p = p->sibling)
+        cleanup_pool_for_exec(p);
+}
+
+APR_DECLARE(void) apr_pool_cleanup_for_exec(void)
+{
+    cleanup_pool_for_exec(global_pool);
+}
+
+#else /* !defined(WIN32) && !defined(OS2) */
+
+APR_DECLARE(void) apr_pool_cleanup_for_exec(void)
+{
+    /*
+     * Don't need to do anything on NT or OS/2, because 
+     * these platforms will spawn the new process - not
+     * fork for exec. All handles that are not inheritable,
+     * will be automajically closed. The only problem is
+     * with file handles that are open, but there isn't
+     * much that can be done about that (except if the
+     * child decides to go out and close them, or the
+     * developer quits opening them shared)
+     */
+    return;
+}
+
+#endif /* !defined(WIN32) && !defined(OS2) */
+
+APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data)
+{
+    /* do nothing cleanup routine */
+    return APR_SUCCESS;
+}
+
+/* Subprocesses don't use the generic cleanup interface because
+ * we don't want multiple subprocesses to result in multiple
+ * three-second pauses; the subprocesses have to be "freed" all
+ * at once.  If other resources are introduced with the same property,
+ * we might want to fold support for that into the generic interface.
+ * For now, it's a special case.
+ */
+APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *pool, apr_proc_t *proc,
+                                           apr_kill_conditions_e how)
+{
+    struct process_chain *pc = apr_palloc(pool, sizeof(struct process_chain));
+
+    pc->proc = proc;
+    pc->kill_how = how;
+    pc->next = pool->subprocesses;
+    pool->subprocesses = pc;
+}
+
+static void free_proc_chain(struct process_chain *procs)
+{
+    /* Dispose of the subprocesses we've spawned off in the course of
+     * whatever it was we're cleaning up now.  This may involve killing
+     * some of them off...
+     */
+    struct process_chain *pc;
+    int need_timeout = 0;
+    apr_time_t timeout_interval;
+
+    if (!procs)
+        return; /* No work.  Whew! */
+
+    /* First, check to see if we need to do the SIGTERM, sleep, SIGKILL
+     * dance with any of the processes we're cleaning up.  If we've got
+     * any kill-on-sight subprocesses, ditch them now as well, so they
+     * don't waste any more cycles doing whatever it is that they shouldn't
+     * be doing anymore.
+     */
+
+#ifndef NEED_WAITPID
+    /* Pick up all defunct processes */
+    for (pc = procs; pc; pc = pc->next) {
+        if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) != APR_CHILD_NOTDONE)
+            pc->kill_how = APR_KILL_NEVER;
+    }
+#endif /* !defined(NEED_WAITPID) */
+
+    for (pc = procs; pc; pc = pc->next) {
+#ifndef WIN32
+        if ((pc->kill_how == APR_KILL_AFTER_TIMEOUT)
+            || (pc->kill_how == APR_KILL_ONLY_ONCE)) {
+            /*
+             * Subprocess may be dead already.  Only need the timeout if not.
+             * Note: apr_proc_kill on Windows is TerminateProcess(), which is
+             * similar to a SIGKILL, so always give the process a timeout
+             * under Windows before killing it.
+             */
+            if (apr_proc_kill(pc->proc, SIGTERM) == APR_SUCCESS)
+                need_timeout = 1;
+        }
+        else if (pc->kill_how == APR_KILL_ALWAYS) {
+#else /* WIN32 knows only one fast, clean method of killing processes today */
+        if (pc->kill_how != APR_KILL_NEVER) {
+            need_timeout = 1;
+            pc->kill_how = APR_KILL_ALWAYS;
+#endif
+            apr_proc_kill(pc->proc, SIGKILL);
+        }
+    }
+
+    /* Sleep only if we have to. The sleep algorithm grows
+     * by a factor of two on each iteration. TIMEOUT_INTERVAL
+     * is equal to TIMEOUT_USECS / 64.
+     */
+    if (need_timeout) {
+        timeout_interval = TIMEOUT_INTERVAL;
+        apr_sleep(timeout_interval);
+
+        do {
+            /* check the status of the subprocesses */
+            need_timeout = 0;
+            for (pc = procs; pc; pc = pc->next) {
+                if (pc->kill_how == APR_KILL_AFTER_TIMEOUT) {
+                    if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT)
+                            == APR_CHILD_NOTDONE)
+                        need_timeout = 1;		/* subprocess is still active */
+                    else
+                        pc->kill_how = APR_KILL_NEVER;	/* subprocess has exited */
+                }
+            }
+            if (need_timeout) {
+                if (timeout_interval >= TIMEOUT_USECS) {
+                    break;
+                }
+                apr_sleep(timeout_interval);
+                timeout_interval *= 2;
+            }
+        } while (need_timeout);
+    }
+
+    /* OK, the scripts we just timed out for have had a chance to clean up
+     * --- now, just get rid of them, and also clean up the system accounting
+     * goop...
+     */
+    for (pc = procs; pc; pc = pc->next) {
+        if (pc->kill_how == APR_KILL_AFTER_TIMEOUT)
+            apr_proc_kill(pc->proc, SIGKILL);
+    }
+
+    /* Now wait for all the signaled processes to die */
+    for (pc = procs; pc; pc = pc->next) {
+        if (pc->kill_how != APR_KILL_NEVER)
+            (void)apr_proc_wait(pc->proc, NULL, NULL, APR_WAIT);
+    }
+}
+
+
+/*
+ * Pool creation/destruction stubs, for people who are running
+ * mixed release/debug enviroments.
+ */
+
+#if !APR_POOL_DEBUG
+APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *pool, apr_size_t size,
+                                     const char *file_line)
+{
+    return apr_palloc(pool, size);
+}
+
+APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *pool, apr_size_t size,
+                                      const char *file_line)
+{
+    return apr_pcalloc(pool, size);
+}
+
+APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
+                                       const char *file_line)
+{
+    apr_pool_clear(pool);
+}
+
+APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool,
+                                         const char *file_line)
+{
+    apr_pool_destroy(pool);
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
+                                                   apr_pool_t *parent,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+{
+    return apr_pool_create_ex(newpool, parent, abort_fn, allocator);
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_core_ex_debug(apr_pool_t **newpool,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+{
+    return apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator);
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
+                                                   apr_abortfunc_t abort_fn,
+                                                   apr_allocator_t *allocator,
+                                                   const char *file_line)
+{
+    return apr_pool_create_unmanaged_ex(newpool, abort_fn, allocator);
+}
+
+#else /* APR_POOL_DEBUG */
+
+#undef apr_palloc
+APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size);
+
+APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size)
+{
+    return apr_palloc_debug(pool, size, "undefined");
+}
+
+#undef apr_pcalloc
+APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size);
+
+APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size)
+{
+    return apr_pcalloc_debug(pool, size, "undefined");
+}
+
+#undef apr_pool_clear
+APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool);
+
+APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool)
+{
+    apr_pool_clear_debug(pool, "undefined");
+}
+
+#undef apr_pool_destroy
+APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool);
+
+APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool)
+{
+    apr_pool_destroy_debug(pool, "undefined");
+}
+
+#undef apr_pool_create_ex
+APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
+                                             apr_pool_t *parent,
+                                             apr_abortfunc_t abort_fn,
+                                             apr_allocator_t *allocator);
+
+APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
+                                             apr_pool_t *parent,
+                                             apr_abortfunc_t abort_fn,
+                                             apr_allocator_t *allocator)
+{
+    return apr_pool_create_ex_debug(newpool, parent,
+                                    abort_fn, allocator,
+                                    "undefined");
+}
+
+#undef apr_pool_create_core_ex
+APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
+                                                  apr_abortfunc_t abort_fn,
+                                                  apr_allocator_t *allocator);
+
+APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
+                                                  apr_abortfunc_t abort_fn,
+                                                  apr_allocator_t *allocator)
+{
+    return apr_pool_create_unmanaged_ex_debug(newpool, abort_fn,
+                                         allocator, "undefined");
+}
+
+#undef apr_pool_create_unmanaged_ex
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
+                                                  apr_abortfunc_t abort_fn,
+                                                  apr_allocator_t *allocator);
+
+APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
+                                                  apr_abortfunc_t abort_fn,
+                                                  apr_allocator_t *allocator)
+{
+    return apr_pool_create_unmanaged_ex_debug(newpool, abort_fn,
+                                         allocator, "undefined");
+}
+
+#endif /* APR_POOL_DEBUG */

Deleted: vendor/apache/apr/1.5.2/misc/unix/errorcodes.c
===================================================================
--- vendor/apache/apr/dist/misc/unix/errorcodes.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/misc/unix/errorcodes.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,436 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_misc.h"
-#include "apr_strings.h"
-#include "apr_lib.h"
-#include "apr_dso.h"
-
-#if APR_HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-/*
- * stuffbuffer - like apr_cpystrn() but returns the address of the
- * dest buffer instead of the address of the terminating '\0'
- */
-static char *stuffbuffer(char *buf, apr_size_t bufsize, const char *s)
-{
-    apr_cpystrn(buf,s,bufsize);
-    return buf;
-}
-
-static char *apr_error_string(apr_status_t statcode)
-{
-    switch (statcode) {
-    case APR_ENOPOOL:
-        return "A new pool could not be created.";
-    case APR_EBADDATE:
-        return "An invalid date has been provided";
-    case APR_EINVALSOCK:
-        return "An invalid socket was returned";
-    case APR_ENOPROC:
-        return "No process was provided and one was required.";
-    case APR_ENOTIME:
-        return "No time was provided and one was required.";
-    case APR_ENODIR:
-        return "No directory was provided and one was required.";
-    case APR_ENOLOCK:
-        return "No lock was provided and one was required.";
-    case APR_ENOPOLL:
-        return "No poll structure was provided and one was required.";
-    case APR_ENOSOCKET:
-        return "No socket was provided and one was required.";
-    case APR_ENOTHREAD:
-        return "No thread was provided and one was required.";
-    case APR_ENOTHDKEY:
-        return "No thread key structure was provided and one was required.";
-    case APR_ENOSHMAVAIL:
-        return "No shared memory is currently available";
-    case APR_EDSOOPEN:
-#if APR_HAS_DSO && defined(HAVE_LIBDL)
-        return dlerror();
-#else
-        return "DSO load failed";
-#endif /* HAVE_LIBDL */
-    case APR_EBADIP:
-        return "The specified IP address is invalid.";
-    case APR_EBADMASK:
-        return "The specified network mask is invalid.";
-
-    case APR_INCHILD:
-        return
-	    "Your code just forked, and you are currently executing in the "
-	    "child process";
-    case APR_INPARENT:
-        return
-	    "Your code just forked, and you are currently executing in the "
-	    "parent process";
-    case APR_DETACH:
-        return "The specified thread is detached";
-    case APR_NOTDETACH:
-        return "The specified thread is not detached";
-    case APR_CHILD_DONE:
-        return "The specified child process is done executing";
-    case APR_CHILD_NOTDONE:
-        return "The specified child process is not done executing";
-    case APR_TIMEUP:
-        return "The timeout specified has expired";
-    case APR_INCOMPLETE:
-        return "Partial results are valid but processing is incomplete";
-    case APR_BADCH:
-        return "Bad character specified on command line";
-    case APR_BADARG:
-        return "Missing parameter for the specified command line option";
-    case APR_EOF:
-        return "End of file found";
-    case APR_NOTFOUND:
-        return "Could not find specified socket in poll list.";
-    case APR_ANONYMOUS:
-        return "Shared memory is implemented anonymously";
-    case APR_FILEBASED:
-        return "Shared memory is implemented using files";
-    case APR_KEYBASED:
-        return "Shared memory is implemented using a key system";
-    case APR_EINIT:
-        return
-	    "There is no error, this value signifies an initialized "
-	    "error code";
-    case APR_ENOTIMPL:
-        return "This function has not been implemented on this platform";
-    case APR_EMISMATCH:
-        return "passwords do not match";
-    case APR_EABSOLUTE:
-        return "The given path is absolute";
-    case APR_ERELATIVE:
-        return "The given path is relative";
-    case APR_EINCOMPLETE:
-        return "The given path is incomplete";
-    case APR_EABOVEROOT:
-        return "The given path was above the root path";
-    case APR_EBADPATH:
-        return "The given path is misformatted or contained invalid characters";
-    case APR_EPATHWILD:
-        return "The given path contained wildcard characters";
-    case APR_EPROC_UNKNOWN:
-        return "The process is not recognized.";
-    case APR_EGENERAL:
-        return "Internal error";
-    default:
-        return "Error string not specified yet";
-    }
-}
-
-
-#ifdef OS2
-#include <ctype.h>
-
-int apr_canonical_error(apr_status_t err);
-
-static char *apr_os_strerror(char* buf, apr_size_t bufsize, int err)
-{
-  char result[200];
-  unsigned char message[HUGE_STRING_LEN];
-  ULONG len;
-  char *pos;
-  int c;
-  
-  if (err >= 10000 && err < 12000) {  /* socket error codes */
-      return stuffbuffer(buf, bufsize,
-                         strerror(apr_canonical_error(err+APR_OS_START_SYSERR)));
-  } 
-  else if (DosGetMessage(NULL, 0, message, HUGE_STRING_LEN, err,
-			 "OSO001.MSG", &len) == 0) {
-      len--;
-      message[len] = 0;
-      pos = result;
-  
-      if (len >= sizeof(result))
-        len = sizeof(result) - 1;
-
-      for (c=0; c<len; c++) {
-	  /* skip multiple whitespace */
-          while (apr_isspace(message[c]) && apr_isspace(message[c+1]))
-              c++;
-          *(pos++) = apr_isspace(message[c]) ? ' ' : message[c];
-      }
-  
-      *pos = 0;
-  } 
-  else {
-      sprintf(result, "OS/2 error %d", err);
-  }
-
-  /* Stuff the string into the caller supplied buffer, then return 
-   * a pointer to it.
-   */
-  return stuffbuffer(buf, bufsize, result);  
-}
-
-#elif defined(WIN32) || (defined(NETWARE) && defined(USE_WINSOCK))
-
-static const struct {
-    apr_status_t code;
-    const char *msg;
-} gaErrorList[] = {
-    {WSAEINTR,           "Interrupted system call"},
-    {WSAEBADF,           "Bad file number"},
-    {WSAEACCES,          "Permission denied"},
-    {WSAEFAULT,          "Bad address"},
-    {WSAEINVAL,          "Invalid argument"},
-    {WSAEMFILE,          "Too many open sockets"},
-    {WSAEWOULDBLOCK,     "Operation would block"},
-    {WSAEINPROGRESS,     "Operation now in progress"},
-    {WSAEALREADY,        "Operation already in progress"},
-    {WSAENOTSOCK,        "Socket operation on non-socket"},
-    {WSAEDESTADDRREQ,    "Destination address required"},
-    {WSAEMSGSIZE,        "Message too long"},
-    {WSAEPROTOTYPE,      "Protocol wrong type for socket"},
-    {WSAENOPROTOOPT,     "Bad protocol option"},
-    {WSAEPROTONOSUPPORT, "Protocol not supported"},
-    {WSAESOCKTNOSUPPORT, "Socket type not supported"},
-    {WSAEOPNOTSUPP,      "Operation not supported on socket"},
-    {WSAEPFNOSUPPORT,    "Protocol family not supported"},
-    {WSAEAFNOSUPPORT,    "Address family not supported"},
-    {WSAEADDRINUSE,      "Address already in use"},
-    {WSAEADDRNOTAVAIL,   "Can't assign requested address"},
-    {WSAENETDOWN,        "Network is down"},
-    {WSAENETUNREACH,     "Network is unreachable"},
-    {WSAENETRESET,       "Net connection reset"},
-    {WSAECONNABORTED,    "Software caused connection abort"},
-    {WSAECONNRESET,      "Connection reset by peer"},
-    {WSAENOBUFS,         "No buffer space available"},
-    {WSAEISCONN,         "Socket is already connected"},
-    {WSAENOTCONN,        "Socket is not connected"},
-    {WSAESHUTDOWN,       "Can't send after socket shutdown"},
-    {WSAETOOMANYREFS,    "Too many references, can't splice"},
-    {WSAETIMEDOUT,       "Connection timed out"},
-    {WSAECONNREFUSED,    "Connection refused"},
-    {WSAELOOP,           "Too many levels of symbolic links"},
-    {WSAENAMETOOLONG,    "File name too long"},
-    {WSAEHOSTDOWN,       "Host is down"},
-    {WSAEHOSTUNREACH,    "No route to host"},
-    {WSAENOTEMPTY,       "Directory not empty"},
-    {WSAEPROCLIM,        "Too many processes"},
-    {WSAEUSERS,          "Too many users"},
-    {WSAEDQUOT,          "Disc quota exceeded"},
-    {WSAESTALE,          "Stale NFS file handle"},
-    {WSAEREMOTE,         "Too many levels of remote in path"},
-    {WSASYSNOTREADY,     "Network system is unavailable"},
-    {WSAVERNOTSUPPORTED, "Winsock version out of range"},
-    {WSANOTINITIALISED,  "WSAStartup not yet called"},
-    {WSAEDISCON,         "Graceful shutdown in progress"},
-    {WSAHOST_NOT_FOUND,  "Host not found"},
-    {WSANO_DATA,         "No host data of that type was found"},
-    {0,                  NULL}
-};
-
-
-static char *apr_os_strerror(char *buf, apr_size_t bufsize, apr_status_t errcode)
-{
-    apr_size_t len=0, i;
-
-#ifndef NETWARE
-#ifndef _WIN32_WCE
-    len = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM 
-                      | FORMAT_MESSAGE_IGNORE_INSERTS,
-                        NULL,
-                        errcode,
-                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
-                        buf,
-                        (DWORD)bufsize,
-                        NULL);
-#else /* _WIN32_WCE speaks unicode */
-     LPTSTR msg = (LPTSTR) buf;
-     len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM 
-                       | FORMAT_MESSAGE_IGNORE_INSERTS,
-                         NULL,
-                         errcode,
-                         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
-                         msg,
-                         (DWORD) (bufsize/sizeof(TCHAR)),
-                         NULL);
-     /* in-place convert to US-ASCII, substituting '?' for non ASCII   */
-     for(i = 0; i <= len; i++) {
-        if (msg[i] < 0x80 && msg[i] >= 0) {
-            buf[i] = (char) msg[i];
-        } else {
-            buf[i] = '?';
-        }
-    }
-#endif
-#endif
-
-    if (!len) {
-        for (i = 0; gaErrorList[i].msg; ++i) {
-            if (gaErrorList[i].code == errcode) {
-                apr_cpystrn(buf, gaErrorList[i].msg, bufsize);
-                len = strlen(buf);
-                break;
-            }
-        }
-    }
-
-    if (len) {
-        /* FormatMessage put the message in the buffer, but it may
-         * have embedded a newline (\r\n), and possible more than one.
-         * Remove the newlines replacing them with a space. This is not
-         * as visually perfect as moving all the remaining message over,
-         * but more efficient.
-         */
-        i = len;
-        while (i) {
-            i--;
-            if ((buf[i] == '\r') || (buf[i] == '\n'))
-                buf[i] = ' ';
-        }
-    }
-    else {
-        /* Windows didn't provide us with a message.  Even stuff like                    * WSAECONNREFUSED won't get a message.
-         */
-        apr_snprintf(buf, bufsize, "Unrecognized Win32 error code %d", errcode);
-    }
-
-    return buf;
-}
-
-#else
-/* On Unix, apr_os_strerror() handles error codes from the resolver 
- * (h_errno). 
- */
-static char *apr_os_strerror(char* buf, apr_size_t bufsize, int err) 
-{
-#ifdef HAVE_HSTRERROR
-    return stuffbuffer(buf, bufsize, hstrerror(err));
-#else /* HAVE_HSTRERROR */
-    const char *msg;
-
-    switch(err) {
-    case HOST_NOT_FOUND:
-        msg = "Unknown host";
-        break;
-#if defined(NO_DATA)
-    case NO_DATA:
-#if defined(NO_ADDRESS) && (NO_DATA != NO_ADDRESS)
-    case NO_ADDRESS:
-#endif
-        msg = "No address for host";
-        break;
-#elif defined(NO_ADDRESS)
-    case NO_ADDRESS:
-        msg = "No address for host";
-        break;
-#endif /* NO_DATA */
-    default:
-        msg = "Unrecognized resolver error";
-    }
-    return stuffbuffer(buf, bufsize, msg);
-#endif /* HAVE_STRERROR */
-}
-#endif
-
-#if defined(HAVE_STRERROR_R) && defined(STRERROR_R_RC_INT) && !defined(BEOS)
-/* AIX and Tru64 style */
-static char *native_strerror(apr_status_t statcode, char *buf,
-                             apr_size_t bufsize)
-{
-    if (strerror_r(statcode, buf, bufsize) < 0) {
-        return stuffbuffer(buf, bufsize, 
-                           "APR does not understand this error code");
-    }
-    else {
-        return buf;
-    }
-}
-#elif defined(HAVE_STRERROR_R)
-/* glibc style */
-
-/* BeOS has the function available, but it doesn't provide
- * the prototype publically (doh!), so to avoid a build warning
- * we add a suitable prototype here.
- */
-#if defined(BEOS)
-const char *strerror_r(apr_status_t, char *, apr_size_t);
-#endif
-
-static char *native_strerror(apr_status_t statcode, char *buf,
-                             apr_size_t bufsize)
-{
-    const char *msg;
-
-    buf[0] = '\0';
-    msg = strerror_r(statcode, buf, bufsize);
-    if (buf[0] == '\0') { /* libc didn't use our buffer */
-        return stuffbuffer(buf, bufsize, msg);
-    }
-    else {
-        return buf;
-    }
-}
-#else
-/* plain old strerror(); 
- * thread-safe on some platforms (e.g., Solaris, OS/390)
- */
-static char *native_strerror(apr_status_t statcode, char *buf,
-                             apr_size_t bufsize)
-{
-#ifdef _WIN32_WCE
-    static char err[32];
-    sprintf(err, "Native Error #%d", statcode);
-    return stuffbuffer(buf, bufsize, err);
-#else
-    const char *err = strerror(statcode);
-    if (err) {
-        return stuffbuffer(buf, bufsize, err);
-    } else {
-        return stuffbuffer(buf, bufsize, 
-                           "APR does not understand this error code");
-    }
-#endif
-}
-#endif
-
-APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf,
-                                 apr_size_t bufsize)
-{
-    if (statcode < APR_OS_START_ERROR) {
-        return native_strerror(statcode, buf, bufsize);
-    }
-    else if (statcode < APR_OS_START_USERERR) {
-        return stuffbuffer(buf, bufsize, apr_error_string(statcode));
-    }
-    else if (statcode < APR_OS_START_EAIERR) {
-        return stuffbuffer(buf, bufsize, "APR does not understand this error code");
-    }
-    else if (statcode < APR_OS_START_SYSERR) {
-#if defined(HAVE_GAI_STRERROR)
-        statcode -= APR_OS_START_EAIERR;
-#if defined(NEGATIVE_EAI)
-        statcode = -statcode;
-#endif
-        return stuffbuffer(buf, bufsize, gai_strerror(statcode));
-#else
-        return stuffbuffer(buf, bufsize, "APR does not understand this error code");
-#endif
-    }
-    else {
-        return apr_os_strerror(buf, bufsize, statcode - APR_OS_START_SYSERR);
-    }
-}
-

Copied: vendor/apache/apr/1.5.2/misc/unix/errorcodes.c (from rev 9273, vendor/apache/apr/dist/misc/unix/errorcodes.c)
===================================================================
--- vendor/apache/apr/1.5.2/misc/unix/errorcodes.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/misc/unix/errorcodes.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,443 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_misc.h"
+#include "apr_strings.h"
+#include "apr_lib.h"
+#include "apr_dso.h"
+
+#if APR_HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+/*
+ * stuffbuffer - like apr_cpystrn() but returns the address of the
+ * dest buffer instead of the address of the terminating '\0'
+ */
+static char *stuffbuffer(char *buf, apr_size_t bufsize, const char *s)
+{
+    apr_cpystrn(buf,s,bufsize);
+    return buf;
+}
+
+static char *apr_error_string(apr_status_t statcode)
+{
+    switch (statcode) {
+    case APR_ENOSTAT:
+        return "Could not perform a stat on the file.";
+    case APR_ENOPOOL:
+        return "A new pool could not be created.";
+    case APR_EBADDATE:
+        return "An invalid date has been provided";
+    case APR_EINVALSOCK:
+        return "An invalid socket was returned";
+    case APR_ENOPROC:
+        return "No process was provided and one was required.";
+    case APR_ENOTIME:
+        return "No time was provided and one was required.";
+    case APR_ENODIR:
+        return "No directory was provided and one was required.";
+    case APR_ENOLOCK:
+        return "No lock was provided and one was required.";
+    case APR_ENOPOLL:
+        return "No poll structure was provided and one was required.";
+    case APR_ENOSOCKET:
+        return "No socket was provided and one was required.";
+    case APR_ENOTHREAD:
+        return "No thread was provided and one was required.";
+    case APR_ENOTHDKEY:
+        return "No thread key structure was provided and one was required.";
+    case APR_ENOSHMAVAIL:
+        return "No shared memory is currently available";
+    case APR_EDSOOPEN:
+#if APR_HAS_DSO && defined(HAVE_LIBDL)
+        return dlerror();
+#else
+        return "DSO load failed";
+#endif /* HAVE_LIBDL */
+    case APR_EBADIP:
+        return "The specified IP address is invalid.";
+    case APR_EBADMASK:
+        return "The specified network mask is invalid.";
+    case APR_ESYMNOTFOUND:
+        return "Could not find the requested symbol.";
+    case APR_ENOTENOUGHENTROPY:
+        return "Not enough entropy to continue.";
+    case APR_INCHILD:
+        return
+	    "Your code just forked, and you are currently executing in the "
+	    "child process";
+    case APR_INPARENT:
+        return
+	    "Your code just forked, and you are currently executing in the "
+	    "parent process";
+    case APR_DETACH:
+        return "The specified thread is detached";
+    case APR_NOTDETACH:
+        return "The specified thread is not detached";
+    case APR_CHILD_DONE:
+        return "The specified child process is done executing";
+    case APR_CHILD_NOTDONE:
+        return "The specified child process is not done executing";
+    case APR_TIMEUP:
+        return "The timeout specified has expired";
+    case APR_INCOMPLETE:
+        return "Partial results are valid but processing is incomplete";
+    case APR_BADCH:
+        return "Bad character specified on command line";
+    case APR_BADARG:
+        return "Missing parameter for the specified command line option";
+    case APR_EOF:
+        return "End of file found";
+    case APR_NOTFOUND:
+        return "Could not find specified socket in poll list.";
+    case APR_ANONYMOUS:
+        return "Shared memory is implemented anonymously";
+    case APR_FILEBASED:
+        return "Shared memory is implemented using files";
+    case APR_KEYBASED:
+        return "Shared memory is implemented using a key system";
+    case APR_EINIT:
+        return
+	    "There is no error, this value signifies an initialized "
+	    "error code";
+    case APR_ENOTIMPL:
+        return "This function has not been implemented on this platform";
+    case APR_EMISMATCH:
+        return "passwords do not match";
+    case APR_EABSOLUTE:
+        return "The given path is absolute";
+    case APR_ERELATIVE:
+        return "The given path is relative";
+    case APR_EINCOMPLETE:
+        return "The given path is incomplete";
+    case APR_EABOVEROOT:
+        return "The given path was above the root path";
+    case APR_EBADPATH:
+        return "The given path is misformatted or contained invalid characters";
+    case APR_EPATHWILD:
+        return "The given path contained wildcard characters";
+    case APR_EBUSY:
+        return "The given lock was busy.";
+    case APR_EPROC_UNKNOWN:
+        return "The process is not recognized.";
+    case APR_EGENERAL:
+        return "Internal error (specific information not available)";
+    default:
+        return "Error string not specified yet";
+    }
+}
+
+
+#ifdef OS2
+#include <ctype.h>
+
+int apr_canonical_error(apr_status_t err);
+
+static char *apr_os_strerror(char* buf, apr_size_t bufsize, int err)
+{
+  char result[200];
+  unsigned char message[HUGE_STRING_LEN];
+  ULONG len;
+  char *pos;
+  int c;
+  
+  if (err >= 10000 && err < 12000) {  /* socket error codes */
+      return stuffbuffer(buf, bufsize,
+                         strerror(apr_canonical_error(err+APR_OS_START_SYSERR)));
+  } 
+  else if (DosGetMessage(NULL, 0, message, HUGE_STRING_LEN, err,
+			 "OSO001.MSG", &len) == 0) {
+      len--;
+      message[len] = 0;
+      pos = result;
+  
+      if (len >= sizeof(result))
+        len = sizeof(result) - 1;
+
+      for (c=0; c<len; c++) {
+	  /* skip multiple whitespace */
+          while (apr_isspace(message[c]) && apr_isspace(message[c+1]))
+              c++;
+          *(pos++) = apr_isspace(message[c]) ? ' ' : message[c];
+      }
+  
+      *pos = 0;
+  } 
+  else {
+      sprintf(result, "OS/2 error %d", err);
+  }
+
+  /* Stuff the string into the caller supplied buffer, then return 
+   * a pointer to it.
+   */
+  return stuffbuffer(buf, bufsize, result);  
+}
+
+#elif defined(WIN32) || (defined(NETWARE) && defined(USE_WINSOCK))
+
+static const struct {
+    apr_status_t code;
+    const char *msg;
+} gaErrorList[] = {
+    {WSAEINTR,           "Interrupted system call"},
+    {WSAEBADF,           "Bad file number"},
+    {WSAEACCES,          "Permission denied"},
+    {WSAEFAULT,          "Bad address"},
+    {WSAEINVAL,          "Invalid argument"},
+    {WSAEMFILE,          "Too many open sockets"},
+    {WSAEWOULDBLOCK,     "Operation would block"},
+    {WSAEINPROGRESS,     "Operation now in progress"},
+    {WSAEALREADY,        "Operation already in progress"},
+    {WSAENOTSOCK,        "Socket operation on non-socket"},
+    {WSAEDESTADDRREQ,    "Destination address required"},
+    {WSAEMSGSIZE,        "Message too long"},
+    {WSAEPROTOTYPE,      "Protocol wrong type for socket"},
+    {WSAENOPROTOOPT,     "Bad protocol option"},
+    {WSAEPROTONOSUPPORT, "Protocol not supported"},
+    {WSAESOCKTNOSUPPORT, "Socket type not supported"},
+    {WSAEOPNOTSUPP,      "Operation not supported on socket"},
+    {WSAEPFNOSUPPORT,    "Protocol family not supported"},
+    {WSAEAFNOSUPPORT,    "Address family not supported"},
+    {WSAEADDRINUSE,      "Address already in use"},
+    {WSAEADDRNOTAVAIL,   "Can't assign requested address"},
+    {WSAENETDOWN,        "Network is down"},
+    {WSAENETUNREACH,     "Network is unreachable"},
+    {WSAENETRESET,       "Net connection reset"},
+    {WSAECONNABORTED,    "Software caused connection abort"},
+    {WSAECONNRESET,      "Connection reset by peer"},
+    {WSAENOBUFS,         "No buffer space available"},
+    {WSAEISCONN,         "Socket is already connected"},
+    {WSAENOTCONN,        "Socket is not connected"},
+    {WSAESHUTDOWN,       "Can't send after socket shutdown"},
+    {WSAETOOMANYREFS,    "Too many references, can't splice"},
+    {WSAETIMEDOUT,       "Connection timed out"},
+    {WSAECONNREFUSED,    "Connection refused"},
+    {WSAELOOP,           "Too many levels of symbolic links"},
+    {WSAENAMETOOLONG,    "File name too long"},
+    {WSAEHOSTDOWN,       "Host is down"},
+    {WSAEHOSTUNREACH,    "No route to host"},
+    {WSAENOTEMPTY,       "Directory not empty"},
+    {WSAEPROCLIM,        "Too many processes"},
+    {WSAEUSERS,          "Too many users"},
+    {WSAEDQUOT,          "Disc quota exceeded"},
+    {WSAESTALE,          "Stale NFS file handle"},
+    {WSAEREMOTE,         "Too many levels of remote in path"},
+    {WSASYSNOTREADY,     "Network system is unavailable"},
+    {WSAVERNOTSUPPORTED, "Winsock version out of range"},
+    {WSANOTINITIALISED,  "WSAStartup not yet called"},
+    {WSAEDISCON,         "Graceful shutdown in progress"},
+    {WSAHOST_NOT_FOUND,  "Host not found"},
+    {WSANO_DATA,         "No host data of that type was found"},
+    {0,                  NULL}
+};
+
+
+static char *apr_os_strerror(char *buf, apr_size_t bufsize, apr_status_t errcode)
+{
+    apr_size_t len=0, i;
+
+#ifndef NETWARE
+#ifndef _WIN32_WCE
+    len = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM 
+                      | FORMAT_MESSAGE_IGNORE_INSERTS,
+                        NULL,
+                        errcode,
+                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
+                        buf,
+                        (DWORD)bufsize,
+                        NULL);
+#else /* _WIN32_WCE speaks unicode */
+     LPTSTR msg = (LPTSTR) buf;
+     len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM 
+                       | FORMAT_MESSAGE_IGNORE_INSERTS,
+                         NULL,
+                         errcode,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
+                         msg,
+                         (DWORD) (bufsize/sizeof(TCHAR)),
+                         NULL);
+     /* in-place convert to US-ASCII, substituting '?' for non ASCII   */
+     for(i = 0; i <= len; i++) {
+        if (msg[i] < 0x80 && msg[i] >= 0) {
+            buf[i] = (char) msg[i];
+        } else {
+            buf[i] = '?';
+        }
+    }
+#endif
+#endif
+
+    if (!len) {
+        for (i = 0; gaErrorList[i].msg; ++i) {
+            if (gaErrorList[i].code == errcode) {
+                apr_cpystrn(buf, gaErrorList[i].msg, bufsize);
+                len = strlen(buf);
+                break;
+            }
+        }
+    }
+
+    if (len) {
+        /* FormatMessage put the message in the buffer, but it may
+         * have embedded a newline (\r\n), and possible more than one.
+         * Remove the newlines replacing them with a space. This is not
+         * as visually perfect as moving all the remaining message over,
+         * but more efficient.
+         */
+        i = len;
+        while (i) {
+            i--;
+            if ((buf[i] == '\r') || (buf[i] == '\n'))
+                buf[i] = ' ';
+        }
+    }
+    else {
+        /* Windows didn't provide us with a message.  Even stuff like                    * WSAECONNREFUSED won't get a message.
+         */
+        apr_snprintf(buf, bufsize, "Unrecognized Win32 error code %d", errcode);
+    }
+
+    return buf;
+}
+
+#else
+/* On Unix, apr_os_strerror() handles error codes from the resolver 
+ * (h_errno). 
+ */
+static char *apr_os_strerror(char* buf, apr_size_t bufsize, int err) 
+{
+#ifdef HAVE_HSTRERROR
+    return stuffbuffer(buf, bufsize, hstrerror(err));
+#else /* HAVE_HSTRERROR */
+    const char *msg;
+
+    switch(err) {
+    case HOST_NOT_FOUND:
+        msg = "Unknown host";
+        break;
+#if defined(NO_DATA)
+    case NO_DATA:
+#if defined(NO_ADDRESS) && (NO_DATA != NO_ADDRESS)
+    case NO_ADDRESS:
+#endif
+        msg = "No address for host";
+        break;
+#elif defined(NO_ADDRESS)
+    case NO_ADDRESS:
+        msg = "No address for host";
+        break;
+#endif /* NO_DATA */
+    default:
+        msg = "Unrecognized resolver error";
+    }
+    return stuffbuffer(buf, bufsize, msg);
+#endif /* HAVE_STRERROR */
+}
+#endif
+
+#if defined(HAVE_STRERROR_R) && defined(STRERROR_R_RC_INT) && !defined(BEOS)
+/* AIX and Tru64 style */
+static char *native_strerror(apr_status_t statcode, char *buf,
+                             apr_size_t bufsize)
+{
+    if (strerror_r(statcode, buf, bufsize) < 0) {
+        return stuffbuffer(buf, bufsize, 
+                           "APR does not understand this error code");
+    }
+    else {
+        return buf;
+    }
+}
+#elif defined(HAVE_STRERROR_R)
+/* glibc style */
+
+/* BeOS has the function available, but it doesn't provide
+ * the prototype publically (doh!), so to avoid a build warning
+ * we add a suitable prototype here.
+ */
+#if defined(BEOS)
+const char *strerror_r(apr_status_t, char *, apr_size_t);
+#endif
+
+static char *native_strerror(apr_status_t statcode, char *buf,
+                             apr_size_t bufsize)
+{
+    const char *msg;
+
+    buf[0] = '\0';
+    msg = strerror_r(statcode, buf, bufsize);
+    if (buf[0] == '\0') { /* libc didn't use our buffer */
+        return stuffbuffer(buf, bufsize, msg);
+    }
+    else {
+        return buf;
+    }
+}
+#else
+/* plain old strerror(); 
+ * thread-safe on some platforms (e.g., Solaris, OS/390)
+ */
+static char *native_strerror(apr_status_t statcode, char *buf,
+                             apr_size_t bufsize)
+{
+#ifdef _WIN32_WCE
+    static char err[32];
+    sprintf(err, "Native Error #%d", statcode);
+    return stuffbuffer(buf, bufsize, err);
+#else
+    const char *err = strerror(statcode);
+    if (err) {
+        return stuffbuffer(buf, bufsize, err);
+    } else {
+        return stuffbuffer(buf, bufsize, 
+                           "APR does not understand this error code");
+    }
+#endif
+}
+#endif
+
+APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf,
+                                 apr_size_t bufsize)
+{
+    if (statcode < APR_OS_START_ERROR) {
+        return native_strerror(statcode, buf, bufsize);
+    }
+    else if (statcode < APR_OS_START_USERERR) {
+        return stuffbuffer(buf, bufsize, apr_error_string(statcode));
+    }
+    else if (statcode < APR_OS_START_EAIERR) {
+        return stuffbuffer(buf, bufsize, "APR does not understand this error code");
+    }
+    else if (statcode < APR_OS_START_SYSERR) {
+#if defined(HAVE_GAI_STRERROR)
+        statcode -= APR_OS_START_EAIERR;
+#if defined(NEGATIVE_EAI)
+        statcode = -statcode;
+#endif
+        return stuffbuffer(buf, bufsize, gai_strerror(statcode));
+#else
+        return stuffbuffer(buf, bufsize, "APR does not understand this error code");
+#endif
+    }
+    else {
+        return apr_os_strerror(buf, bufsize, statcode - APR_OS_START_SYSERR);
+    }
+}
+

Deleted: vendor/apache/apr/1.5.2/misc/win32/misc.c
===================================================================
--- vendor/apache/apr/dist/misc/win32/misc.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/misc/win32/misc.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,263 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_private.h"
-#include "apr_arch_misc.h"
-#include "apr_arch_file_io.h"
-#include "assert.h"
-#include "apr_lib.h"
-#include "tchar.h"
-
-APR_DECLARE_DATA apr_oslevel_e apr_os_level = APR_WIN_UNK;
-
-apr_status_t apr_get_oslevel(apr_oslevel_e *level)
-{
-    if (apr_os_level == APR_WIN_UNK) 
-    {
-        static OSVERSIONINFO oslev;
-        oslev.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-        GetVersionEx(&oslev);
-
-        if (oslev.dwPlatformId == VER_PLATFORM_WIN32_NT) 
-        {
-            static unsigned int servpack = 0;
-            TCHAR *pservpack;
-            if ((pservpack = oslev.szCSDVersion)) {
-                while (*pservpack && !apr_isdigit(*pservpack)) {
-                    pservpack++;
-                }
-                if (*pservpack)
-#ifdef _UNICODE
-                    servpack = _wtoi(pservpack);
-#else
-                    servpack = atoi(pservpack);
-#endif
-            }
-
-            if (oslev.dwMajorVersion < 3) {
-                apr_os_level = APR_WIN_UNSUP;
-            }
-            else if (oslev.dwMajorVersion == 3) {
-                if (oslev.dwMajorVersion < 50) {
-                    apr_os_level = APR_WIN_UNSUP;
-                }
-                else if (oslev.dwMajorVersion == 50) {
-                    apr_os_level = APR_WIN_NT_3_5;
-                }
-                else {
-                    apr_os_level = APR_WIN_NT_3_51;
-                }
-            }
-            else if (oslev.dwMajorVersion == 4) {
-                if (servpack < 2)
-                    apr_os_level = APR_WIN_NT_4;
-                else if (servpack <= 2)
-                    apr_os_level = APR_WIN_NT_4_SP2;
-                else if (servpack <= 3)
-                    apr_os_level = APR_WIN_NT_4_SP3;
-                else if (servpack <= 4)
-                    apr_os_level = APR_WIN_NT_4_SP4;
-                else if (servpack <= 5)
-                    apr_os_level = APR_WIN_NT_4_SP5;
-                else 
-                    apr_os_level = APR_WIN_NT_4_SP6;
-            }
-            else if (oslev.dwMajorVersion == 5) {
-                if (oslev.dwMinorVersion == 0) {
-                    if (servpack == 0)
-                        apr_os_level = APR_WIN_2000;
-                    else if (servpack == 1)
-                        apr_os_level = APR_WIN_2000_SP1;
-                    else
-                        apr_os_level = APR_WIN_2000_SP2;
-                }
-                else if (oslev.dwMinorVersion == 2) {
-                    apr_os_level = APR_WIN_2003;
-                }
-                else {
-                    if (servpack < 1)
-                        apr_os_level = APR_WIN_XP;
-                    else if (servpack == 1)
-                        apr_os_level = APR_WIN_XP_SP1;
-                    else
-                        apr_os_level = APR_WIN_XP_SP2;
-                }
-            }
-            else if (oslev.dwMajorVersion == 6) {
-                apr_os_level = APR_WIN_VISTA;
-            }
-            else {
-                apr_os_level = APR_WIN_XP;
-            }
-        }
-#ifndef WINNT
-        else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
-            TCHAR *prevision;
-            if (prevision = oslev.szCSDVersion) {
-                while (*prevision && !apr_isupper(*prevision)) {
-                     prevision++;
-                }
-            }
-            else prevision = _T("");
-
-            if (oslev.dwMinorVersion < 10) {
-                if (*prevision < _T('C'))
-                    apr_os_level = APR_WIN_95;
-                else
-                    apr_os_level = APR_WIN_95_OSR2;
-            }
-            else if (oslev.dwMinorVersion < 90) {
-                if (*prevision < _T('A'))
-                    apr_os_level = APR_WIN_98;
-                else
-                    apr_os_level = APR_WIN_98_SE;
-            }
-            else {
-                apr_os_level = APR_WIN_ME;
-            }
-        }
-#endif
-#ifdef _WIN32_WCE
-        else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_CE) 
-        {
-            if (oslev.dwMajorVersion < 3) {
-                apr_os_level = APR_WIN_UNSUP;
-            }
-            else {
-                apr_os_level = APR_WIN_CE_3;
-            }
-        }
-#endif
-        else {
-            apr_os_level = APR_WIN_UNSUP;
-        }
-    }
-
-    *level = apr_os_level;
-
-    if (apr_os_level < APR_WIN_UNSUP) {
-        return APR_EGENERAL;
-    }
-
-    return APR_SUCCESS;
-}
-
-
-/* This is the helper code to resolve late bound entry points 
- * missing from one or more releases of the Win32 API
- */
-
-static const char* const lateDllName[DLL_defined] = {
-    "kernel32", "advapi32", "mswsock",  "ws2_32", "shell32", "ntdll.dll"  };
-static HMODULE lateDllHandle[DLL_defined] = {
-     NULL,       NULL,       NULL,       NULL,     NULL,       NULL       };
-
-FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char* fnName, int ordinal)
-{
-    if (!lateDllHandle[fnLib]) { 
-        lateDllHandle[fnLib] = LoadLibraryA(lateDllName[fnLib]);
-        if (!lateDllHandle[fnLib])
-            return NULL;
-    }
-#if defined(_WIN32_WCE)
-    if (ordinal)
-        return GetProcAddressA(lateDllHandle[fnLib], (const char *)
-                                                     (apr_ssize_t)ordinal);
-    else
-        return GetProcAddressA(lateDllHandle[fnLib], fnName);
-#else
-    if (ordinal)
-        return GetProcAddress(lateDllHandle[fnLib], (const char *)
-                                                    (apr_ssize_t)ordinal);
-    else
-        return GetProcAddress(lateDllHandle[fnLib], fnName);
-#endif
-}
-
-/* Declared in include/arch/win32/apr_dbg_win32_handles.h
- */
-APR_DECLARE_NONSTD(HANDLE) apr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, 
-                                       int nh, /* HANDLE hv, char *dsc */...)
-{
-    static DWORD tlsid = 0xFFFFFFFF;
-    static HANDLE fh = NULL;
-    static long ctr = 0;
-    static CRITICAL_SECTION cs;
-    long seq;
-    DWORD wrote;
-    char *sbuf;
-    
-    seq = (InterlockedIncrement)(&ctr);
-
-    if (tlsid == 0xFFFFFFFF) {
-        tlsid = (TlsAlloc)();
-    }
-
-    sbuf = (TlsGetValue)(tlsid);
-    if (!fh || !sbuf) {
-        sbuf = (malloc)(1024);
-        (TlsSetValue)(tlsid, sbuf);
-        sbuf[1023] = '\0';
-        if (!fh) {
-            (GetModuleFileNameA)(NULL, sbuf, 250);
-            sprintf(strchr(sbuf, '\0'), ".%u",
-                    (unsigned int)(GetCurrentProcessId)());
-            fh = (CreateFileA)(sbuf, GENERIC_WRITE, 0, NULL, 
-                            CREATE_ALWAYS, 0, NULL);
-            (InitializeCriticalSection)(&cs);
-        }
-    }
-
-    if (!nh) {
-        (sprintf)(sbuf, "%p %08x %08x %s() %s:%d\n",
-                  ha, (unsigned int)seq, (unsigned int)GetCurrentThreadId(),
-                  fn, fl, ln);
-        (EnterCriticalSection)(&cs);
-        (WriteFile)(fh, sbuf, (DWORD)strlen(sbuf), &wrote, NULL);
-        (LeaveCriticalSection)(&cs);
-    } 
-    else {
-        va_list a;
-        va_start(a,nh);
-        (EnterCriticalSection)(&cs);
-        do {
-            HANDLE *hv = va_arg(a, HANDLE*);
-            char *dsc = va_arg(a, char*);
-            if (strcmp(dsc, "Signaled") == 0) {
-                if ((apr_ssize_t)ha >= STATUS_WAIT_0 
-                       && (apr_ssize_t)ha < STATUS_ABANDONED_WAIT_0) {
-                    hv += (apr_ssize_t)ha;
-                }
-                else if ((apr_ssize_t)ha >= STATUS_ABANDONED_WAIT_0
-                            && (apr_ssize_t)ha < STATUS_USER_APC) {
-                    hv += (apr_ssize_t)ha - STATUS_ABANDONED_WAIT_0;
-                    dsc = "Abandoned";
-                }
-                else if ((apr_ssize_t)ha == WAIT_TIMEOUT) {
-                    dsc = "Timed Out";
-                }
-            }
-            (sprintf)(sbuf, "%p %08x %08x %s(%s) %s:%d\n",
-                      *hv, (unsigned int)seq,
-                      (unsigned int)GetCurrentThreadId(), 
-                      fn, dsc, fl, ln);
-            (WriteFile)(fh, sbuf, (DWORD)strlen(sbuf), &wrote, NULL);
-        } while (--nh);
-        (LeaveCriticalSection)(&cs);
-        va_end(a);
-    }
-    return ha;
-}

Copied: vendor/apache/apr/1.5.2/misc/win32/misc.c (from rev 9273, vendor/apache/apr/dist/misc/win32/misc.c)
===================================================================
--- vendor/apache/apr/1.5.2/misc/win32/misc.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/misc/win32/misc.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,266 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_private.h"
+#include "apr_arch_misc.h"
+#include "apr_arch_file_io.h"
+#include "assert.h"
+#include "apr_lib.h"
+#include "tchar.h"
+
+APR_DECLARE_DATA apr_oslevel_e apr_os_level = APR_WIN_UNK;
+
+apr_status_t apr_get_oslevel(apr_oslevel_e *level)
+{
+    if (apr_os_level == APR_WIN_UNK) 
+    {
+        static OSVERSIONINFO oslev;
+        oslev.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+        GetVersionEx(&oslev);
+
+        if (oslev.dwPlatformId == VER_PLATFORM_WIN32_NT) 
+        {
+            static unsigned int servpack = 0;
+            TCHAR *pservpack;
+            if ((pservpack = oslev.szCSDVersion)) {
+                while (*pservpack && !apr_isdigit(*pservpack)) {
+                    pservpack++;
+                }
+                if (*pservpack)
+#ifdef _UNICODE
+                    servpack = _wtoi(pservpack);
+#else
+                    servpack = atoi(pservpack);
+#endif
+            }
+
+            if (oslev.dwMajorVersion < 3) {
+                apr_os_level = APR_WIN_UNSUP;
+            }
+            else if (oslev.dwMajorVersion == 3) {
+                if (oslev.dwMajorVersion < 50) {
+                    apr_os_level = APR_WIN_UNSUP;
+                }
+                else if (oslev.dwMajorVersion == 50) {
+                    apr_os_level = APR_WIN_NT_3_5;
+                }
+                else {
+                    apr_os_level = APR_WIN_NT_3_51;
+                }
+            }
+            else if (oslev.dwMajorVersion == 4) {
+                if (servpack < 2)
+                    apr_os_level = APR_WIN_NT_4;
+                else if (servpack <= 2)
+                    apr_os_level = APR_WIN_NT_4_SP2;
+                else if (servpack <= 3)
+                    apr_os_level = APR_WIN_NT_4_SP3;
+                else if (servpack <= 4)
+                    apr_os_level = APR_WIN_NT_4_SP4;
+                else if (servpack <= 5)
+                    apr_os_level = APR_WIN_NT_4_SP5;
+                else 
+                    apr_os_level = APR_WIN_NT_4_SP6;
+            }
+            else if (oslev.dwMajorVersion == 5) {
+                if (oslev.dwMinorVersion == 0) {
+                    if (servpack == 0)
+                        apr_os_level = APR_WIN_2000;
+                    else if (servpack == 1)
+                        apr_os_level = APR_WIN_2000_SP1;
+                    else
+                        apr_os_level = APR_WIN_2000_SP2;
+                }
+                else if (oslev.dwMinorVersion == 2) {
+                    apr_os_level = APR_WIN_2003;
+                }
+                else {
+                    if (servpack < 1)
+                        apr_os_level = APR_WIN_XP;
+                    else if (servpack == 1)
+                        apr_os_level = APR_WIN_XP_SP1;
+                    else
+                        apr_os_level = APR_WIN_XP_SP2;
+                }
+            }
+            else if (oslev.dwMajorVersion == 6) {
+                if (oslev.dwMinorVersion == 0)
+                    apr_os_level = APR_WIN_VISTA;
+                else
+                    apr_os_level = APR_WIN_7;
+            }
+            else {
+                apr_os_level = APR_WIN_XP;
+            }
+        }
+#ifndef WINNT
+        else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
+            TCHAR *prevision;
+            if (prevision = oslev.szCSDVersion) {
+                while (*prevision && !apr_isupper(*prevision)) {
+                     prevision++;
+                }
+            }
+            else prevision = _T("");
+
+            if (oslev.dwMinorVersion < 10) {
+                if (*prevision < _T('C'))
+                    apr_os_level = APR_WIN_95;
+                else
+                    apr_os_level = APR_WIN_95_OSR2;
+            }
+            else if (oslev.dwMinorVersion < 90) {
+                if (*prevision < _T('A'))
+                    apr_os_level = APR_WIN_98;
+                else
+                    apr_os_level = APR_WIN_98_SE;
+            }
+            else {
+                apr_os_level = APR_WIN_ME;
+            }
+        }
+#endif
+#ifdef _WIN32_WCE
+        else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_CE) 
+        {
+            if (oslev.dwMajorVersion < 3) {
+                apr_os_level = APR_WIN_UNSUP;
+            }
+            else {
+                apr_os_level = APR_WIN_CE_3;
+            }
+        }
+#endif
+        else {
+            apr_os_level = APR_WIN_UNSUP;
+        }
+    }
+
+    *level = apr_os_level;
+
+    if (apr_os_level < APR_WIN_UNSUP) {
+        return APR_EGENERAL;
+    }
+
+    return APR_SUCCESS;
+}
+
+
+/* This is the helper code to resolve late bound entry points 
+ * missing from one or more releases of the Win32 API
+ */
+
+static const char* const lateDllName[DLL_defined] = {
+    "kernel32", "advapi32", "mswsock",  "ws2_32", "shell32", "ntdll.dll"  };
+static HMODULE lateDllHandle[DLL_defined] = {
+     NULL,       NULL,       NULL,       NULL,     NULL,       NULL       };
+
+FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char* fnName, int ordinal)
+{
+    if (!lateDllHandle[fnLib]) { 
+        lateDllHandle[fnLib] = LoadLibraryA(lateDllName[fnLib]);
+        if (!lateDllHandle[fnLib])
+            return NULL;
+    }
+#if defined(_WIN32_WCE)
+    if (ordinal)
+        return GetProcAddressA(lateDllHandle[fnLib], (const char *)
+                                                     (apr_ssize_t)ordinal);
+    else
+        return GetProcAddressA(lateDllHandle[fnLib], fnName);
+#else
+    if (ordinal)
+        return GetProcAddress(lateDllHandle[fnLib], (const char *)
+                                                    (apr_ssize_t)ordinal);
+    else
+        return GetProcAddress(lateDllHandle[fnLib], fnName);
+#endif
+}
+
+/* Declared in include/arch/win32/apr_dbg_win32_handles.h
+ */
+APR_DECLARE_NONSTD(HANDLE) apr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, 
+                                       int nh, /* HANDLE hv, char *dsc */...)
+{
+    static DWORD tlsid = 0xFFFFFFFF;
+    static HANDLE fh = NULL;
+    static long ctr = 0;
+    static CRITICAL_SECTION cs;
+    long seq;
+    DWORD wrote;
+    char *sbuf;
+    
+    seq = (InterlockedIncrement)(&ctr);
+
+    if (tlsid == 0xFFFFFFFF) {
+        tlsid = (TlsAlloc)();
+    }
+
+    sbuf = (TlsGetValue)(tlsid);
+    if (!fh || !sbuf) {
+        sbuf = (malloc)(1024);
+        (TlsSetValue)(tlsid, sbuf);
+        sbuf[1023] = '\0';
+        if (!fh) {
+            (GetModuleFileNameA)(NULL, sbuf, 250);
+            sprintf(strchr(sbuf, '\0'), ".%u",
+                    (unsigned int)(GetCurrentProcessId)());
+            fh = (CreateFileA)(sbuf, GENERIC_WRITE, 0, NULL, 
+                            CREATE_ALWAYS, 0, NULL);
+            (InitializeCriticalSection)(&cs);
+        }
+    }
+
+    if (!nh) {
+        (sprintf)(sbuf, "%p %08x %08x %s() %s:%d\n",
+                  ha, (unsigned int)seq, (unsigned int)GetCurrentThreadId(),
+                  fn, fl, ln);
+        (EnterCriticalSection)(&cs);
+        (WriteFile)(fh, sbuf, (DWORD)strlen(sbuf), &wrote, NULL);
+        (LeaveCriticalSection)(&cs);
+    } 
+    else {
+        va_list a;
+        va_start(a,nh);
+        (EnterCriticalSection)(&cs);
+        do {
+            HANDLE *hv = va_arg(a, HANDLE*);
+            char *dsc = va_arg(a, char*);
+            if (strcmp(dsc, "Signaled") == 0) {
+                if ((apr_ssize_t)ha >= STATUS_WAIT_0 
+                       && (apr_ssize_t)ha < STATUS_ABANDONED_WAIT_0) {
+                    hv += (apr_ssize_t)ha;
+                }
+                else if ((apr_ssize_t)ha >= STATUS_ABANDONED_WAIT_0
+                            && (apr_ssize_t)ha < STATUS_USER_APC) {
+                    hv += (apr_ssize_t)ha - STATUS_ABANDONED_WAIT_0;
+                    dsc = "Abandoned";
+                }
+                else if ((apr_ssize_t)ha == WAIT_TIMEOUT) {
+                    dsc = "Timed Out";
+                }
+            }
+            (sprintf)(sbuf, "%p %08x %08x %s(%s) %s:%d\n",
+                      *hv, (unsigned int)seq,
+                      (unsigned int)GetCurrentThreadId(), 
+                      fn, dsc, fl, ln);
+            (WriteFile)(fh, sbuf, (DWORD)strlen(sbuf), &wrote, NULL);
+        } while (--nh);
+        (LeaveCriticalSection)(&cs);
+        va_end(a);
+    }
+    return ha;
+}

Deleted: vendor/apache/apr/1.5.2/network_io/os2/sockopt.c
===================================================================
--- vendor/apache/apr/dist/network_io/os2/sockopt.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/os2/sockopt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,139 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_network_io.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include <errno.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <netinet/tcp.h>
-#include <netinet/in.h>
-#include <unistd.h>
-#include <netdb.h>
-#include <sys/so_ioctl.h>
-
-
-APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, 
-                                                 apr_interval_time_t t)
-{
-    sock->timeout = t;
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, 
-                                             apr_int32_t opt, apr_int32_t on)
-{
-    int one;
-    struct linger li;
-
-    if (on)
-        one = 1;
-    else
-        one = 0;
-
-    if (opt & APR_SO_KEEPALIVE) {
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) {
-            return APR_OS2_STATUS(sock_errno());
-        }
-    }
-    if (opt & APR_SO_DEBUG) {
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) {
-            return APR_OS2_STATUS(sock_errno());
-        }
-    }
-    if (opt & APR_SO_REUSEADDR) {
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) {
-            return APR_OS2_STATUS(sock_errno());
-        }
-    }
-    if (opt & APR_SO_SNDBUF) {
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF, (void *)&on, sizeof(int)) == -1) {
-            return APR_OS2_STATUS(sock_errno());
-        }
-    }
-    if (opt & APR_SO_NONBLOCK) {
-        if (ioctl(sock->socketdes, FIONBIO, (caddr_t)&one, sizeof(one)) == -1) {
-            return APR_OS2_STATUS(sock_errno());
-        } else {
-            sock->nonblock = one;
-        }
-    }
-    if (opt & APR_SO_LINGER) {
-        li.l_onoff = on;
-        li.l_linger = APR_MAX_SECS_TO_LINGER;
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) {
-            return APR_OS2_STATUS(sock_errno());
-        }
-    }
-    if (opt & APR_TCP_NODELAY) {
-        if (setsockopt(sock->socketdes, IPPROTO_TCP, TCP_NODELAY, (void *)&on, sizeof(int)) == -1) {
-            return APR_OS2_STATUS(sock_errno());
-        }
-    }
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, 
-                                                 apr_interval_time_t *t)
-{
-    *t = sock->timeout;
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, 
-                                             apr_int32_t opt, apr_int32_t *on)
-{
-    switch(opt) {
-    default:
-        return APR_EINVAL;
-    }
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark)
-{
-    int oobmark;
-
-    if (ioctl(sock->socketdes, SIOCATMARK, (void*)&oobmark, sizeof(oobmark)) < 0) {
-        return APR_OS2_STATUS(sock_errno());
-    }
-
-    *atmark = (oobmark != 0);
-
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_gethostname(char *buf, apr_int32_t len, 
-                                          apr_pool_t *cont)
-{
-    if (gethostname(buf, len) == -1) {
-        buf[0] = '\0';
-        return APR_OS2_STATUS(sock_errno());
-    }
-    else if (!memchr(buf, '\0', len)) { /* buffer too small */
-        buf[0] = '\0';
-        return APR_ENAMETOOLONG;
-    }
-    return APR_SUCCESS;
-}

Copied: vendor/apache/apr/1.5.2/network_io/os2/sockopt.c (from rev 9273, vendor/apache/apr/dist/network_io/os2/sockopt.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/os2/sockopt.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/os2/sockopt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,144 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_networkio.h"
+#include "apr_network_io.h"
+#include "apr_general.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include <errno.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netinet/tcp.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <netdb.h>
+#include <sys/so_ioctl.h>
+
+
+APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, 
+                                                 apr_interval_time_t t)
+{
+    sock->timeout = t;
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, 
+                                             apr_int32_t opt, apr_int32_t on)
+{
+    int one;
+    struct linger li;
+
+    if (on)
+        one = 1;
+    else
+        one = 0;
+
+    if (opt & APR_SO_KEEPALIVE) {
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) {
+            return APR_OS2_STATUS(sock_errno());
+        }
+    }
+    if (opt & APR_SO_DEBUG) {
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) {
+            return APR_OS2_STATUS(sock_errno());
+        }
+    }
+    if (opt & APR_SO_BROADCAST) {
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_BROADCAST, (void *)&one, sizeof(int)) == -1) {
+            return APR_FROM_OS_ERROR(sock_errno());
+        }
+    }
+    if (opt & APR_SO_REUSEADDR) {
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) {
+            return APR_OS2_STATUS(sock_errno());
+        }
+    }
+    if (opt & APR_SO_SNDBUF) {
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF, (void *)&on, sizeof(int)) == -1) {
+            return APR_OS2_STATUS(sock_errno());
+        }
+    }
+    if (opt & APR_SO_NONBLOCK) {
+        if (ioctl(sock->socketdes, FIONBIO, (caddr_t)&one, sizeof(one)) == -1) {
+            return APR_OS2_STATUS(sock_errno());
+        } else {
+            sock->nonblock = one;
+        }
+    }
+    if (opt & APR_SO_LINGER) {
+        li.l_onoff = on;
+        li.l_linger = APR_MAX_SECS_TO_LINGER;
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) {
+            return APR_OS2_STATUS(sock_errno());
+        }
+    }
+    if (opt & APR_TCP_NODELAY) {
+        if (setsockopt(sock->socketdes, IPPROTO_TCP, TCP_NODELAY, (void *)&on, sizeof(int)) == -1) {
+            return APR_OS2_STATUS(sock_errno());
+        }
+    }
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, 
+                                                 apr_interval_time_t *t)
+{
+    *t = sock->timeout;
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, 
+                                             apr_int32_t opt, apr_int32_t *on)
+{
+    switch(opt) {
+    default:
+        return APR_EINVAL;
+    }
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark)
+{
+    int oobmark;
+
+    if (ioctl(sock->socketdes, SIOCATMARK, (void*)&oobmark, sizeof(oobmark)) < 0) {
+        return APR_OS2_STATUS(sock_errno());
+    }
+
+    *atmark = (oobmark != 0);
+
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_gethostname(char *buf, apr_int32_t len, 
+                                          apr_pool_t *cont)
+{
+    if (gethostname(buf, len) == -1) {
+        buf[0] = '\0';
+        return APR_OS2_STATUS(sock_errno());
+    }
+    else if (!memchr(buf, '\0', len)) { /* buffer too small */
+        buf[0] = '\0';
+        return APR_ENAMETOOLONG;
+    }
+    return APR_SUCCESS;
+}

Deleted: vendor/apache/apr/1.5.2/network_io/unix/sendrecv.c
===================================================================
--- vendor/apache/apr/dist/network_io/unix/sendrecv.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/unix/sendrecv.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1110 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_support.h"
-
-#if APR_HAS_SENDFILE
-/* This file is needed to allow us access to the apr_file_t internals. */
-#include "apr_arch_file_io.h"
-#endif /* APR_HAS_SENDFILE */
-
-/* osreldate.h is only needed on FreeBSD for sendfile detection */
-#if defined(__FreeBSD__)
-#include <osreldate.h>
-#endif
-
-apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf, 
-                             apr_size_t *len)
-{
-    apr_ssize_t rv;
-    
-    if (sock->options & APR_INCOMPLETE_WRITE) {
-        sock->options &= ~APR_INCOMPLETE_WRITE;
-        goto do_select;
-    }
-
-    do {
-        rv = write(sock->socketdes, buf, (*len));
-    } while (rv == -1 && errno == EINTR);
-
-    while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) 
-                    && (sock->timeout > 0)) {
-        apr_status_t arv;
-do_select:
-        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        }
-        else {
-            do {
-                rv = write(sock->socketdes, buf, (*len));
-            } while (rv == -1 && errno == EINTR);
-        }
-    }
-    if (rv == -1) {
-        *len = 0;
-        return errno;
-    }
-    if ((sock->timeout > 0) && (rv < *len)) {
-        sock->options |= APR_INCOMPLETE_WRITE;
-    }
-    (*len) = rv;
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len)
-{
-    apr_ssize_t rv;
-    apr_status_t arv;
-
-    if (sock->options & APR_INCOMPLETE_READ) {
-        sock->options &= ~APR_INCOMPLETE_READ;
-        goto do_select;
-    }
-
-    do {
-        rv = read(sock->socketdes, buf, (*len));
-    } while (rv == -1 && errno == EINTR);
-
-    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK)
-                      && (sock->timeout > 0)) {
-do_select:
-        arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        }
-        else {
-            do {
-                rv = read(sock->socketdes, buf, (*len));
-            } while (rv == -1 && errno == EINTR);
-        }
-    }
-    if (rv == -1) {
-        (*len) = 0;
-        return errno;
-    }
-    if ((sock->timeout > 0) && (rv < *len)) {
-        sock->options |= APR_INCOMPLETE_READ;
-    }
-    (*len) = rv;
-    if (rv == 0) {
-        return APR_EOF;
-    }
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where,
-                               apr_int32_t flags, const char *buf,
-                               apr_size_t *len)
-{
-    apr_ssize_t rv;
-
-    do {
-        rv = sendto(sock->socketdes, buf, (*len), flags, 
-                    (const struct sockaddr*)&where->sa, 
-                    where->salen);
-    } while (rv == -1 && errno == EINTR);
-
-    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK)
-                      && (sock->timeout > 0)) {
-        apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        } else {
-            do {
-                rv = sendto(sock->socketdes, buf, (*len), flags,
-                            (const struct sockaddr*)&where->sa,
-                            where->salen);
-            } while (rv == -1 && errno == EINTR);
-        }
-    }
-    if (rv == -1) {
-        *len = 0;
-        return errno;
-    }
-    *len = rv;
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock,
-                                 apr_int32_t flags, char *buf, 
-                                 apr_size_t *len)
-{
-    apr_ssize_t rv;
-    
-    from->salen = sizeof(from->sa);
-
-    do {
-        rv = recvfrom(sock->socketdes, buf, (*len), flags, 
-                      (struct sockaddr*)&from->sa, &from->salen);
-    } while (rv == -1 && errno == EINTR);
-
-    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK)
-                      && (sock->timeout > 0)) {
-        apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        } else {
-            do {
-                rv = recvfrom(sock->socketdes, buf, (*len), flags,
-                              (struct sockaddr*)&from->sa, &from->salen);
-            } while (rv == -1 && errno == EINTR);
-        }
-    }
-    if (rv == -1) {
-        (*len) = 0;
-        return errno;
-    }
-
-    /*
-     * Check if we have a valid address. recvfrom() with MSG_PEEK may return
-     * success without filling in the address.
-     */
-    if (from->salen > APR_OFFSETOF(struct sockaddr_in, sin_port)) {
-        apr_sockaddr_vars_set(from, from->sa.sin.sin_family,
-                              ntohs(from->sa.sin.sin_port));
-    }
-
-    (*len) = rv;
-    if (rv == 0 && sock->type == SOCK_STREAM) {
-        return APR_EOF;
-    }
-
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_sendv(apr_socket_t * sock, const struct iovec *vec,
-                              apr_int32_t nvec, apr_size_t *len)
-{
-#ifdef HAVE_WRITEV
-    apr_ssize_t rv;
-    apr_size_t requested_len = 0;
-    apr_int32_t i;
-
-    for (i = 0; i < nvec; i++) {
-        requested_len += vec[i].iov_len;
-    }
-
-    if (sock->options & APR_INCOMPLETE_WRITE) {
-        sock->options &= ~APR_INCOMPLETE_WRITE;
-        goto do_select;
-    }
-
-    do {
-        rv = writev(sock->socketdes, vec, nvec);
-    } while (rv == -1 && errno == EINTR);
-
-    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
-                      && (sock->timeout > 0)) {
-        apr_status_t arv;
-do_select:
-        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        }
-        else {
-            do {
-                rv = writev(sock->socketdes, vec, nvec);
-            } while (rv == -1 && errno == EINTR);
-        }
-    }
-    if (rv == -1) {
-        *len = 0;
-        return errno;
-    }
-    if ((sock->timeout > 0) && (rv < requested_len)) {
-        sock->options |= APR_INCOMPLETE_WRITE;
-    }
-    (*len) = rv;
-    return APR_SUCCESS;
-#else
-    *len = vec[0].iov_len;
-    return apr_socket_send(sock, vec[0].iov_base, len);
-#endif
-}
-
-#if APR_HAS_SENDFILE
-
-/* TODO: Verify that all platforms handle the fd the same way,
- * i.e. that they don't move the file pointer.
- */
-/* TODO: what should flags be?  int_32? */
-
-/* Define a structure to pass in when we have a NULL header value */
-static apr_hdtr_t no_hdtr;
-
-#if (defined(__linux__) || defined(__GNU__)) && defined(HAVE_WRITEV)
-
-apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
-                                 apr_hdtr_t *hdtr, apr_off_t *offset,
-                                 apr_size_t *len, apr_int32_t flags)
-{
-    int rv, nbytes = 0, total_hdrbytes, i;
-    apr_status_t arv;
-
-#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64)
-    apr_off_t off = *offset;
-#define sendfile sendfile64
-
-#elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4
-    /* 64-bit apr_off_t but no sendfile64(): fail if trying to send
-     * past the 2Gb limit. */
-    off_t off;
-    
-    if ((apr_int64_t)*offset + *len > INT_MAX) {
-        return EINVAL;
-    }
-    
-    off = *offset;
-
-#else
-    off_t off = *offset;
-
-    /* Multiple reports have shown sendfile failing with EINVAL if
-     * passed a >=2Gb count value on some 64-bit kernels.  It won't
-     * noticably hurt performance to limit each call to <2Gb at a
-     * time, so avoid that issue here: */
-    if (sizeof(off_t) == 8 && *len > INT_MAX) {
-        *len = INT_MAX;
-    }
-#endif
-
-    if (!hdtr) {
-        hdtr = &no_hdtr;
-    }
-
-    if (hdtr->numheaders > 0) {
-        apr_size_t hdrbytes;
-
-        /* cork before writing headers */
-        rv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 1);
-        if (rv != APR_SUCCESS) {
-            return rv;
-        }
-
-        /* Now write the headers */
-        arv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders,
-                               &hdrbytes);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return errno;
-        }
-        nbytes += hdrbytes;
-
-        /* If this was a partial write and we aren't doing timeouts, 
-         * return now with the partial byte count; this is a non-blocking 
-         * socket.
-         */
-        total_hdrbytes = 0;
-        for (i = 0; i < hdtr->numheaders; i++) {
-            total_hdrbytes += hdtr->headers[i].iov_len;
-        }
-        if (hdrbytes < total_hdrbytes) {
-            *len = hdrbytes;
-            return apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
-        }
-    }
-
-    if (sock->options & APR_INCOMPLETE_WRITE) {
-        sock->options &= ~APR_INCOMPLETE_WRITE;
-        goto do_select;
-    }
-
-    do {
-        rv = sendfile(sock->socketdes,    /* socket */
-                      file->filedes, /* open file descriptor of the file to be sent */
-                      &off,    /* where in the file to start */
-                      *len);   /* number of bytes to send */
-    } while (rv == -1 && errno == EINTR);
-
-    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
-                      && (sock->timeout > 0)) {
-do_select:
-        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        }
-        else {
-            do {
-                rv = sendfile(sock->socketdes,    /* socket */
-                              file->filedes, /* open file descriptor of the file to be sent */
-                              &off,    /* where in the file to start */
-                              *len);    /* number of bytes to send */
-            } while (rv == -1 && errno == EINTR);
-        }
-    }
-
-    if (rv == -1) {
-        *len = nbytes;
-        rv = errno;
-        apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
-        return rv;
-    }
-
-    nbytes += rv;
-
-    if (rv < *len) {
-        *len = nbytes;
-        arv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
-        if (rv > 0) {
-                
-            /* If this was a partial write, return now with the 
-             * partial byte count;  this is a non-blocking socket.
-             */
-
-            if (sock->timeout > 0) {
-                sock->options |= APR_INCOMPLETE_WRITE;
-            }
-            return arv;
-        }
-        else {
-            /* If the file got smaller mid-request, eventually the offset
-             * becomes equal to the new file size and the kernel returns 0.  
-             * Make this an error so the caller knows to log something and
-             * exit.
-             */
-            return APR_EOF;
-        }
-    }
-
-    /* Now write the footers */
-    if (hdtr->numtrailers > 0) {
-        apr_size_t trbytes;
-        arv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, 
-                               &trbytes);
-        nbytes += trbytes;
-        if (arv != APR_SUCCESS) {
-            *len = nbytes;
-            rv = errno;
-            apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
-            return rv;
-        }
-    }
-
-    apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
-    
-    (*len) = nbytes;
-    return rv < 0 ? errno : APR_SUCCESS;
-}
-
-#elif defined(DARWIN)
-
-/* OS/X Release 10.5 or greater */
-apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
-                                 apr_hdtr_t *hdtr, apr_off_t *offset,
-                                 apr_size_t *len, apr_int32_t flags)
-{
-    apr_off_t nbytes = 0;
-    apr_off_t bytes_to_send = *len;
-    apr_off_t bytes_sent = 0;
-    apr_status_t arv;
-    int rv = 0;
-
-    /* Ignore flags for now. */
-    flags = 0;
-
-    if (!hdtr) {
-        hdtr = &no_hdtr;
-    }
-
-    /* OS X can send the headers/footers as part of the system call, 
-     * but how it counts bytes isn't documented properly. We use 
-     * apr_socket_sendv() instead.
-     */
-     if (hdtr->numheaders > 0) {
-        apr_size_t hbytes;
-        int i;
-
-        /* Now write the headers */
-        arv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders,
-                               &hbytes);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return errno;
-        }
-        bytes_sent = hbytes;
-
-        hbytes = 0;
-        for (i = 0; i < hdtr->numheaders; i++) {
-            hbytes += hdtr->headers[i].iov_len;
-        }
-        if (bytes_sent < hbytes) {
-            *len = bytes_sent;
-            return APR_SUCCESS;
-        }
-    }
-
-    do {
-        if (!bytes_to_send) {
-            break;
-        }
-        if (sock->options & APR_INCOMPLETE_WRITE) {
-            apr_status_t arv;
-            sock->options &= ~APR_INCOMPLETE_WRITE;
-            arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-            if (arv != APR_SUCCESS) {
-                *len = 0;
-                return arv;
-            }
-        }
-
-        nbytes = bytes_to_send;
-        rv = sendfile(file->filedes, /* file to be sent */
-                      sock->socketdes, /* socket */
-                      *offset,       /* where in the file to start */
-                      &nbytes,       /* number of bytes to write/written */
-                      NULL,          /* Headers/footers */
-                      flags);        /* undefined, set to 0 */
-
-        if (rv == -1) {
-            if (errno == EAGAIN) {
-                if (sock->timeout > 0) {
-                    sock->options |= APR_INCOMPLETE_WRITE;
-                }
-                /* BSD's sendfile can return -1/EAGAIN even if it
-                 * sent bytes.  Sanitize the result so we get normal EAGAIN
-                 * semantics w.r.t. bytes sent.
-                 */
-                if (nbytes) {
-                    bytes_sent += nbytes;
-                    /* normal exit for a big file & non-blocking io */
-                    (*len) = bytes_sent;
-                    return APR_SUCCESS;
-                }
-            }
-        }
-        else {       /* rv == 0 (or the kernel is broken) */
-            bytes_sent += nbytes;
-            if (nbytes == 0) {
-                /* Most likely the file got smaller after the stat.
-                 * Return an error so the caller can do the Right Thing.
-                 */
-                (*len) = bytes_sent;
-                return APR_EOF;
-            }
-        }
-    } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
-
-    /* Now write the footers */
-    if (hdtr->numtrailers > 0) {
-        apr_size_t tbytes;
-        arv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, 
-                               &tbytes);
-        bytes_sent += tbytes;
-        if (arv != APR_SUCCESS) {
-            *len = bytes_sent;
-            rv = errno;
-            return rv;
-        }
-    }
-
-    (*len) = bytes_sent;
-    if (rv == -1) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
-
-/* Release 3.1 or greater */
-apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file,
-                                 apr_hdtr_t * hdtr, apr_off_t * offset,
-                                 apr_size_t * len, apr_int32_t flags)
-{
-    off_t nbytes = 0;
-    int rv;
-#if defined(__FreeBSD_version) && __FreeBSD_version < 460001
-    int i;
-#endif
-    struct sf_hdtr headerstruct;
-    apr_size_t bytes_to_send = *len;
-
-    /* Ignore flags for now. */
-    flags = 0;
-
-    if (!hdtr) {
-        hdtr = &no_hdtr;
-    }
-
-#if defined(__FreeBSD_version) && __FreeBSD_version < 460001
-    else if (hdtr->numheaders) {
-
-        /* On early versions of FreeBSD sendfile, the number of bytes to send 
-         * must include the length of the headers.  Don't look at the man page 
-         * for this :(  Instead, look at the the logic in 
-         * src/sys/kern/uipc_syscalls::sendfile().
-         *
-         * This was fixed in the middle of 4.6-STABLE
-         */
-        for (i = 0; i < hdtr->numheaders; i++) {
-            bytes_to_send += hdtr->headers[i].iov_len;
-        }
-    }
-#endif
-
-    headerstruct.headers = hdtr->headers;
-    headerstruct.hdr_cnt = hdtr->numheaders;
-    headerstruct.trailers = hdtr->trailers;
-    headerstruct.trl_cnt = hdtr->numtrailers;
-
-    /* FreeBSD can send the headers/footers as part of the system call */
-    do {
-        if (sock->options & APR_INCOMPLETE_WRITE) {
-            apr_status_t arv;
-            sock->options &= ~APR_INCOMPLETE_WRITE;
-            arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-            if (arv != APR_SUCCESS) {
-                *len = 0;
-                return arv;
-            }
-        }
-        if (bytes_to_send) {
-            /* We won't dare call sendfile() if we don't have
-             * header or file bytes to send because bytes_to_send == 0
-             * means send the whole file.
-             */
-            rv = sendfile(file->filedes, /* file to be sent */
-                          sock->socketdes, /* socket */
-                          *offset,       /* where in the file to start */
-                          bytes_to_send, /* number of bytes to send */
-                          &headerstruct, /* Headers/footers */
-                          &nbytes,       /* number of bytes written */
-                          flags);        /* undefined, set to 0 */
-
-            if (rv == -1) {
-                if (errno == EAGAIN) {
-                    if (sock->timeout > 0) {
-                        sock->options |= APR_INCOMPLETE_WRITE;
-                    }
-                    /* FreeBSD's sendfile can return -1/EAGAIN even if it
-                     * sent bytes.  Sanitize the result so we get normal EAGAIN
-                     * semantics w.r.t. bytes sent.
-                     */
-                    if (nbytes) {
-                        /* normal exit for a big file & non-blocking io */
-                        (*len) = nbytes;
-                        return APR_SUCCESS;
-                    }
-                }
-            }
-            else {       /* rv == 0 (or the kernel is broken) */
-                if (nbytes == 0) {
-                    /* Most likely the file got smaller after the stat.
-                     * Return an error so the caller can do the Right Thing.
-                     */
-                    (*len) = nbytes;
-                    return APR_EOF;
-                }
-            }
-        }    
-        else {
-            /* just trailer bytes... use writev()
-             */
-            rv = writev(sock->socketdes,
-                        hdtr->trailers,
-                        hdtr->numtrailers);
-            if (rv > 0) {
-                nbytes = rv;
-                rv = 0;
-            }
-            else {
-                nbytes = 0;
-            }
-        }
-        if ((rv == -1) && (errno == EAGAIN) 
-                       && (sock->timeout > 0)) {
-            apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-            if (arv != APR_SUCCESS) {
-                *len = 0;
-                return arv;
-            }
-        }
-    } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
-
-    (*len) = nbytes;
-    if (rv == -1) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-
-#elif defined(__hpux) || defined(__hpux__)
-
-/* HP cc in ANSI mode defines __hpux; gcc defines __hpux__ */
-
-/* HP-UX Version 10.30 or greater
- * (no worries, because we only get here if autoconfiguration found sendfile)
- */
-
-/* ssize_t sendfile(int s, int fd, off_t offset, size_t nbytes,
- *                  const struct iovec *hdtrl, int flags);
- *
- * nbytes is the number of bytes to send just from the file; as with FreeBSD, 
- * if nbytes == 0, the rest of the file (from offset) is sent
- */
-
-apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
-                                 apr_hdtr_t *hdtr, apr_off_t *offset,
-                                 apr_size_t *len, apr_int32_t flags)
-{
-    int i;
-    apr_ssize_t rc;
-    apr_size_t nbytes = *len, headerlen, trailerlen;
-    struct iovec hdtrarray[2];
-    char *headerbuf, *trailerbuf;
-
-#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64)
-    /* later HP-UXes have a sendfile64() */
-#define sendfile sendfile64
-    apr_off_t off = *offset;
-
-#elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4
-    /* HP-UX 11.00 doesn't have a sendfile64(): fail if trying to send
-     * past the 2Gb limit */
-    off_t off;
-
-    if ((apr_int64_t)*offset + *len > INT_MAX) {
-        return EINVAL;
-    }
-    off = *offset;
-#else
-    apr_off_t off = *offset;
-#endif
-
-    if (!hdtr) {
-        hdtr = &no_hdtr;
-    }
-
-    /* Ignore flags for now. */
-    flags = 0;
-
-    /* HP-UX can only send one header iovec and one footer iovec; try to
-     * only allocate storage to combine input iovecs when we really have to
-     */
-
-    switch(hdtr->numheaders) {
-    case 0:
-        hdtrarray[0].iov_base = NULL;
-        hdtrarray[0].iov_len = 0;
-        break;
-    case 1:
-        hdtrarray[0] = hdtr->headers[0];
-        break;
-    default:
-        headerlen = 0;
-        for (i = 0; i < hdtr->numheaders; i++) {
-            headerlen += hdtr->headers[i].iov_len;
-        }  
-
-        /* XXX:  BUHHH? wow, what a memory leak! */
-        headerbuf = hdtrarray[0].iov_base = apr_palloc(sock->pool, headerlen);
-        hdtrarray[0].iov_len = headerlen;
-
-        for (i = 0; i < hdtr->numheaders; i++) {
-            memcpy(headerbuf, hdtr->headers[i].iov_base,
-                   hdtr->headers[i].iov_len);
-            headerbuf += hdtr->headers[i].iov_len;
-        }
-    }
-
-    switch(hdtr->numtrailers) {
-    case 0:
-        hdtrarray[1].iov_base = NULL;
-        hdtrarray[1].iov_len = 0;
-        break;
-    case 1:
-        hdtrarray[1] = hdtr->trailers[0];
-        break;
-    default:
-        trailerlen = 0;
-        for (i = 0; i < hdtr->numtrailers; i++) {
-            trailerlen += hdtr->trailers[i].iov_len;
-        }
-
-        /* XXX:  BUHHH? wow, what a memory leak! */
-        trailerbuf = hdtrarray[1].iov_base = apr_palloc(sock->pool, trailerlen);
-        hdtrarray[1].iov_len = trailerlen;
-
-        for (i = 0; i < hdtr->numtrailers; i++) {
-            memcpy(trailerbuf, hdtr->trailers[i].iov_base,
-                   hdtr->trailers[i].iov_len);
-            trailerbuf += hdtr->trailers[i].iov_len;
-        }
-    }
-
-    do {
-        if (nbytes) {       /* any bytes to send from the file? */
-            rc = sendfile(sock->socketdes,      /* socket  */
-                          file->filedes,        /* file descriptor to send */
-                          off,                  /* where in the file to start */
-                          nbytes,               /* number of bytes to send from file */
-                          hdtrarray,            /* Headers/footers */
-                          flags);               /* undefined, set to 0 */
-        }
-        else {              /* we can't call sendfile() with no bytes to send from the file */
-            rc = writev(sock->socketdes, hdtrarray, 2);
-        }
-    } while (rc == -1 && errno == EINTR);
-
-    while ((rc == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
-                      && (sock->timeout > 0)) {
-        apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        }
-        else {
-            do {
-                if (nbytes) {
-                    rc = sendfile(sock->socketdes,    /* socket  */
-                                  file->filedes,      /* file descriptor to send */
-                                  off,                /* where in the file to start */
-                                  nbytes,             /* number of bytes to send from file */
-                                  hdtrarray,          /* Headers/footers */
-                                  flags);             /* undefined, set to 0 */
-                }
-                else {      /* we can't call sendfile() with no bytes to send from the file */
-                    rc = writev(sock->socketdes, hdtrarray, 2);
-                }
-            } while (rc == -1 && errno == EINTR);
-        }
-    }
-
-    if (rc == -1) {
-        *len = 0;
-        return errno;
-    }
-
-    /* Set len to the number of bytes written */
-    *len = rc;
-    return APR_SUCCESS;
-}
-#elif defined(_AIX) || defined(__MVS__)
-/* AIX and OS/390 have the same send_file() interface.
- *
- * subtle differences:
- *   AIX doesn't update the file ptr but OS/390 does
- *
- * availability (correctly determined by autoconf):
- *
- * AIX -  version 4.3.2 with APAR IX85388, or version 4.3.3 and above
- * OS/390 - V2R7 and above
- */
-apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file,
-                                 apr_hdtr_t * hdtr, apr_off_t * offset,
-                                 apr_size_t * len, apr_int32_t flags)
-{
-    int i, ptr, rv = 0;
-    void * hbuf=NULL, * tbuf=NULL;
-    apr_status_t arv;
-    struct sf_parms parms;
-
-    if (!hdtr) {
-        hdtr = &no_hdtr;
-    }
-
-    /* Ignore flags for now. */
-    flags = 0;
-
-    /* word to the wise: by default, AIX stores files sent by send_file()
-     * in the network buffer cache...  there are supposedly scenarios
-     * where the most recent copy of the file won't be sent, but I can't
-     * recreate the potential problem, perhaps because of the way we
-     * use send_file()...  if you suspect such a problem, try turning
-     * on the SF_SYNC_CACHE flag
-     */
-
-    /* AIX can also send the headers/footers as part of the system call */
-    parms.header_length = 0;
-    if (hdtr && hdtr->numheaders) {
-        if (hdtr->numheaders == 1) {
-            parms.header_data = hdtr->headers[0].iov_base;
-            parms.header_length = hdtr->headers[0].iov_len;
-        }
-        else {
-            for (i = 0; i < hdtr->numheaders; i++) {
-                parms.header_length += hdtr->headers[i].iov_len;
-            }
-#if 0
-            /* Keepalives make apr_palloc a bad idea */
-            hbuf = malloc(parms.header_length);
-#else
-            /* but headers are small, so maybe we can hold on to the
-             * memory for the life of the socket...
-             */
-            hbuf = apr_palloc(sock->pool, parms.header_length);
-#endif
-            ptr = 0;
-            for (i = 0; i < hdtr->numheaders; i++) {
-                memcpy((char *)hbuf + ptr, hdtr->headers[i].iov_base,
-                       hdtr->headers[i].iov_len);
-                ptr += hdtr->headers[i].iov_len;
-            }
-            parms.header_data = hbuf;
-        }
-    }
-    else parms.header_data = NULL;
-    parms.trailer_length = 0;
-    if (hdtr && hdtr->numtrailers) {
-        if (hdtr->numtrailers == 1) {
-            parms.trailer_data = hdtr->trailers[0].iov_base;
-            parms.trailer_length = hdtr->trailers[0].iov_len;
-        }
-        else {
-            for (i = 0; i < hdtr->numtrailers; i++) {
-                parms.trailer_length += hdtr->trailers[i].iov_len;
-            }
-#if 0
-            /* Keepalives make apr_palloc a bad idea */
-            tbuf = malloc(parms.trailer_length);
-#else
-            tbuf = apr_palloc(sock->pool, parms.trailer_length);
-#endif
-            ptr = 0;
-            for (i = 0; i < hdtr->numtrailers; i++) {
-                memcpy((char *)tbuf + ptr, hdtr->trailers[i].iov_base,
-                       hdtr->trailers[i].iov_len);
-                ptr += hdtr->trailers[i].iov_len;
-            }
-            parms.trailer_data = tbuf;
-        }
-    }
-    else {
-        parms.trailer_data = NULL;
-    }
-
-    /* Whew! Headers and trailers set up. Now for the file data */
-
-    parms.file_descriptor = file->filedes;
-    parms.file_offset = *offset;
-    parms.file_bytes = *len;
-
-    /* O.K. All set up now. Let's go to town */
-
-    if (sock->options & APR_INCOMPLETE_WRITE) {
-        sock->options &= ~APR_INCOMPLETE_WRITE;
-        goto do_select;
-    }
-
-    do {
-        rv = send_file(&(sock->socketdes), /* socket */
-                       &(parms),           /* all data */
-                       flags);             /* flags */
-    } while (rv == -1 && errno == EINTR);
-
-    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
-                      && (sock->timeout > 0)) {
-do_select:
-        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        }
-        else {
-            do {
-                rv = send_file(&(sock->socketdes), /* socket */
-                               &(parms),           /* all data */
-                               flags);             /* flags */
-            } while (rv == -1 && errno == EINTR);
-        }
-    }
-
-    (*len) = parms.bytes_sent;
-
-#if 0
-    /* Clean up after ourselves */
-    if(hbuf) free(hbuf);
-    if(tbuf) free(tbuf);
-#endif
-
-    if (rv == -1) {
-        return errno;
-    }
-
-    if ((sock->timeout > 0)
-          && (parms.bytes_sent 
-                < (parms.file_bytes + parms.header_length + parms.trailer_length))) {
-        sock->options |= APR_INCOMPLETE_WRITE;
-    }
-
-    return APR_SUCCESS;
-}
-#elif defined(__osf__) && defined (__alpha)
-/* Tru64's sendfile implementation doesn't work, and we need to make sure that
- * we don't use it until it is fixed.  If it is used as it is now, it will
- * hang the machine and the only way to fix it is a reboot.
- */
-#elif defined(HAVE_SENDFILEV)
-/* Solaris 8's sendfilev() interface 
- *
- * SFV_FD_SELF refers to our memory space.
- *
- * Required Sparc patches (or newer):
- * 111297-01, 108528-09, 109472-06, 109234-03, 108995-02, 111295-01, 109025-03,
- * 108991-13
- * Required x86 patches (or newer):
- * 111298-01, 108529-09, 109473-06, 109235-04, 108996-02, 111296-01, 109026-04,
- * 108992-13
- */
-
-#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILEV64)
-#define sendfilevec_t sendfilevec64_t
-#define sendfilev sendfilev64
-#endif
-
-apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
-                                 apr_hdtr_t *hdtr, apr_off_t *offset,
-                                 apr_size_t *len, apr_int32_t flags)
-{
-    apr_status_t rv, arv;
-    apr_size_t nbytes;
-    sendfilevec_t *sfv;
-    int vecs, curvec, i, repeat;
-    apr_size_t requested_len = 0;
-
-    if (!hdtr) {
-        hdtr = &no_hdtr;
-    }
-
-    /* Ignore flags for now. */
-    flags = 0;
-
-    /* Calculate how much space we need. */
-    vecs = hdtr->numheaders + hdtr->numtrailers + 1;
-    sfv = apr_palloc(sock->pool, sizeof(sendfilevec_t) * vecs);
-
-    curvec = 0;
-
-    /* Add the headers */
-    for (i = 0; i < hdtr->numheaders; i++, curvec++) {
-        sfv[curvec].sfv_fd = SFV_FD_SELF;
-        sfv[curvec].sfv_flag = 0;
-        /* Cast to unsigned long to prevent sign extension of the
-         * pointer value for the LFS case; see PR 39463. */
-        sfv[curvec].sfv_off = (unsigned long)hdtr->headers[i].iov_base;
-        sfv[curvec].sfv_len = hdtr->headers[i].iov_len;
-        requested_len += sfv[curvec].sfv_len;
-    }
-
-    /* If the len is 0, we skip the file. */
-    if (*len)
-    {
-        sfv[curvec].sfv_fd = file->filedes;
-        sfv[curvec].sfv_flag = 0;
-        sfv[curvec].sfv_off = *offset;
-        sfv[curvec].sfv_len = *len; 
-        requested_len += sfv[curvec].sfv_len;
-
-        curvec++;
-    }
-    else {
-        vecs--;
-    }
-
-    /* Add the footers */
-    for (i = 0; i < hdtr->numtrailers; i++, curvec++) {
-        sfv[curvec].sfv_fd = SFV_FD_SELF;
-        sfv[curvec].sfv_flag = 0;
-        sfv[curvec].sfv_off = (unsigned long)hdtr->trailers[i].iov_base;
-        sfv[curvec].sfv_len = hdtr->trailers[i].iov_len;
-        requested_len += sfv[curvec].sfv_len;
-    }
-
-    /* If the last write couldn't send all the requested data,
-     * wait for the socket to become writable before proceeding
-     */
-    if (sock->options & APR_INCOMPLETE_WRITE) {
-        sock->options &= ~APR_INCOMPLETE_WRITE;
-        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-        if (arv != APR_SUCCESS) {
-            *len = 0;
-            return arv;
-        }
-    }
- 
-    /* Actually do the sendfilev
-     *
-     * Solaris may return -1/EAGAIN even if it sent bytes on a non-block sock.
-     *
-     * If no bytes were originally sent (nbytes == 0) and we are on a TIMEOUT 
-     * socket (which as far as the OS is concerned is a non-blocking socket), 
-     * we want to retry after waiting for the other side to read the data (as 
-     * determined by poll).  Once it is clear to send, we want to retry
-     * sending the sendfilevec_t once more.
-     */
-    arv = 0;
-    do {
-        /* Clear out the repeat */
-        repeat = 0;
-
-        /* socket, vecs, number of vecs, bytes written */
-        rv = sendfilev(sock->socketdes, sfv, vecs, &nbytes);
-
-        if (rv == -1 && errno == EAGAIN) {
-            if (nbytes) {
-                rv = 0;
-            }
-            else if (!arv && (sock->timeout > 0)) {
-                apr_status_t t = apr_wait_for_io_or_timeout(NULL, sock, 0);
-
-                if (t != APR_SUCCESS) {
-                    *len = 0;
-                    return t;
-                }
-
-                arv = 1; 
-                repeat = 1;
-            }
-        }
-    } while ((rv == -1 && errno == EINTR) || repeat);
-
-    if (rv == -1) {
-        *len = 0;
-        return errno;
-    }
-
-    /* Update how much we sent */
-    *len = nbytes;
-
-    if (nbytes == 0) {
-        /* Most likely the file got smaller after the stat.
-         * Return an error so the caller can do the Right Thing.
-         */
-        return APR_EOF;
-    }
-
-    if ((sock->timeout > 0) && (*len < requested_len)) {
-        sock->options |= APR_INCOMPLETE_WRITE;
-    }
-    return APR_SUCCESS;
-}
-#else
-#error APR has detected sendfile on your system, but nobody has written a
-#error version of it for APR yet.  To get past this, either write 
-#error apr_socket_sendfile or change APR_HAS_SENDFILE in apr.h to 0.
-#endif /* __linux__, __FreeBSD__, __DragonFly__, __HPUX__, _AIX, __MVS__,
-	  Tru64/OSF1 */
-
-#endif /* APR_HAS_SENDFILE */

Copied: vendor/apache/apr/1.5.2/network_io/unix/sendrecv.c (from rev 9273, vendor/apache/apr/dist/network_io/unix/sendrecv.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/unix/sendrecv.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/unix/sendrecv.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1110 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_networkio.h"
+#include "apr_support.h"
+
+#if APR_HAS_SENDFILE
+/* This file is needed to allow us access to the apr_file_t internals. */
+#include "apr_arch_file_io.h"
+#endif /* APR_HAS_SENDFILE */
+
+/* osreldate.h is only needed on FreeBSD for sendfile detection */
+#if defined(__FreeBSD__)
+#include <osreldate.h>
+#endif
+
+apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf, 
+                             apr_size_t *len)
+{
+    apr_ssize_t rv;
+    
+    if (sock->options & APR_INCOMPLETE_WRITE) {
+        sock->options &= ~APR_INCOMPLETE_WRITE;
+        goto do_select;
+    }
+
+    do {
+        rv = write(sock->socketdes, buf, (*len));
+    } while (rv == -1 && errno == EINTR);
+
+    while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) 
+                    && (sock->timeout > 0)) {
+        apr_status_t arv;
+do_select:
+        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        }
+        else {
+            do {
+                rv = write(sock->socketdes, buf, (*len));
+            } while (rv == -1 && errno == EINTR);
+        }
+    }
+    if (rv == -1) {
+        *len = 0;
+        return errno;
+    }
+    if ((sock->timeout > 0) && (rv < *len)) {
+        sock->options |= APR_INCOMPLETE_WRITE;
+    }
+    (*len) = rv;
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len)
+{
+    apr_ssize_t rv;
+    apr_status_t arv;
+
+    if (sock->options & APR_INCOMPLETE_READ) {
+        sock->options &= ~APR_INCOMPLETE_READ;
+        goto do_select;
+    }
+
+    do {
+        rv = read(sock->socketdes, buf, (*len));
+    } while (rv == -1 && errno == EINTR);
+
+    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK)
+                      && (sock->timeout > 0)) {
+do_select:
+        arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        }
+        else {
+            do {
+                rv = read(sock->socketdes, buf, (*len));
+            } while (rv == -1 && errno == EINTR);
+        }
+    }
+    if (rv == -1) {
+        (*len) = 0;
+        return errno;
+    }
+    if ((sock->timeout > 0) && (rv < *len)) {
+        sock->options |= APR_INCOMPLETE_READ;
+    }
+    (*len) = rv;
+    if (rv == 0) {
+        return APR_EOF;
+    }
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where,
+                               apr_int32_t flags, const char *buf,
+                               apr_size_t *len)
+{
+    apr_ssize_t rv;
+
+    do {
+        rv = sendto(sock->socketdes, buf, (*len), flags, 
+                    (const struct sockaddr*)&where->sa, 
+                    where->salen);
+    } while (rv == -1 && errno == EINTR);
+
+    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK)
+                      && (sock->timeout > 0)) {
+        apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        } else {
+            do {
+                rv = sendto(sock->socketdes, buf, (*len), flags,
+                            (const struct sockaddr*)&where->sa,
+                            where->salen);
+            } while (rv == -1 && errno == EINTR);
+        }
+    }
+    if (rv == -1) {
+        *len = 0;
+        return errno;
+    }
+    *len = rv;
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock,
+                                 apr_int32_t flags, char *buf, 
+                                 apr_size_t *len)
+{
+    apr_ssize_t rv;
+    
+    from->salen = sizeof(from->sa);
+
+    do {
+        rv = recvfrom(sock->socketdes, buf, (*len), flags, 
+                      (struct sockaddr*)&from->sa, &from->salen);
+    } while (rv == -1 && errno == EINTR);
+
+    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK)
+                      && (sock->timeout > 0)) {
+        apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        } else {
+            do {
+                rv = recvfrom(sock->socketdes, buf, (*len), flags,
+                              (struct sockaddr*)&from->sa, &from->salen);
+            } while (rv == -1 && errno == EINTR);
+        }
+    }
+    if (rv == -1) {
+        (*len) = 0;
+        return errno;
+    }
+
+    /*
+     * Check if we have a valid address. recvfrom() with MSG_PEEK may return
+     * success without filling in the address.
+     */
+    if (from->salen > APR_OFFSETOF(struct sockaddr_in, sin_port)) {
+        apr_sockaddr_vars_set(from, from->sa.sin.sin_family,
+                              ntohs(from->sa.sin.sin_port));
+    }
+
+    (*len) = rv;
+    if (rv == 0 && sock->type == SOCK_STREAM) {
+        return APR_EOF;
+    }
+
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_sendv(apr_socket_t * sock, const struct iovec *vec,
+                              apr_int32_t nvec, apr_size_t *len)
+{
+#ifdef HAVE_WRITEV
+    apr_ssize_t rv;
+    apr_size_t requested_len = 0;
+    apr_int32_t i;
+
+    for (i = 0; i < nvec; i++) {
+        requested_len += vec[i].iov_len;
+    }
+
+    if (sock->options & APR_INCOMPLETE_WRITE) {
+        sock->options &= ~APR_INCOMPLETE_WRITE;
+        goto do_select;
+    }
+
+    do {
+        rv = writev(sock->socketdes, vec, nvec);
+    } while (rv == -1 && errno == EINTR);
+
+    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
+                      && (sock->timeout > 0)) {
+        apr_status_t arv;
+do_select:
+        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        }
+        else {
+            do {
+                rv = writev(sock->socketdes, vec, nvec);
+            } while (rv == -1 && errno == EINTR);
+        }
+    }
+    if (rv == -1) {
+        *len = 0;
+        return errno;
+    }
+    if ((sock->timeout > 0) && (rv < requested_len)) {
+        sock->options |= APR_INCOMPLETE_WRITE;
+    }
+    (*len) = rv;
+    return APR_SUCCESS;
+#else
+    *len = vec[0].iov_len;
+    return apr_socket_send(sock, vec[0].iov_base, len);
+#endif
+}
+
+#if APR_HAS_SENDFILE
+
+/* TODO: Verify that all platforms handle the fd the same way,
+ * i.e. that they don't move the file pointer.
+ */
+/* TODO: what should flags be?  int_32? */
+
+/* Define a structure to pass in when we have a NULL header value */
+static apr_hdtr_t no_hdtr;
+
+#if (defined(__linux__) || defined(__GNU__)) && defined(HAVE_WRITEV)
+
+apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
+                                 apr_hdtr_t *hdtr, apr_off_t *offset,
+                                 apr_size_t *len, apr_int32_t flags)
+{
+    int rv, nbytes = 0, total_hdrbytes, i;
+    apr_status_t arv;
+
+#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64)
+    apr_off_t off = *offset;
+#define sendfile sendfile64
+
+#elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4
+    /* 64-bit apr_off_t but no sendfile64(): fail if trying to send
+     * past the 2Gb limit. */
+    off_t off;
+    
+    if ((apr_int64_t)*offset + *len > INT_MAX) {
+        return EINVAL;
+    }
+    
+    off = *offset;
+
+#else
+    off_t off = *offset;
+
+    /* Multiple reports have shown sendfile failing with EINVAL if
+     * passed a >=2Gb count value on some 64-bit kernels.  It won't
+     * noticably hurt performance to limit each call to <2Gb at a
+     * time, so avoid that issue here: */
+    if (sizeof(off_t) == 8 && *len > INT_MAX) {
+        *len = INT_MAX;
+    }
+#endif
+
+    if (!hdtr) {
+        hdtr = &no_hdtr;
+    }
+
+    if (hdtr->numheaders > 0) {
+        apr_size_t hdrbytes;
+
+        /* cork before writing headers */
+        rv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 1);
+        if (rv != APR_SUCCESS) {
+            return rv;
+        }
+
+        /* Now write the headers */
+        arv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders,
+                               &hdrbytes);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return errno;
+        }
+        nbytes += hdrbytes;
+
+        /* If this was a partial write and we aren't doing timeouts, 
+         * return now with the partial byte count; this is a non-blocking 
+         * socket.
+         */
+        total_hdrbytes = 0;
+        for (i = 0; i < hdtr->numheaders; i++) {
+            total_hdrbytes += hdtr->headers[i].iov_len;
+        }
+        if (hdrbytes < total_hdrbytes) {
+            *len = hdrbytes;
+            return apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
+        }
+    }
+
+    if (sock->options & APR_INCOMPLETE_WRITE) {
+        sock->options &= ~APR_INCOMPLETE_WRITE;
+        goto do_select;
+    }
+
+    do {
+        rv = sendfile(sock->socketdes,    /* socket */
+                      file->filedes, /* open file descriptor of the file to be sent */
+                      &off,    /* where in the file to start */
+                      *len);   /* number of bytes to send */
+    } while (rv == -1 && errno == EINTR);
+
+    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
+                      && (sock->timeout > 0)) {
+do_select:
+        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        }
+        else {
+            do {
+                rv = sendfile(sock->socketdes,    /* socket */
+                              file->filedes, /* open file descriptor of the file to be sent */
+                              &off,    /* where in the file to start */
+                              *len);    /* number of bytes to send */
+            } while (rv == -1 && errno == EINTR);
+        }
+    }
+
+    if (rv == -1) {
+        *len = nbytes;
+        rv = errno;
+        apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
+        return rv;
+    }
+
+    nbytes += rv;
+
+    if (rv < *len) {
+        *len = nbytes;
+        arv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
+        if (rv > 0) {
+                
+            /* If this was a partial write, return now with the 
+             * partial byte count;  this is a non-blocking socket.
+             */
+
+            if (sock->timeout > 0) {
+                sock->options |= APR_INCOMPLETE_WRITE;
+            }
+            return arv;
+        }
+        else {
+            /* If the file got smaller mid-request, eventually the offset
+             * becomes equal to the new file size and the kernel returns 0.  
+             * Make this an error so the caller knows to log something and
+             * exit.
+             */
+            return APR_EOF;
+        }
+    }
+
+    /* Now write the footers */
+    if (hdtr->numtrailers > 0) {
+        apr_size_t trbytes;
+        arv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, 
+                               &trbytes);
+        nbytes += trbytes;
+        if (arv != APR_SUCCESS) {
+            *len = nbytes;
+            rv = errno;
+            apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
+            return rv;
+        }
+    }
+
+    apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
+    
+    (*len) = nbytes;
+    return rv < 0 ? errno : APR_SUCCESS;
+}
+
+#elif defined(DARWIN)
+
+/* OS/X Release 10.5 or greater */
+apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
+                                 apr_hdtr_t *hdtr, apr_off_t *offset,
+                                 apr_size_t *len, apr_int32_t flags)
+{
+    apr_off_t nbytes = 0;
+    apr_off_t bytes_to_send = *len;
+    apr_off_t bytes_sent = 0;
+    apr_status_t arv;
+    int rv = 0;
+
+    /* Ignore flags for now. */
+    flags = 0;
+
+    if (!hdtr) {
+        hdtr = &no_hdtr;
+    }
+
+    /* OS X can send the headers/footers as part of the system call, 
+     * but how it counts bytes isn't documented properly. We use 
+     * apr_socket_sendv() instead.
+     */
+     if (hdtr->numheaders > 0) {
+        apr_size_t hbytes;
+        int i;
+
+        /* Now write the headers */
+        arv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders,
+                               &hbytes);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return errno;
+        }
+        bytes_sent = hbytes;
+
+        hbytes = 0;
+        for (i = 0; i < hdtr->numheaders; i++) {
+            hbytes += hdtr->headers[i].iov_len;
+        }
+        if (bytes_sent < hbytes) {
+            *len = bytes_sent;
+            return APR_SUCCESS;
+        }
+    }
+
+    do {
+        if (!bytes_to_send) {
+            break;
+        }
+        if (sock->options & APR_INCOMPLETE_WRITE) {
+            apr_status_t arv;
+            sock->options &= ~APR_INCOMPLETE_WRITE;
+            arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+            if (arv != APR_SUCCESS) {
+                *len = 0;
+                return arv;
+            }
+        }
+
+        nbytes = bytes_to_send;
+        rv = sendfile(file->filedes, /* file to be sent */
+                      sock->socketdes, /* socket */
+                      *offset,       /* where in the file to start */
+                      &nbytes,       /* number of bytes to write/written */
+                      NULL,          /* Headers/footers */
+                      flags);        /* undefined, set to 0 */
+
+        if (rv == -1) {
+            if (errno == EAGAIN) {
+                if (sock->timeout > 0) {
+                    sock->options |= APR_INCOMPLETE_WRITE;
+                }
+                /* BSD's sendfile can return -1/EAGAIN even if it
+                 * sent bytes.  Sanitize the result so we get normal EAGAIN
+                 * semantics w.r.t. bytes sent.
+                 */
+                if (nbytes) {
+                    bytes_sent += nbytes;
+                    /* normal exit for a big file & non-blocking io */
+                    (*len) = bytes_sent;
+                    return APR_SUCCESS;
+                }
+            }
+        }
+        else {       /* rv == 0 (or the kernel is broken) */
+            bytes_sent += nbytes;
+            if (nbytes == 0) {
+                /* Most likely the file got smaller after the stat.
+                 * Return an error so the caller can do the Right Thing.
+                 */
+                (*len) = bytes_sent;
+                return APR_EOF;
+            }
+        }
+    } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
+
+    /* Now write the footers */
+    if (hdtr->numtrailers > 0) {
+        apr_size_t tbytes;
+        arv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, 
+                               &tbytes);
+        bytes_sent += tbytes;
+        if (arv != APR_SUCCESS) {
+            *len = bytes_sent;
+            rv = errno;
+            return rv;
+        }
+    }
+
+    (*len) = bytes_sent;
+    if (rv == -1) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+#elif defined(__FreeBSD__) || defined(__DragonFly__)
+
+/* Release 3.1 or greater */
+apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file,
+                                 apr_hdtr_t * hdtr, apr_off_t * offset,
+                                 apr_size_t * len, apr_int32_t flags)
+{
+    off_t nbytes = 0;
+    int rv;
+#if defined(__FreeBSD_version) && __FreeBSD_version < 460001
+    int i;
+#endif
+    struct sf_hdtr headerstruct;
+    apr_size_t bytes_to_send = *len;
+
+    /* Ignore flags for now. */
+    flags = 0;
+
+    if (!hdtr) {
+        hdtr = &no_hdtr;
+    }
+
+#if defined(__FreeBSD_version) && __FreeBSD_version < 460001
+    else if (hdtr->numheaders) {
+
+        /* On early versions of FreeBSD sendfile, the number of bytes to send 
+         * must include the length of the headers.  Don't look at the man page 
+         * for this :(  Instead, look at the logic in 
+         * src/sys/kern/uipc_syscalls::sendfile().
+         *
+         * This was fixed in the middle of 4.6-STABLE
+         */
+        for (i = 0; i < hdtr->numheaders; i++) {
+            bytes_to_send += hdtr->headers[i].iov_len;
+        }
+    }
+#endif
+
+    headerstruct.headers = hdtr->headers;
+    headerstruct.hdr_cnt = hdtr->numheaders;
+    headerstruct.trailers = hdtr->trailers;
+    headerstruct.trl_cnt = hdtr->numtrailers;
+
+    /* FreeBSD can send the headers/footers as part of the system call */
+    do {
+        if (sock->options & APR_INCOMPLETE_WRITE) {
+            apr_status_t arv;
+            sock->options &= ~APR_INCOMPLETE_WRITE;
+            arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+            if (arv != APR_SUCCESS) {
+                *len = 0;
+                return arv;
+            }
+        }
+        if (bytes_to_send) {
+            /* We won't dare call sendfile() if we don't have
+             * header or file bytes to send because bytes_to_send == 0
+             * means send the whole file.
+             */
+            rv = sendfile(file->filedes, /* file to be sent */
+                          sock->socketdes, /* socket */
+                          *offset,       /* where in the file to start */
+                          bytes_to_send, /* number of bytes to send */
+                          &headerstruct, /* Headers/footers */
+                          &nbytes,       /* number of bytes written */
+                          flags);        /* undefined, set to 0 */
+
+            if (rv == -1) {
+                if (errno == EAGAIN) {
+                    if (sock->timeout > 0) {
+                        sock->options |= APR_INCOMPLETE_WRITE;
+                    }
+                    /* FreeBSD's sendfile can return -1/EAGAIN even if it
+                     * sent bytes.  Sanitize the result so we get normal EAGAIN
+                     * semantics w.r.t. bytes sent.
+                     */
+                    if (nbytes) {
+                        /* normal exit for a big file & non-blocking io */
+                        (*len) = nbytes;
+                        return APR_SUCCESS;
+                    }
+                }
+            }
+            else {       /* rv == 0 (or the kernel is broken) */
+                if (nbytes == 0) {
+                    /* Most likely the file got smaller after the stat.
+                     * Return an error so the caller can do the Right Thing.
+                     */
+                    (*len) = nbytes;
+                    return APR_EOF;
+                }
+            }
+        }    
+        else {
+            /* just trailer bytes... use writev()
+             */
+            rv = writev(sock->socketdes,
+                        hdtr->trailers,
+                        hdtr->numtrailers);
+            if (rv > 0) {
+                nbytes = rv;
+                rv = 0;
+            }
+            else {
+                nbytes = 0;
+            }
+        }
+        if ((rv == -1) && (errno == EAGAIN) 
+                       && (sock->timeout > 0)) {
+            apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+            if (arv != APR_SUCCESS) {
+                *len = 0;
+                return arv;
+            }
+        }
+    } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
+
+    (*len) = nbytes;
+    if (rv == -1) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+
+#elif defined(__hpux) || defined(__hpux__)
+
+/* HP cc in ANSI mode defines __hpux; gcc defines __hpux__ */
+
+/* HP-UX Version 10.30 or greater
+ * (no worries, because we only get here if autoconfiguration found sendfile)
+ */
+
+/* ssize_t sendfile(int s, int fd, off_t offset, size_t nbytes,
+ *                  const struct iovec *hdtrl, int flags);
+ *
+ * nbytes is the number of bytes to send just from the file; as with FreeBSD, 
+ * if nbytes == 0, the rest of the file (from offset) is sent
+ */
+
+apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
+                                 apr_hdtr_t *hdtr, apr_off_t *offset,
+                                 apr_size_t *len, apr_int32_t flags)
+{
+    int i;
+    apr_ssize_t rc;
+    apr_size_t nbytes = *len, headerlen, trailerlen;
+    struct iovec hdtrarray[2];
+    char *headerbuf, *trailerbuf;
+
+#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64)
+    /* later HP-UXes have a sendfile64() */
+#define sendfile sendfile64
+    apr_off_t off = *offset;
+
+#elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4
+    /* HP-UX 11.00 doesn't have a sendfile64(): fail if trying to send
+     * past the 2Gb limit */
+    off_t off;
+
+    if ((apr_int64_t)*offset + *len > INT_MAX) {
+        return EINVAL;
+    }
+    off = *offset;
+#else
+    apr_off_t off = *offset;
+#endif
+
+    if (!hdtr) {
+        hdtr = &no_hdtr;
+    }
+
+    /* Ignore flags for now. */
+    flags = 0;
+
+    /* HP-UX can only send one header iovec and one footer iovec; try to
+     * only allocate storage to combine input iovecs when we really have to
+     */
+
+    switch(hdtr->numheaders) {
+    case 0:
+        hdtrarray[0].iov_base = NULL;
+        hdtrarray[0].iov_len = 0;
+        break;
+    case 1:
+        hdtrarray[0] = hdtr->headers[0];
+        break;
+    default:
+        headerlen = 0;
+        for (i = 0; i < hdtr->numheaders; i++) {
+            headerlen += hdtr->headers[i].iov_len;
+        }  
+
+        /* XXX:  BUHHH? wow, what a memory leak! */
+        headerbuf = hdtrarray[0].iov_base = apr_palloc(sock->pool, headerlen);
+        hdtrarray[0].iov_len = headerlen;
+
+        for (i = 0; i < hdtr->numheaders; i++) {
+            memcpy(headerbuf, hdtr->headers[i].iov_base,
+                   hdtr->headers[i].iov_len);
+            headerbuf += hdtr->headers[i].iov_len;
+        }
+    }
+
+    switch(hdtr->numtrailers) {
+    case 0:
+        hdtrarray[1].iov_base = NULL;
+        hdtrarray[1].iov_len = 0;
+        break;
+    case 1:
+        hdtrarray[1] = hdtr->trailers[0];
+        break;
+    default:
+        trailerlen = 0;
+        for (i = 0; i < hdtr->numtrailers; i++) {
+            trailerlen += hdtr->trailers[i].iov_len;
+        }
+
+        /* XXX:  BUHHH? wow, what a memory leak! */
+        trailerbuf = hdtrarray[1].iov_base = apr_palloc(sock->pool, trailerlen);
+        hdtrarray[1].iov_len = trailerlen;
+
+        for (i = 0; i < hdtr->numtrailers; i++) {
+            memcpy(trailerbuf, hdtr->trailers[i].iov_base,
+                   hdtr->trailers[i].iov_len);
+            trailerbuf += hdtr->trailers[i].iov_len;
+        }
+    }
+
+    do {
+        if (nbytes) {       /* any bytes to send from the file? */
+            rc = sendfile(sock->socketdes,      /* socket  */
+                          file->filedes,        /* file descriptor to send */
+                          off,                  /* where in the file to start */
+                          nbytes,               /* number of bytes to send from file */
+                          hdtrarray,            /* Headers/footers */
+                          flags);               /* undefined, set to 0 */
+        }
+        else {              /* we can't call sendfile() with no bytes to send from the file */
+            rc = writev(sock->socketdes, hdtrarray, 2);
+        }
+    } while (rc == -1 && errno == EINTR);
+
+    while ((rc == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
+                      && (sock->timeout > 0)) {
+        apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        }
+        else {
+            do {
+                if (nbytes) {
+                    rc = sendfile(sock->socketdes,    /* socket  */
+                                  file->filedes,      /* file descriptor to send */
+                                  off,                /* where in the file to start */
+                                  nbytes,             /* number of bytes to send from file */
+                                  hdtrarray,          /* Headers/footers */
+                                  flags);             /* undefined, set to 0 */
+                }
+                else {      /* we can't call sendfile() with no bytes to send from the file */
+                    rc = writev(sock->socketdes, hdtrarray, 2);
+                }
+            } while (rc == -1 && errno == EINTR);
+        }
+    }
+
+    if (rc == -1) {
+        *len = 0;
+        return errno;
+    }
+
+    /* Set len to the number of bytes written */
+    *len = rc;
+    return APR_SUCCESS;
+}
+#elif defined(_AIX) || defined(__MVS__)
+/* AIX and OS/390 have the same send_file() interface.
+ *
+ * subtle differences:
+ *   AIX doesn't update the file ptr but OS/390 does
+ *
+ * availability (correctly determined by autoconf):
+ *
+ * AIX -  version 4.3.2 with APAR IX85388, or version 4.3.3 and above
+ * OS/390 - V2R7 and above
+ */
+apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file,
+                                 apr_hdtr_t * hdtr, apr_off_t * offset,
+                                 apr_size_t * len, apr_int32_t flags)
+{
+    int i, ptr, rv = 0;
+    void * hbuf=NULL, * tbuf=NULL;
+    apr_status_t arv;
+    struct sf_parms parms;
+
+    if (!hdtr) {
+        hdtr = &no_hdtr;
+    }
+
+    /* Ignore flags for now. */
+    flags = 0;
+
+    /* word to the wise: by default, AIX stores files sent by send_file()
+     * in the network buffer cache...  there are supposedly scenarios
+     * where the most recent copy of the file won't be sent, but I can't
+     * recreate the potential problem, perhaps because of the way we
+     * use send_file()...  if you suspect such a problem, try turning
+     * on the SF_SYNC_CACHE flag
+     */
+
+    /* AIX can also send the headers/footers as part of the system call */
+    parms.header_length = 0;
+    if (hdtr && hdtr->numheaders) {
+        if (hdtr->numheaders == 1) {
+            parms.header_data = hdtr->headers[0].iov_base;
+            parms.header_length = hdtr->headers[0].iov_len;
+        }
+        else {
+            for (i = 0; i < hdtr->numheaders; i++) {
+                parms.header_length += hdtr->headers[i].iov_len;
+            }
+#if 0
+            /* Keepalives make apr_palloc a bad idea */
+            hbuf = malloc(parms.header_length);
+#else
+            /* but headers are small, so maybe we can hold on to the
+             * memory for the life of the socket...
+             */
+            hbuf = apr_palloc(sock->pool, parms.header_length);
+#endif
+            ptr = 0;
+            for (i = 0; i < hdtr->numheaders; i++) {
+                memcpy((char *)hbuf + ptr, hdtr->headers[i].iov_base,
+                       hdtr->headers[i].iov_len);
+                ptr += hdtr->headers[i].iov_len;
+            }
+            parms.header_data = hbuf;
+        }
+    }
+    else parms.header_data = NULL;
+    parms.trailer_length = 0;
+    if (hdtr && hdtr->numtrailers) {
+        if (hdtr->numtrailers == 1) {
+            parms.trailer_data = hdtr->trailers[0].iov_base;
+            parms.trailer_length = hdtr->trailers[0].iov_len;
+        }
+        else {
+            for (i = 0; i < hdtr->numtrailers; i++) {
+                parms.trailer_length += hdtr->trailers[i].iov_len;
+            }
+#if 0
+            /* Keepalives make apr_palloc a bad idea */
+            tbuf = malloc(parms.trailer_length);
+#else
+            tbuf = apr_palloc(sock->pool, parms.trailer_length);
+#endif
+            ptr = 0;
+            for (i = 0; i < hdtr->numtrailers; i++) {
+                memcpy((char *)tbuf + ptr, hdtr->trailers[i].iov_base,
+                       hdtr->trailers[i].iov_len);
+                ptr += hdtr->trailers[i].iov_len;
+            }
+            parms.trailer_data = tbuf;
+        }
+    }
+    else {
+        parms.trailer_data = NULL;
+    }
+
+    /* Whew! Headers and trailers set up. Now for the file data */
+
+    parms.file_descriptor = file->filedes;
+    parms.file_offset = *offset;
+    parms.file_bytes = *len;
+
+    /* O.K. All set up now. Let's go to town */
+
+    if (sock->options & APR_INCOMPLETE_WRITE) {
+        sock->options &= ~APR_INCOMPLETE_WRITE;
+        goto do_select;
+    }
+
+    do {
+        rv = send_file(&(sock->socketdes), /* socket */
+                       &(parms),           /* all data */
+                       flags);             /* flags */
+    } while (rv == -1 && errno == EINTR);
+
+    while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) 
+                      && (sock->timeout > 0)) {
+do_select:
+        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        }
+        else {
+            do {
+                rv = send_file(&(sock->socketdes), /* socket */
+                               &(parms),           /* all data */
+                               flags);             /* flags */
+            } while (rv == -1 && errno == EINTR);
+        }
+    }
+
+    (*len) = parms.bytes_sent;
+
+#if 0
+    /* Clean up after ourselves */
+    if(hbuf) free(hbuf);
+    if(tbuf) free(tbuf);
+#endif
+
+    if (rv == -1) {
+        return errno;
+    }
+
+    if ((sock->timeout > 0)
+          && (parms.bytes_sent 
+                < (parms.file_bytes + parms.header_length + parms.trailer_length))) {
+        sock->options |= APR_INCOMPLETE_WRITE;
+    }
+
+    return APR_SUCCESS;
+}
+#elif defined(__osf__) && defined (__alpha)
+/* Tru64's sendfile implementation doesn't work, and we need to make sure that
+ * we don't use it until it is fixed.  If it is used as it is now, it will
+ * hang the machine and the only way to fix it is a reboot.
+ */
+#elif defined(HAVE_SENDFILEV)
+/* Solaris 8's sendfilev() interface 
+ *
+ * SFV_FD_SELF refers to our memory space.
+ *
+ * Required Sparc patches (or newer):
+ * 111297-01, 108528-09, 109472-06, 109234-03, 108995-02, 111295-01, 109025-03,
+ * 108991-13
+ * Required x86 patches (or newer):
+ * 111298-01, 108529-09, 109473-06, 109235-04, 108996-02, 111296-01, 109026-04,
+ * 108992-13
+ */
+
+#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILEV64)
+#define sendfilevec_t sendfilevec64_t
+#define sendfilev sendfilev64
+#endif
+
+apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
+                                 apr_hdtr_t *hdtr, apr_off_t *offset,
+                                 apr_size_t *len, apr_int32_t flags)
+{
+    apr_status_t rv, arv;
+    apr_size_t nbytes;
+    sendfilevec_t *sfv;
+    int vecs, curvec, i, repeat;
+    apr_size_t requested_len = 0;
+
+    if (!hdtr) {
+        hdtr = &no_hdtr;
+    }
+
+    /* Ignore flags for now. */
+    flags = 0;
+
+    /* Calculate how much space we need. */
+    vecs = hdtr->numheaders + hdtr->numtrailers + 1;
+    sfv = apr_palloc(sock->pool, sizeof(sendfilevec_t) * vecs);
+
+    curvec = 0;
+
+    /* Add the headers */
+    for (i = 0; i < hdtr->numheaders; i++, curvec++) {
+        sfv[curvec].sfv_fd = SFV_FD_SELF;
+        sfv[curvec].sfv_flag = 0;
+        /* Cast to unsigned long to prevent sign extension of the
+         * pointer value for the LFS case; see PR 39463. */
+        sfv[curvec].sfv_off = (unsigned long)hdtr->headers[i].iov_base;
+        sfv[curvec].sfv_len = hdtr->headers[i].iov_len;
+        requested_len += sfv[curvec].sfv_len;
+    }
+
+    /* If the len is 0, we skip the file. */
+    if (*len)
+    {
+        sfv[curvec].sfv_fd = file->filedes;
+        sfv[curvec].sfv_flag = 0;
+        sfv[curvec].sfv_off = *offset;
+        sfv[curvec].sfv_len = *len; 
+        requested_len += sfv[curvec].sfv_len;
+
+        curvec++;
+    }
+    else {
+        vecs--;
+    }
+
+    /* Add the footers */
+    for (i = 0; i < hdtr->numtrailers; i++, curvec++) {
+        sfv[curvec].sfv_fd = SFV_FD_SELF;
+        sfv[curvec].sfv_flag = 0;
+        sfv[curvec].sfv_off = (unsigned long)hdtr->trailers[i].iov_base;
+        sfv[curvec].sfv_len = hdtr->trailers[i].iov_len;
+        requested_len += sfv[curvec].sfv_len;
+    }
+
+    /* If the last write couldn't send all the requested data,
+     * wait for the socket to become writable before proceeding
+     */
+    if (sock->options & APR_INCOMPLETE_WRITE) {
+        sock->options &= ~APR_INCOMPLETE_WRITE;
+        arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
+        if (arv != APR_SUCCESS) {
+            *len = 0;
+            return arv;
+        }
+    }
+ 
+    /* Actually do the sendfilev
+     *
+     * Solaris may return -1/EAGAIN even if it sent bytes on a non-block sock.
+     *
+     * If no bytes were originally sent (nbytes == 0) and we are on a TIMEOUT 
+     * socket (which as far as the OS is concerned is a non-blocking socket), 
+     * we want to retry after waiting for the other side to read the data (as 
+     * determined by poll).  Once it is clear to send, we want to retry
+     * sending the sendfilevec_t once more.
+     */
+    arv = 0;
+    do {
+        /* Clear out the repeat */
+        repeat = 0;
+
+        /* socket, vecs, number of vecs, bytes written */
+        rv = sendfilev(sock->socketdes, sfv, vecs, &nbytes);
+
+        if (rv == -1 && errno == EAGAIN) {
+            if (nbytes) {
+                rv = 0;
+            }
+            else if (!arv && (sock->timeout > 0)) {
+                apr_status_t t = apr_wait_for_io_or_timeout(NULL, sock, 0);
+
+                if (t != APR_SUCCESS) {
+                    *len = 0;
+                    return t;
+                }
+
+                arv = 1; 
+                repeat = 1;
+            }
+        }
+    } while ((rv == -1 && errno == EINTR) || repeat);
+
+    if (rv == -1) {
+        *len = 0;
+        return errno;
+    }
+
+    /* Update how much we sent */
+    *len = nbytes;
+
+    if (nbytes == 0) {
+        /* Most likely the file got smaller after the stat.
+         * Return an error so the caller can do the Right Thing.
+         */
+        return APR_EOF;
+    }
+
+    if ((sock->timeout > 0) && (*len < requested_len)) {
+        sock->options |= APR_INCOMPLETE_WRITE;
+    }
+    return APR_SUCCESS;
+}
+#else
+#error APR has detected sendfile on your system, but nobody has written a
+#error version of it for APR yet.  To get past this, either write 
+#error apr_socket_sendfile or change APR_HAS_SENDFILE in apr.h to 0.
+#endif /* __linux__, __FreeBSD__, __DragonFly__, __HPUX__, _AIX, __MVS__,
+	  Tru64/OSF1 */
+
+#endif /* APR_HAS_SENDFILE */

Deleted: vendor/apache/apr/1.5.2/network_io/unix/sockaddr.c
===================================================================
--- vendor/apache/apr/dist/network_io/unix/sockaddr.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/unix/sockaddr.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1073 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_strings.h"
-#include "apr.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include "apr_private.h"
-
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#define APR_WANT_STRFUNC
-#include "apr_want.h"
-
-struct apr_ipsubnet_t {
-    int family;
-#if APR_HAVE_IPV6
-    apr_uint32_t sub[4]; /* big enough for IPv4 and IPv6 addresses */
-    apr_uint32_t mask[4];
-#else
-    apr_uint32_t sub[1];
-    apr_uint32_t mask[1];
-#endif
-};
-
-#if !defined(NETWARE) && !defined(WIN32)
-#ifdef HAVE_SET_H_ERRNO
-#define SET_H_ERRNO(newval) set_h_errno(newval)
-#else
-#define SET_H_ERRNO(newval) h_errno = (newval)
-#endif
-#else
-#define SET_H_ERRNO(newval)
-#endif
-
-#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
-    defined(HAVE_GETHOSTBYNAME_R)
-/* This is the maximum size that may be returned from the reentrant
- * gethostbyname_r function.  If the system tries to use more, it
- * should return ERANGE.
- */
-#define GETHOSTBYNAME_BUFLEN 512
-#endif
-
-#ifdef _AIX
-/* Some levels of AIX getaddrinfo() don't like servname = "0", so
- * set servname to "1" when port is 0 and fix it up later.
- */
-#define AIX_SERVNAME_HACK 1
-#else
-#define AIX_SERVNAME_HACK 0
-#endif
-
-#ifdef _WIN32_WCE
-/* XXX: BS solution.  Need an HAVE_GETSERVBYNAME and actually
- * do something here, to provide the obvious proto mappings.
- */
-static void *getservbyname(const char *name, const char *proto)
-{
-    return NULL;
-}
-#endif
-
-static apr_status_t get_local_addr(apr_socket_t *sock)
-{
-    sock->local_addr->salen = sizeof(sock->local_addr->sa);
-    if (getsockname(sock->socketdes, (struct sockaddr *)&sock->local_addr->sa,
-                    &sock->local_addr->salen) < 0) {
-        return apr_get_netos_error();
-    }
-    else {
-        sock->local_port_unknown = sock->local_interface_unknown = 0;
-        /* XXX assumes sin_port and sin6_port at same offset */
-        sock->local_addr->port = ntohs(sock->local_addr->sa.sin.sin_port);
-        return APR_SUCCESS;
-    }
-}
-
-static apr_status_t get_remote_addr(apr_socket_t *sock)
-{
-    sock->remote_addr->salen = sizeof(sock->remote_addr->sa);
-    if (getpeername(sock->socketdes, (struct sockaddr *)&sock->remote_addr->sa,
-                    &sock->remote_addr->salen) < 0) {
-        return apr_get_netos_error();
-    }
-    else {
-        sock->remote_addr_unknown = 0;
-        /* XXX assumes sin_port and sin6_port at same offset */
-        sock->remote_addr->port = ntohs(sock->remote_addr->sa.sin.sin_port);
-        return APR_SUCCESS;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_sockaddr_ip_getbuf(char *buf, apr_size_t buflen,
-                                                 apr_sockaddr_t *sockaddr)
-{
-    if (!apr_inet_ntop(sockaddr->family, sockaddr->ipaddr_ptr, buf, buflen)) {
-        return APR_ENOSPC;
-    }
-
-#if APR_HAVE_IPV6
-    if (sockaddr->family == AF_INET6 
-        && IN6_IS_ADDR_V4MAPPED((struct in6_addr *)sockaddr->ipaddr_ptr)
-        && buflen > strlen("::ffff:")) {
-        /* This is an IPv4-mapped IPv6 address; drop the leading
-         * part of the address string so we're left with the familiar
-         * IPv4 format.
-         */
-        memmove(buf, buf + strlen("::ffff:"),
-                strlen(buf + strlen("::ffff:"))+1);
-    }
-#endif
-    /* ensure NUL termination if the buffer is too short */
-    buf[buflen-1] = '\0';
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr,
-                                              apr_sockaddr_t *sockaddr)
-{
-    *addr = apr_palloc(sockaddr->pool, sockaddr->addr_str_len);
-    return apr_sockaddr_ip_getbuf(*addr, sockaddr->addr_str_len, sockaddr);
-}
-
-void apr_sockaddr_vars_set(apr_sockaddr_t *addr, int family, apr_port_t port)
-{
-    addr->family = family;
-    addr->sa.sin.sin_family = family;
-    if (port) {
-        /* XXX IPv6: assumes sin_port and sin6_port at same offset */
-        addr->sa.sin.sin_port = htons(port);
-        addr->port = port;
-    }
-#if AIX_SERVNAME_HACK
-    else {
-        addr->sa.sin.sin_port = htons(port);
-    }
-#endif
-
-    if (family == APR_INET) {
-        addr->salen = sizeof(struct sockaddr_in);
-        addr->addr_str_len = 16;
-        addr->ipaddr_ptr = &(addr->sa.sin.sin_addr);
-        addr->ipaddr_len = sizeof(struct in_addr);
-    }
-#if APR_HAVE_IPV6
-    else if (family == APR_INET6) {
-        addr->salen = sizeof(struct sockaddr_in6);
-        addr->addr_str_len = 46;
-        addr->ipaddr_ptr = &(addr->sa.sin6.sin6_addr);
-        addr->ipaddr_len = sizeof(struct in6_addr);
-    }
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa,
-                                           apr_interface_e which,
-                                           apr_socket_t *sock)
-{
-    if (which == APR_LOCAL) {
-        if (sock->local_interface_unknown || sock->local_port_unknown) {
-            apr_status_t rv = get_local_addr(sock);
-
-            if (rv != APR_SUCCESS) {
-                return rv;
-            }
-        }
-        *sa = sock->local_addr;
-    }
-    else if (which == APR_REMOTE) {
-        if (sock->remote_addr_unknown) {
-            apr_status_t rv = get_remote_addr(sock);
-
-            if (rv != APR_SUCCESS) {
-                return rv;
-            }
-        }
-        *sa = sock->remote_addr;
-    }
-    else {
-        *sa = NULL;
-        return APR_EINVAL;
-    }
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr,
-                                              char **scope_id,
-                                              apr_port_t *port,
-                                              const char *str,
-                                              apr_pool_t *p)
-{
-    const char *ch, *lastchar;
-    int big_port;
-    apr_size_t addrlen;
-
-    *addr = NULL;         /* assume not specified */
-    *scope_id = NULL;     /* assume not specified */
-    *port = 0;            /* assume not specified */
-
-    /* First handle the optional port number.  That may be all that
-     * is specified in the string.
-     */
-    ch = lastchar = str + strlen(str) - 1;
-    while (ch >= str && apr_isdigit(*ch)) {
-        --ch;
-    }
-
-    if (ch < str) {       /* Entire string is the port. */
-        big_port = atoi(str);
-        if (big_port < 1 || big_port > 65535) {
-            return APR_EINVAL;
-        }
-        *port = big_port;
-        return APR_SUCCESS;
-    }
-
-    if (*ch == ':' && ch < lastchar) { /* host and port number specified */
-        if (ch == str) {               /* string starts with ':' -- bad */
-            return APR_EINVAL;
-        }
-        big_port = atoi(ch + 1);
-        if (big_port < 1 || big_port > 65535) {
-            return APR_EINVAL;
-        }
-        *port = big_port;
-        lastchar = ch - 1;
-    }
-
-    /* now handle the hostname */
-    addrlen = lastchar - str + 1;
-
-/* XXX we don't really have to require APR_HAVE_IPV6 for this; 
- * just pass char[] for ipaddr (so we don't depend on struct in6_addr)
- * and always define APR_INET6 
- */
-#if APR_HAVE_IPV6
-    if (*str == '[') {
-        const char *end_bracket = memchr(str, ']', addrlen);
-        struct in6_addr ipaddr;
-        const char *scope_delim;
-
-        if (!end_bracket || end_bracket != lastchar) {
-            *port = 0;
-            return APR_EINVAL;
-        }
-
-        /* handle scope id; this is the only context where it is allowed */
-        scope_delim = memchr(str, '%', addrlen);
-        if (scope_delim) {
-            if (scope_delim == end_bracket - 1) { /* '%' without scope id */
-                *port = 0;
-                return APR_EINVAL;
-            }
-            addrlen = scope_delim - str - 1;
-            *scope_id = apr_palloc(p, end_bracket - scope_delim);
-            memcpy(*scope_id, scope_delim + 1, end_bracket - scope_delim - 1);
-            (*scope_id)[end_bracket - scope_delim - 1] = '\0';
-        }
-        else {
-            addrlen = addrlen - 2; /* minus 2 for '[' and ']' */
-        }
-
-        *addr = apr_palloc(p, addrlen + 1);
-        memcpy(*addr,
-               str + 1,
-               addrlen);
-        (*addr)[addrlen] = '\0';
-        if (apr_inet_pton(AF_INET6, *addr, &ipaddr) != 1) {
-            *addr = NULL;
-            *scope_id = NULL;
-            *port = 0;
-            return APR_EINVAL;
-        }
-    }
-    else 
-#endif
-    {
-        /* XXX If '%' is not a valid char in a DNS name, we *could* check 
-         *     for bogus scope ids first.
-         */
-        *addr = apr_palloc(p, addrlen + 1);
-        memcpy(*addr, str, addrlen);
-        (*addr)[addrlen] = '\0';
-    }
-    return APR_SUCCESS;
-}
-
-#if defined(HAVE_GETADDRINFO)
-
-static apr_status_t call_resolver(apr_sockaddr_t **sa,
-                                  const char *hostname, apr_int32_t family,
-                                  apr_port_t port, apr_int32_t flags, 
-                                  apr_pool_t *p)
-{
-    struct addrinfo hints, *ai, *ai_list;
-    apr_sockaddr_t *prev_sa;
-    int error;
-    char *servname = NULL; 
-
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = family;
-    hints.ai_socktype = SOCK_STREAM;
-#ifdef HAVE_GAI_ADDRCONFIG
-    if (family == APR_UNSPEC) {
-        /* By default, only look up addresses using address types for
-         * which a local interface is configured, i.e. no IPv6 if no
-         * IPv6 interfaces configured. */
-        hints.ai_flags = AI_ADDRCONFIG;
-    }
-#endif
-    if(hostname == NULL) {
-#ifdef AI_PASSIVE 
-        /* If hostname is NULL, assume we are trying to bind to all
-         * interfaces. */
-        hints.ai_flags |= AI_PASSIVE;
-#endif
-        /* getaddrinfo according to RFC 2553 must have either hostname
-         * or servname non-NULL.
-         */
-#ifdef OSF1
-        /* The Tru64 5.0 getaddrinfo() can only resolve services given
-         * by the name listed in /etc/services; a numeric or unknown
-         * servname gets an EAI_SERVICE error.  So just resolve the
-         * appropriate anyaddr and fill in the port later. */
-        hostname = family == AF_INET6 ? "::" : "0.0.0.0";
-        servname = NULL;
-#ifdef AI_NUMERICHOST
-        hints.ai_flags |= AI_NUMERICHOST;
-#endif
-#else
-#if AIX_SERVNAME_HACK
-        if (!port) {
-            servname = "1";
-        }
-        else
-#endif /* AIX_SERVNAME_HACK */
-        servname = apr_itoa(p, port);
-#endif /* OSF1 */
-    }
-    error = getaddrinfo(hostname, servname, &hints, &ai_list);
-#ifdef HAVE_GAI_ADDRCONFIG
-    /*
-     * Using AI_ADDRCONFIG involves some unfortunate guesswork because it
-     * does not consider loopback addresses when trying to determine if
-     * IPv4 or IPv6 is configured on a system (see RFC 3493).
-     * This is a problem if one actually wants to listen on or connect to
-     * the loopback address of a protocol family that is not otherwise
-     * configured on the system. See PR 52709.
-     * To work around some of the problems, retry without AI_ADDRCONFIG
-     * in case of EAI_ADDRFAMILY.
-     * XXX: apr_sockaddr_info_get() should really accept a flag to determine
-     * XXX: if AI_ADDRCONFIG's guesswork is wanted and if the address is
-     * XXX: to be used for listen() or connect().
-     *
-     * In case of EAI_BADFLAGS, AI_ADDRCONFIG is not supported.
-     */
-    if ((family == APR_UNSPEC) && (error == EAI_BADFLAGS
-#ifdef EAI_ADDRFAMILY
-                                   || error == EAI_ADDRFAMILY
-#endif
-                                                             )) {
-        hints.ai_flags &= ~AI_ADDRCONFIG;
-        error = getaddrinfo(hostname, servname, &hints, &ai_list);
-    }
-#endif
-    if (error) {
-#if defined(WIN32)
-        return apr_get_netos_error();
-#else
-        if (error == EAI_SYSTEM) {
-            return errno ? errno : APR_EGENERAL;
-        }
-        else 
-        {
-            /* issues with representing this with APR's error scheme:
-             * glibc uses negative values for these numbers, perhaps so 
-             * they don't conflict with h_errno values...  Tru64 uses 
-             * positive values which conflict with h_errno values
-             */
-#if defined(NEGATIVE_EAI)
-            error = -error;
-#endif
-            return error + APR_OS_START_EAIERR;
-        }
-#endif /* WIN32 */
-    }
-
-    prev_sa = NULL;
-    ai = ai_list;
-    while (ai) { /* while more addresses to report */
-        apr_sockaddr_t *new_sa;
-
-        /* Ignore anything bogus: getaddrinfo in some old versions of
-         * glibc will return AF_UNIX entries for APR_UNSPEC+AI_PASSIVE
-         * lookups. */
-#if APR_HAVE_IPV6
-        if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) {
-#else
-        if (ai->ai_family != AF_INET) {
-#endif
-            ai = ai->ai_next;
-            continue;
-        }
-
-        new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t));
-
-        new_sa->pool = p;
-        memcpy(&new_sa->sa, ai->ai_addr, ai->ai_addrlen);
-        apr_sockaddr_vars_set(new_sa, ai->ai_family, port);
-
-        if (!prev_sa) { /* first element in new list */
-            if (hostname) {
-                new_sa->hostname = apr_pstrdup(p, hostname);
-            }
-            *sa = new_sa;
-        }
-        else {
-            new_sa->hostname = prev_sa->hostname;
-            prev_sa->next = new_sa;
-        }
-
-        prev_sa = new_sa;
-        ai = ai->ai_next;
-    }
-    freeaddrinfo(ai_list);
-
-    if (prev_sa == NULL) {
-        /*
-         * getaddrinfo returned only useless entries and *sa is still empty.
-         * This should be treated as an error.
-         */
-        return APR_EGENERAL;
-    }
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t find_addresses(apr_sockaddr_t **sa, 
-                                   const char *hostname, apr_int32_t family,
-                                   apr_port_t port, apr_int32_t flags, 
-                                   apr_pool_t *p)
-{
-    if (flags & APR_IPV4_ADDR_OK) {
-        apr_status_t error = call_resolver(sa, hostname, AF_INET, port, flags, p);
-
-#if APR_HAVE_IPV6
-        if (error) {
-            family = AF_INET6; /* try again */
-        }
-        else
-#endif
-        return error;
-    }
-#if APR_HAVE_IPV6
-    else if (flags & APR_IPV6_ADDR_OK) {
-        apr_status_t error = call_resolver(sa, hostname, AF_INET6, port, flags, p);
-
-        if (error) {
-            family = AF_INET; /* try again */
-        }
-        else {
-            return APR_SUCCESS;
-        }
-    }
-#endif
-
-    return call_resolver(sa, hostname, family, port, flags, p);
-}
-
-#else /* end of HAVE_GETADDRINFO code */
-
-static apr_status_t find_addresses(apr_sockaddr_t **sa, 
-                                   const char *hostname, apr_int32_t family,
-                                   apr_port_t port, apr_int32_t flags, 
-                                   apr_pool_t *p)
-{
-    struct hostent *hp;
-    apr_sockaddr_t *prev_sa;
-    int curaddr;
-#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
-    defined(HAVE_GETHOSTBYNAME_R) && !defined(BEOS)
-#ifdef GETHOSTBYNAME_R_HOSTENT_DATA
-    struct hostent_data hd;
-#else
-    /* If you see ERANGE, that means GETHOSBYNAME_BUFLEN needs to be
-     * bumped. */
-    char tmp[GETHOSTBYNAME_BUFLEN];
-#endif
-    int hosterror;
-#endif
-    struct hostent hs;
-    struct in_addr ipaddr;
-    char *addr_list[2];
-    const char *orig_hostname = hostname;
-
-    if (hostname == NULL) {
-        /* if we are given a NULL hostname, assume '0.0.0.0' */
-        hostname = "0.0.0.0";
-    }
-
-    if (*hostname >= '0' && *hostname <= '9' &&
-        strspn(hostname, "0123456789.") == strlen(hostname)) {
-
-        ipaddr.s_addr = inet_addr(hostname);
-        addr_list[0] = (char *)&ipaddr;
-        addr_list[1] = NULL; /* just one IP in list */
-        hs.h_addr_list = (char **)addr_list;
-        hp = &hs;
-    }
-    else {
-#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
-    defined(HAVE_GETHOSTBYNAME_R) && !defined(BEOS)
-#if defined(GETHOSTBYNAME_R_HOSTENT_DATA)
-        /* AIX, HP/UX, D/UX et alia */
-        gethostbyname_r(hostname, &hs, &hd);
-        hp = &hs;
-#else
-#if defined(GETHOSTBYNAME_R_GLIBC2)
-        /* Linux glibc2+ */
-        gethostbyname_r(hostname, &hs, tmp, GETHOSTBYNAME_BUFLEN - 1, 
-                        &hp, &hosterror);
-#else
-        /* Solaris, Irix et alia */
-        hp = gethostbyname_r(hostname, &hs, tmp, GETHOSTBYNAME_BUFLEN - 1,
-                             &hosterror);
-#endif /* !defined(GETHOSTBYNAME_R_GLIBC2) */
-        if (!hp) {
-            return (hosterror + APR_OS_START_SYSERR);
-        }
-#endif /* !defined(GETHOSTBYNAME_R_HOSTENT_DATA) */
-#else
-        hp = gethostbyname(hostname);
-#endif
-
-        if (!hp) {
-#ifdef WIN32
-            return apr_get_netos_error();
-#else
-            return (h_errno + APR_OS_START_SYSERR);
-#endif
-        }
-    }
-
-    prev_sa = NULL;
-    curaddr = 0;
-    while (hp->h_addr_list[curaddr]) {
-        apr_sockaddr_t *new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t));
-
-        new_sa->pool = p;
-        new_sa->sa.sin.sin_addr = *(struct in_addr *)hp->h_addr_list[curaddr];
-        apr_sockaddr_vars_set(new_sa, AF_INET, port);
-
-        if (!prev_sa) { /* first element in new list */
-            if (orig_hostname) {
-                new_sa->hostname = apr_pstrdup(p, orig_hostname);
-            }
-            *sa = new_sa;
-        }
-        else {
-            new_sa->hostname = prev_sa->hostname;
-            prev_sa->next = new_sa;
-        }
-
-        prev_sa = new_sa;
-        ++curaddr;
-    }
-
-    if (prev_sa == NULL) {
-        /* this should not happen but no result should be treated as error */
-        return APR_EGENERAL;
-    }
-
-    return APR_SUCCESS;
-}
-
-#endif /* end of !HAVE_GETADDRINFO code */
-
-APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa,
-                                                const char *hostname, 
-                                                apr_int32_t family, apr_port_t port,
-                                                apr_int32_t flags, apr_pool_t *p)
-{
-    apr_int32_t masked;
-    *sa = NULL;
-
-    if ((masked = flags & (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK))) {
-        if (!hostname ||
-            family != APR_UNSPEC ||
-            masked == (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK)) {
-            return APR_EINVAL;
-        }
-#if !APR_HAVE_IPV6
-        if (flags & APR_IPV6_ADDR_OK) {
-            return APR_ENOTIMPL;
-        }
-#endif
-    }
-#if !APR_HAVE_IPV6
-    /* What may happen is that APR is not IPv6-enabled, but we're still
-     * going to call getaddrinfo(), so we have to tell the OS we only
-     * want IPv4 addresses back since we won't know what to do with
-     * IPv6 addresses.
-     */
-    if (family == APR_UNSPEC) {
-        family = APR_INET;
-    }
-#endif
-
-    return find_addresses(sa, hostname, family, port, flags, p);
-}
-
-APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname,
-                                          apr_sockaddr_t *sockaddr,
-                                          apr_int32_t flags)
-{
-#if defined(HAVE_GETNAMEINFO)
-    int rc;
-#if defined(NI_MAXHOST)
-    char tmphostname[NI_MAXHOST];
-#else
-    char tmphostname[256];
-#endif
-
-    /* don't know if it is portable for getnameinfo() to set h_errno;
-     * clear it then see if it was set */
-    SET_H_ERRNO(0);
-
-    /* default flags are NI_NAMREQD; otherwise, getnameinfo() will return
-     * a numeric address string if it fails to resolve the host name;
-     * that is *not* what we want here
-     *
-     * For IPv4-mapped IPv6 addresses, drop down to IPv4 before calling
-     * getnameinfo() to avoid getnameinfo bugs (MacOS X, glibc).
-     */
-#if APR_HAVE_IPV6
-    if (sockaddr->family == AF_INET6 &&
-        IN6_IS_ADDR_V4MAPPED(&sockaddr->sa.sin6.sin6_addr)) {
-        struct sockaddr_in tmpsa;
-        tmpsa.sin_family = AF_INET;
-        tmpsa.sin_port = 0;
-        tmpsa.sin_addr.s_addr = ((apr_uint32_t *)sockaddr->ipaddr_ptr)[3];
-#ifdef SIN6_LEN
-        tmpsa.sin_len = sizeof(tmpsa);
-#endif
-
-        rc = getnameinfo((const struct sockaddr *)&tmpsa, sizeof(tmpsa),
-                         tmphostname, sizeof(tmphostname), NULL, 0,
-                         flags != 0 ? flags : NI_NAMEREQD);
-    }
-    else
-#endif
-    rc = getnameinfo((const struct sockaddr *)&sockaddr->sa, sockaddr->salen,
-                     tmphostname, sizeof(tmphostname), NULL, 0,
-                     flags != 0 ? flags : NI_NAMEREQD);
-    if (rc != 0) {
-        *hostname = NULL;
-
-#ifndef WIN32
-        /* something went wrong. Look at the EAI_ error code */
-        if (rc == EAI_SYSTEM) {
-            /* EAI_SYSTEM      System error returned in errno. */
-            /* IMHO, Implementations that set h_errno a simply broken. */
-            if (h_errno) { /* for broken implementations which set h_errno */
-                return h_errno + APR_OS_START_SYSERR;
-            }
-            else { /* "normal" case */
-                return errno + APR_OS_START_SYSERR;
-            }
-        }
-        else 
-#endif
-        {
-#if defined(NEGATIVE_EAI)
-            if (rc < 0) rc = -rc;
-#endif
-            return rc + APR_OS_START_EAIERR; /* return the EAI_ error */
-        }
-    }
-    *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool, 
-                                                 tmphostname);
-    return APR_SUCCESS;
-#else
-#if APR_HAS_THREADS && !defined(GETHOSTBYADDR_IS_THREAD_SAFE) && \
-    defined(HAVE_GETHOSTBYADDR_R) && !defined(BEOS)
-#ifdef GETHOSTBYNAME_R_HOSTENT_DATA
-    struct hostent_data hd;
-#else
-    char tmp[GETHOSTBYNAME_BUFLEN];
-#endif
-    int hosterror;
-    struct hostent hs, *hptr;
-
-#if defined(GETHOSTBYNAME_R_HOSTENT_DATA)
-    /* AIX, HP/UX, D/UX et alia */
-    gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr, 
-                  sizeof(struct in_addr), AF_INET, &hs, &hd);
-    hptr = &hs;
-#else
-#if defined(GETHOSTBYNAME_R_GLIBC2)
-    /* Linux glibc2+ */
-    gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr, 
-                    sizeof(struct in_addr), AF_INET,
-                    &hs, tmp, GETHOSTBYNAME_BUFLEN - 1, &hptr, &hosterror);
-#else
-    /* Solaris, Irix et alia */
-    hptr = gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr, 
-                           sizeof(struct in_addr), AF_INET,
-                           &hs, tmp, GETHOSTBYNAME_BUFLEN, &hosterror);
-#endif /* !defined(GETHOSTBYNAME_R_GLIBC2) */
-    if (!hptr) {
-        *hostname = NULL;
-        return hosterror + APR_OS_START_SYSERR;
-    }
-#endif /* !defined(GETHOSTBYNAME_R_HOSTENT_DATA) */
-#else
-    struct hostent *hptr;
-    hptr = gethostbyaddr((char *)&sockaddr->sa.sin.sin_addr, 
-                         sizeof(struct in_addr), AF_INET);
-#endif
-
-    if (hptr) {
-        *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool, hptr->h_name);
-        return APR_SUCCESS;
-    }
-    *hostname = NULL;
-#if defined(WIN32)
-    return apr_get_netos_error();
-#elif defined(OS2)
-    return h_errno;
-#else
-    return h_errno + APR_OS_START_SYSERR;
-#endif
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr,
-                                            const char *servname)
-{
-#if APR_HAS_THREADS && !defined(GETSERVBYNAME_IS_THREAD_SAFE) && \
-    defined(HAVE_GETSERVBYNAME_R) && \
-    (defined(GETSERVBYNAME_R_GLIBC2) || defined(GETSERVBYNAME_R_SOLARIS) || \
-     defined(GETSERVBYNAME_R_OSF1))
-    struct servent se;
-#if defined(GETSERVBYNAME_R_OSF1)
-    struct servent_data sed;
-
-    memset(&sed, 0, sizeof(sed)); /* must zero fill before use */
-#else
-#if defined(GETSERVBYNAME_R_GLIBC2)
-    struct servent *res;
-#endif
-    char buf[1024];
-#endif
-#else
-    struct servent *se;
-#endif
-
-    if (servname == NULL)
-        return APR_EINVAL;
-
-#if APR_HAS_THREADS && !defined(GETSERVBYNAME_IS_THREAD_SAFE) && \
-    defined(HAVE_GETSERVBYNAME_R) && \
-    (defined(GETSERVBYNAME_R_GLIBC2) || defined(GETSERVBYNAME_R_SOLARIS) || \
-     defined(GETSERVBYNAME_R_OSF1))
-#if defined(GETSERVBYNAME_R_GLIBC2)
-    if (getservbyname_r(servname, NULL,
-                        &se, buf, sizeof(buf), &res) == 0 && res != NULL) {
-        sockaddr->port = ntohs(res->s_port);
-        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
-        sockaddr->sa.sin.sin_port = res->s_port;
-        return APR_SUCCESS;
-    }
-#elif defined(GETSERVBYNAME_R_SOLARIS)
-    if (getservbyname_r(servname, NULL, &se, buf, sizeof(buf)) != NULL) {
-        sockaddr->port = ntohs(se.s_port);
-        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
-        sockaddr->sa.sin.sin_port = se.s_port;
-        return APR_SUCCESS;
-    }
-#elif defined(GETSERVBYNAME_R_OSF1)
-    if (getservbyname_r(servname, NULL, &se, &sed) == 0) {
-        sockaddr->port = ntohs(se.s_port);
-        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
-        sockaddr->sa.sin.sin_port = se.s_port;
-        return APR_SUCCESS;
-    }
-#endif
-#else
-    if ((se = getservbyname(servname, NULL)) != NULL){
-        sockaddr->port = ntohs(se->s_port);
-        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
-        sockaddr->sa.sin.sin_port = se->s_port;
-        return APR_SUCCESS;
-    }
-#endif
-    return APR_ENOENT;
-}
-
-#define V4MAPPED_EQUAL(a,b)                                   \
-((a)->sa.sin.sin_family == AF_INET &&                         \
- (b)->sa.sin.sin_family == AF_INET6 &&                        \
- IN6_IS_ADDR_V4MAPPED((struct in6_addr *)(b)->ipaddr_ptr) &&  \
- !memcmp((a)->ipaddr_ptr,                                     \
-         &((struct in6_addr *)(b)->ipaddr_ptr)->s6_addr[12],  \
-         (a)->ipaddr_len))
-
-APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1,
-                                    const apr_sockaddr_t *addr2)
-{
-    if (addr1->ipaddr_len == addr2->ipaddr_len &&
-        !memcmp(addr1->ipaddr_ptr, addr2->ipaddr_ptr, addr1->ipaddr_len)) {
-        return 1;
-    }
-#if APR_HAVE_IPV6
-    if (V4MAPPED_EQUAL(addr1, addr2)) {
-        return 1;
-    }
-    if (V4MAPPED_EQUAL(addr2, addr1)) {
-        return 1;
-    }
-#endif
-    return 0; /* not equal */
-}
-
-static apr_status_t parse_network(apr_ipsubnet_t *ipsub, const char *network)
-{
-    /* legacy syntax for ip addrs: a.b.c. ==> a.b.c.0/24 for example */
-    int shift;
-    char *s, *t;
-    int octet;
-    char buf[sizeof "255.255.255.255"];
-
-    if (strlen(network) < sizeof buf) {
-        strcpy(buf, network);
-    }
-    else {
-        return APR_EBADIP;
-    }
-
-    /* parse components */
-    s = buf;
-    ipsub->sub[0] = 0;
-    ipsub->mask[0] = 0;
-    shift = 24;
-    while (*s) {
-        t = s;
-        if (!apr_isdigit(*t)) {
-            return APR_EBADIP;
-        }
-        while (apr_isdigit(*t)) {
-            ++t;
-        }
-        if (*t == '.') {
-            *t++ = 0;
-        }
-        else if (*t) {
-            return APR_EBADIP;
-        }
-        if (shift < 0) {
-            return APR_EBADIP;
-        }
-        octet = atoi(s);
-        if (octet < 0 || octet > 255) {
-            return APR_EBADIP;
-        }
-        ipsub->sub[0] |= octet << shift;
-        ipsub->mask[0] |= 0xFFUL << shift;
-        s = t;
-        shift -= 8;
-    }
-    ipsub->sub[0] = ntohl(ipsub->sub[0]);
-    ipsub->mask[0] = ntohl(ipsub->mask[0]);
-    ipsub->family = AF_INET;
-    return APR_SUCCESS;
-}
-
-/* return values:
- * APR_EINVAL     not an IP address; caller should see if it is something else
- * APR_BADIP      IP address portion is is not valid
- * APR_BADMASK    mask portion is not valid
- */
-
-static apr_status_t parse_ip(apr_ipsubnet_t *ipsub, const char *ipstr, int network_allowed)
-{
-    /* supported flavors of IP:
-     *
-     * . IPv6 numeric address string (e.g., "fe80::1")
-     * 
-     *   IMPORTANT: Don't store IPv4-mapped IPv6 address as an IPv6 address.
-     *
-     * . IPv4 numeric address string (e.g., "127.0.0.1")
-     *
-     * . IPv4 network string (e.g., "9.67")
-     *
-     *   IMPORTANT: This network form is only allowed if network_allowed is on.
-     */
-    int rc;
-
-#if APR_HAVE_IPV6
-    rc = apr_inet_pton(AF_INET6, ipstr, ipsub->sub);
-    if (rc == 1) {
-        if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)ipsub->sub)) {
-            /* apr_ipsubnet_test() assumes that we don't create IPv4-mapped IPv6
-             * addresses; this of course forces the user to specify IPv4 addresses
-             * in a.b.c.d style instead of ::ffff:a.b.c.d style.
-             */
-            return APR_EBADIP;
-        }
-        ipsub->family = AF_INET6;
-    }
-    else
-#endif
-    {
-        rc = apr_inet_pton(AF_INET, ipstr, ipsub->sub);
-        if (rc == 1) {
-            ipsub->family = AF_INET;
-        }
-    }
-    if (rc != 1) {
-        if (network_allowed) {
-            return parse_network(ipsub, ipstr);
-        }
-        else {
-            return APR_EBADIP;
-        }
-    }
-    return APR_SUCCESS;
-}
-
-static int looks_like_ip(const char *ipstr)
-{
-    if (strchr(ipstr, ':')) {
-        /* definitely not a hostname; assume it is intended to be an IPv6 address */
-        return 1;
-    }
-
-    /* simple IPv4 address string check */
-    while ((*ipstr == '.') || apr_isdigit(*ipstr))
-        ipstr++;
-    return (*ipstr == '\0');
-}
-
-static void fix_subnet(apr_ipsubnet_t *ipsub)
-{
-    /* in case caller specified more bits in network address than are
-     * valid according to the mask, turn off the extra bits
-     */
-    int i;
-
-    for (i = 0; i < sizeof ipsub->mask / sizeof(apr_int32_t); i++) {
-        ipsub->sub[i] &= ipsub->mask[i];
-    }
-}
-
-/* be sure not to store any IPv4 address as a v4-mapped IPv6 address */
-APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char *ipstr, 
-                                              const char *mask_or_numbits, apr_pool_t *p)
-{
-    apr_status_t rv;
-    char *endptr;
-    long bits, maxbits = 32;
-
-    /* filter out stuff which doesn't look remotely like an IP address; this helps 
-     * callers like mod_access which have a syntax allowing hostname or IP address;
-     * APR_EINVAL tells the caller that it was probably not intended to be an IP
-     * address
-     */
-    if (!looks_like_ip(ipstr)) {
-        return APR_EINVAL;
-    }
-
-    *ipsub = apr_pcalloc(p, sizeof(apr_ipsubnet_t));
-
-    /* assume ipstr is an individual IP address, not a subnet */
-    memset((*ipsub)->mask, 0xFF, sizeof (*ipsub)->mask);
-
-    rv = parse_ip(*ipsub, ipstr, mask_or_numbits == NULL);
-    if (rv != APR_SUCCESS) {
-        return rv;
-    }
-
-    if (mask_or_numbits) {
-#if APR_HAVE_IPV6
-        if ((*ipsub)->family == AF_INET6) {
-            maxbits = 128;
-        }
-#endif
-        bits = strtol(mask_or_numbits, &endptr, 10);
-        if (*endptr == '\0' && bits > 0 && bits <= maxbits) {
-            /* valid num-bits string; fill in mask appropriately */
-            int cur_entry = 0;
-            apr_int32_t cur_bit_value;
-
-            memset((*ipsub)->mask, 0, sizeof (*ipsub)->mask);
-            while (bits > 32) {
-                (*ipsub)->mask[cur_entry] = 0xFFFFFFFF; /* all 32 bits */
-                bits -= 32;
-                ++cur_entry;
-            }
-            cur_bit_value = 0x80000000;
-            while (bits) {
-                (*ipsub)->mask[cur_entry] |= cur_bit_value;
-                --bits;
-                cur_bit_value /= 2;
-            }
-            (*ipsub)->mask[cur_entry] = htonl((*ipsub)->mask[cur_entry]);
-        }
-        else if (apr_inet_pton(AF_INET, mask_or_numbits, (*ipsub)->mask) == 1 &&
-            (*ipsub)->family == AF_INET) {
-            /* valid IPv4 netmask */
-        }
-        else {
-            return APR_EBADMASK;
-        }
-    }
-
-    fix_subnet(*ipsub);
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa)
-{
-#if APR_HAVE_IPV6
-    /* XXX This line will segv on Win32 build with APR_HAVE_IPV6,
-     * but without the IPV6 drivers installed.
-     */
-    if (sa->family == AF_INET) {
-        if (ipsub->family == AF_INET &&
-            ((sa->sa.sin.sin_addr.s_addr & ipsub->mask[0]) == ipsub->sub[0])) {
-            return 1;
-        }
-    }
-    else if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)sa->ipaddr_ptr)) {
-        if (ipsub->family == AF_INET &&
-            (((apr_uint32_t *)sa->ipaddr_ptr)[3] & ipsub->mask[0]) == ipsub->sub[0]) {
-            return 1;
-        }
-    }
-    else if (sa->family == AF_INET6 && ipsub->family == AF_INET6) {
-        apr_uint32_t *addr = (apr_uint32_t *)sa->ipaddr_ptr;
-
-        if ((addr[0] & ipsub->mask[0]) == ipsub->sub[0] &&
-            (addr[1] & ipsub->mask[1]) == ipsub->sub[1] &&
-            (addr[2] & ipsub->mask[2]) == ipsub->sub[2] &&
-            (addr[3] & ipsub->mask[3]) == ipsub->sub[3]) {
-            return 1;
-        }
-    }
-#else
-    if ((sa->sa.sin.sin_addr.s_addr & ipsub->mask[0]) == ipsub->sub[0]) {
-        return 1;
-    }
-#endif /* APR_HAVE_IPV6 */
-    return 0; /* no match */
-}

Copied: vendor/apache/apr/1.5.2/network_io/unix/sockaddr.c (from rev 9273, vendor/apache/apr/dist/network_io/unix/sockaddr.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/unix/sockaddr.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/unix/sockaddr.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1112 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_networkio.h"
+#include "apr_strings.h"
+#include "apr.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include "apr_private.h"
+
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#define APR_WANT_STRFUNC
+#include "apr_want.h"
+
+struct apr_ipsubnet_t {
+    int family;
+#if APR_HAVE_IPV6
+    apr_uint32_t sub[4]; /* big enough for IPv4 and IPv6 addresses */
+    apr_uint32_t mask[4];
+#else
+    apr_uint32_t sub[1];
+    apr_uint32_t mask[1];
+#endif
+};
+
+#if !defined(NETWARE) && !defined(WIN32)
+#ifdef HAVE_SET_H_ERRNO
+#define SET_H_ERRNO(newval) set_h_errno(newval)
+#else
+#define SET_H_ERRNO(newval) h_errno = (newval)
+#endif
+#else
+#define SET_H_ERRNO(newval)
+#endif
+
+#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
+    defined(HAVE_GETHOSTBYNAME_R)
+/* This is the maximum size that may be returned from the reentrant
+ * gethostbyname_r function.  If the system tries to use more, it
+ * should return ERANGE.
+ */
+#define GETHOSTBYNAME_BUFLEN 512
+#endif
+
+#ifdef _AIX
+/* Some levels of AIX getaddrinfo() don't like servname = "0", so
+ * set servname to "1" when port is 0 and fix it up later.
+ */
+#define AIX_SERVNAME_HACK 1
+#else
+#define AIX_SERVNAME_HACK 0
+#endif
+
+#ifdef _WIN32_WCE
+/* XXX: BS solution.  Need an HAVE_GETSERVBYNAME and actually
+ * do something here, to provide the obvious proto mappings.
+ */
+static void *getservbyname(const char *name, const char *proto)
+{
+    return NULL;
+}
+#endif
+
+static apr_status_t get_local_addr(apr_socket_t *sock)
+{
+    sock->local_addr->salen = sizeof(sock->local_addr->sa);
+    if (getsockname(sock->socketdes, (struct sockaddr *)&sock->local_addr->sa,
+                    &sock->local_addr->salen) < 0) {
+        return apr_get_netos_error();
+    }
+    else {
+        sock->local_port_unknown = sock->local_interface_unknown = 0;
+        /* XXX assumes sin_port and sin6_port at same offset */
+        sock->local_addr->port = ntohs(sock->local_addr->sa.sin.sin_port);
+        return APR_SUCCESS;
+    }
+}
+
+static apr_status_t get_remote_addr(apr_socket_t *sock)
+{
+    sock->remote_addr->salen = sizeof(sock->remote_addr->sa);
+    if (getpeername(sock->socketdes, (struct sockaddr *)&sock->remote_addr->sa,
+                    &sock->remote_addr->salen) < 0) {
+        return apr_get_netos_error();
+    }
+    else {
+        sock->remote_addr_unknown = 0;
+        /* XXX assumes sin_port and sin6_port at same offset */
+        sock->remote_addr->port = ntohs(sock->remote_addr->sa.sin.sin_port);
+        return APR_SUCCESS;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_sockaddr_ip_getbuf(char *buf, apr_size_t buflen,
+                                                 apr_sockaddr_t *sockaddr)
+{
+    if (!apr_inet_ntop(sockaddr->family, sockaddr->ipaddr_ptr, buf, buflen)) {
+        return APR_ENOSPC;
+    }
+
+#if APR_HAVE_IPV6
+    if (sockaddr->family == AF_INET6 
+        && IN6_IS_ADDR_V4MAPPED((struct in6_addr *)sockaddr->ipaddr_ptr)
+        && buflen > strlen("::ffff:")) {
+        /* This is an IPv4-mapped IPv6 address; drop the leading
+         * part of the address string so we're left with the familiar
+         * IPv4 format.
+         */
+        memmove(buf, buf + strlen("::ffff:"),
+                strlen(buf + strlen("::ffff:"))+1);
+    }
+#endif
+    /* ensure NUL termination if the buffer is too short */
+    buf[buflen-1] = '\0';
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr,
+                                              apr_sockaddr_t *sockaddr)
+{
+    *addr = apr_palloc(sockaddr->pool, sockaddr->addr_str_len);
+    return apr_sockaddr_ip_getbuf(*addr, sockaddr->addr_str_len, sockaddr);
+}
+
+void apr_sockaddr_vars_set(apr_sockaddr_t *addr, int family, apr_port_t port)
+{
+    addr->family = family;
+    addr->sa.sin.sin_family = family;
+    if (port) {
+        /* XXX IPv6: assumes sin_port and sin6_port at same offset */
+        addr->sa.sin.sin_port = htons(port);
+        addr->port = port;
+    }
+#if AIX_SERVNAME_HACK
+    else {
+        addr->sa.sin.sin_port = htons(port);
+    }
+#endif
+
+    if (family == APR_INET) {
+        addr->salen = sizeof(struct sockaddr_in);
+        addr->addr_str_len = 16;
+        addr->ipaddr_ptr = &(addr->sa.sin.sin_addr);
+        addr->ipaddr_len = sizeof(struct in_addr);
+    }
+#if APR_HAVE_IPV6
+    else if (family == APR_INET6) {
+        addr->salen = sizeof(struct sockaddr_in6);
+        addr->addr_str_len = 46;
+        addr->ipaddr_ptr = &(addr->sa.sin6.sin6_addr);
+        addr->ipaddr_len = sizeof(struct in6_addr);
+    }
+#endif
+}
+
+APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa,
+                                           apr_interface_e which,
+                                           apr_socket_t *sock)
+{
+    if (which == APR_LOCAL) {
+        if (sock->local_interface_unknown || sock->local_port_unknown) {
+            apr_status_t rv = get_local_addr(sock);
+
+            if (rv != APR_SUCCESS) {
+                return rv;
+            }
+        }
+        *sa = sock->local_addr;
+    }
+    else if (which == APR_REMOTE) {
+        if (sock->remote_addr_unknown) {
+            apr_status_t rv = get_remote_addr(sock);
+
+            if (rv != APR_SUCCESS) {
+                return rv;
+            }
+        }
+        *sa = sock->remote_addr;
+    }
+    else {
+        *sa = NULL;
+        return APR_EINVAL;
+    }
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr,
+                                              char **scope_id,
+                                              apr_port_t *port,
+                                              const char *str,
+                                              apr_pool_t *p)
+{
+    const char *ch, *lastchar;
+    int big_port;
+    apr_size_t addrlen;
+
+    *addr = NULL;         /* assume not specified */
+    *scope_id = NULL;     /* assume not specified */
+    *port = 0;            /* assume not specified */
+
+    /* First handle the optional port number.  That may be all that
+     * is specified in the string.
+     */
+    ch = lastchar = str + strlen(str) - 1;
+    while (ch >= str && apr_isdigit(*ch)) {
+        --ch;
+    }
+
+    if (ch < str) {       /* Entire string is the port. */
+        big_port = atoi(str);
+        if (big_port < 1 || big_port > 65535) {
+            return APR_EINVAL;
+        }
+        *port = big_port;
+        return APR_SUCCESS;
+    }
+
+    if (*ch == ':' && ch < lastchar) { /* host and port number specified */
+        if (ch == str) {               /* string starts with ':' -- bad */
+            return APR_EINVAL;
+        }
+        big_port = atoi(ch + 1);
+        if (big_port < 1 || big_port > 65535) {
+            return APR_EINVAL;
+        }
+        *port = big_port;
+        lastchar = ch - 1;
+    }
+
+    /* now handle the hostname */
+    addrlen = lastchar - str + 1;
+
+/* XXX we don't really have to require APR_HAVE_IPV6 for this; 
+ * just pass char[] for ipaddr (so we don't depend on struct in6_addr)
+ * and always define APR_INET6 
+ */
+#if APR_HAVE_IPV6
+    if (*str == '[') {
+        const char *end_bracket = memchr(str, ']', addrlen);
+        struct in6_addr ipaddr;
+        const char *scope_delim;
+
+        if (!end_bracket || end_bracket != lastchar) {
+            *port = 0;
+            return APR_EINVAL;
+        }
+
+        /* handle scope id; this is the only context where it is allowed */
+        scope_delim = memchr(str, '%', addrlen);
+        if (scope_delim) {
+            if (scope_delim == end_bracket - 1) { /* '%' without scope id */
+                *port = 0;
+                return APR_EINVAL;
+            }
+            addrlen = scope_delim - str - 1;
+            *scope_id = apr_palloc(p, end_bracket - scope_delim);
+            memcpy(*scope_id, scope_delim + 1, end_bracket - scope_delim - 1);
+            (*scope_id)[end_bracket - scope_delim - 1] = '\0';
+        }
+        else {
+            addrlen = addrlen - 2; /* minus 2 for '[' and ']' */
+        }
+
+        *addr = apr_palloc(p, addrlen + 1);
+        memcpy(*addr,
+               str + 1,
+               addrlen);
+        (*addr)[addrlen] = '\0';
+        if (apr_inet_pton(AF_INET6, *addr, &ipaddr) != 1) {
+            *addr = NULL;
+            *scope_id = NULL;
+            *port = 0;
+            return APR_EINVAL;
+        }
+    }
+    else 
+#endif
+    {
+        /* XXX If '%' is not a valid char in a DNS name, we *could* check 
+         *     for bogus scope ids first.
+         */
+        *addr = apr_palloc(p, addrlen + 1);
+        memcpy(*addr, str, addrlen);
+        (*addr)[addrlen] = '\0';
+    }
+    return APR_SUCCESS;
+}
+
+#if defined(HAVE_GETADDRINFO)
+
+static apr_status_t call_resolver(apr_sockaddr_t **sa,
+                                  const char *hostname, apr_int32_t family,
+                                  apr_port_t port, apr_int32_t flags, 
+                                  apr_pool_t *p)
+{
+    struct addrinfo hints, *ai, *ai_list;
+    apr_sockaddr_t *prev_sa;
+    int error;
+    char *servname = NULL; 
+
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = family;
+    hints.ai_socktype = SOCK_STREAM;
+#ifdef HAVE_GAI_ADDRCONFIG
+    if (family == APR_UNSPEC) {
+        /* By default, only look up addresses using address types for
+         * which a local interface is configured, i.e. no IPv6 if no
+         * IPv6 interfaces configured. */
+        hints.ai_flags = AI_ADDRCONFIG;
+    }
+#endif
+
+#ifdef __MVS__
+    /* z/OS will not return IPv4 address under AF_UNSPEC if any IPv6 results 
+     * are returned, w/o AI_ALL. 
+     */
+    if (family == APR_UNSPEC) { 
+       hints.ai_flags |= AI_ALL;
+    }
+#endif
+
+    if(hostname == NULL) {
+#ifdef AI_PASSIVE 
+        /* If hostname is NULL, assume we are trying to bind to all
+         * interfaces. */
+        hints.ai_flags |= AI_PASSIVE;
+#endif
+        /* getaddrinfo according to RFC 2553 must have either hostname
+         * or servname non-NULL.
+         */
+#ifdef OSF1
+        /* The Tru64 5.0 getaddrinfo() can only resolve services given
+         * by the name listed in /etc/services; a numeric or unknown
+         * servname gets an EAI_SERVICE error.  So just resolve the
+         * appropriate anyaddr and fill in the port later. */
+        hostname = family == AF_INET6 ? "::" : "0.0.0.0";
+        servname = NULL;
+#ifdef AI_NUMERICHOST
+        hints.ai_flags |= AI_NUMERICHOST;
+#endif
+#else
+#if AIX_SERVNAME_HACK
+        if (!port) {
+            servname = "1";
+        }
+        else
+#endif /* AIX_SERVNAME_HACK */
+        servname = apr_itoa(p, port);
+#endif /* OSF1 */
+    }
+    error = getaddrinfo(hostname, servname, &hints, &ai_list);
+#ifdef HAVE_GAI_ADDRCONFIG
+    /*
+     * Using AI_ADDRCONFIG involves some unfortunate guesswork because it
+     * does not consider loopback addresses when trying to determine if
+     * IPv4 or IPv6 is configured on a system (see RFC 3493).
+     * This is a problem if one actually wants to listen on or connect to
+     * the loopback address of a protocol family that is not otherwise
+     * configured on the system. See PR 52709.
+     * To work around some of the problems, retry without AI_ADDRCONFIG
+     * in case of EAI_ADDRFAMILY.
+     * XXX: apr_sockaddr_info_get() should really accept a flag to determine
+     * XXX: if AI_ADDRCONFIG's guesswork is wanted and if the address is
+     * XXX: to be used for listen() or connect().
+     *
+     * In case of EAI_BADFLAGS, AI_ADDRCONFIG is not supported.
+     */
+    if ((family == APR_UNSPEC) && (error == EAI_BADFLAGS
+#ifdef EAI_ADDRFAMILY
+                                   || error == EAI_ADDRFAMILY
+#endif
+                                                             )) {
+        hints.ai_flags &= ~AI_ADDRCONFIG;
+        error = getaddrinfo(hostname, servname, &hints, &ai_list);
+    }
+#endif
+    if (error) {
+#if defined(WIN32)
+        return apr_get_netos_error();
+#else
+        if (error == EAI_SYSTEM) {
+            return errno ? errno : APR_EGENERAL;
+        }
+        else 
+        {
+            /* issues with representing this with APR's error scheme:
+             * glibc uses negative values for these numbers, perhaps so 
+             * they don't conflict with h_errno values...  Tru64 uses 
+             * positive values which conflict with h_errno values
+             */
+#if defined(NEGATIVE_EAI)
+            error = -error;
+#endif
+            return error + APR_OS_START_EAIERR;
+        }
+#endif /* WIN32 */
+    }
+
+    prev_sa = NULL;
+    ai = ai_list;
+    while (ai) { /* while more addresses to report */
+        apr_sockaddr_t *new_sa;
+
+        /* Ignore anything bogus: getaddrinfo in some old versions of
+         * glibc will return AF_UNIX entries for APR_UNSPEC+AI_PASSIVE
+         * lookups. */
+#if APR_HAVE_IPV6
+        if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) {
+#else
+        if (ai->ai_family != AF_INET) {
+#endif
+            ai = ai->ai_next;
+            continue;
+        }
+
+        new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t));
+
+        new_sa->pool = p;
+        memcpy(&new_sa->sa, ai->ai_addr, ai->ai_addrlen);
+        apr_sockaddr_vars_set(new_sa, ai->ai_family, port);
+
+        if (!prev_sa) { /* first element in new list */
+            if (hostname) {
+                new_sa->hostname = apr_pstrdup(p, hostname);
+            }
+            *sa = new_sa;
+        }
+        else {
+            new_sa->hostname = prev_sa->hostname;
+            prev_sa->next = new_sa;
+        }
+
+        prev_sa = new_sa;
+        ai = ai->ai_next;
+    }
+    freeaddrinfo(ai_list);
+
+    if (prev_sa == NULL) {
+        /*
+         * getaddrinfo returned only useless entries and *sa is still empty.
+         * This should be treated as an error.
+         */
+        return APR_EGENERAL;
+    }
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t find_addresses(apr_sockaddr_t **sa, 
+                                   const char *hostname, apr_int32_t family,
+                                   apr_port_t port, apr_int32_t flags, 
+                                   apr_pool_t *p)
+{
+    if (flags & APR_IPV4_ADDR_OK) {
+        apr_status_t error = call_resolver(sa, hostname, AF_INET, port, flags, p);
+
+#if APR_HAVE_IPV6
+        if (error) {
+            family = AF_INET6; /* try again */
+        }
+        else
+#endif
+        return error;
+    }
+#if APR_HAVE_IPV6
+    else if (flags & APR_IPV6_ADDR_OK) {
+        apr_status_t error = call_resolver(sa, hostname, AF_INET6, port, flags, p);
+
+        if (error) {
+            family = AF_INET; /* try again */
+        }
+        else {
+            return APR_SUCCESS;
+        }
+    }
+#endif
+
+    return call_resolver(sa, hostname, family, port, flags, p);
+}
+
+#else /* end of HAVE_GETADDRINFO code */
+
+static apr_status_t find_addresses(apr_sockaddr_t **sa, 
+                                   const char *hostname, apr_int32_t family,
+                                   apr_port_t port, apr_int32_t flags, 
+                                   apr_pool_t *p)
+{
+    struct hostent *hp;
+    apr_sockaddr_t *prev_sa;
+    int curaddr;
+#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
+    defined(HAVE_GETHOSTBYNAME_R) && !defined(BEOS)
+#ifdef GETHOSTBYNAME_R_HOSTENT_DATA
+    struct hostent_data hd;
+#else
+    /* If you see ERANGE, that means GETHOSBYNAME_BUFLEN needs to be
+     * bumped. */
+    char tmp[GETHOSTBYNAME_BUFLEN];
+#endif
+    int hosterror;
+#endif
+    struct hostent hs;
+    struct in_addr ipaddr;
+    char *addr_list[2];
+    const char *orig_hostname = hostname;
+
+    if (hostname == NULL) {
+        /* if we are given a NULL hostname, assume '0.0.0.0' */
+        hostname = "0.0.0.0";
+    }
+
+    if (*hostname >= '0' && *hostname <= '9' &&
+        strspn(hostname, "0123456789.") == strlen(hostname)) {
+
+        ipaddr.s_addr = inet_addr(hostname);
+        addr_list[0] = (char *)&ipaddr;
+        addr_list[1] = NULL; /* just one IP in list */
+        hs.h_addr_list = (char **)addr_list;
+        hp = &hs;
+    }
+    else {
+#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
+    defined(HAVE_GETHOSTBYNAME_R) && !defined(BEOS)
+#if defined(GETHOSTBYNAME_R_HOSTENT_DATA)
+        /* AIX, HP/UX, D/UX et alia */
+        gethostbyname_r(hostname, &hs, &hd);
+        hp = &hs;
+#else
+#if defined(GETHOSTBYNAME_R_GLIBC2)
+        /* Linux glibc2+ */
+        gethostbyname_r(hostname, &hs, tmp, GETHOSTBYNAME_BUFLEN - 1, 
+                        &hp, &hosterror);
+#else
+        /* Solaris, Irix et alia */
+        hp = gethostbyname_r(hostname, &hs, tmp, GETHOSTBYNAME_BUFLEN - 1,
+                             &hosterror);
+#endif /* !defined(GETHOSTBYNAME_R_GLIBC2) */
+        if (!hp) {
+            return (hosterror + APR_OS_START_SYSERR);
+        }
+#endif /* !defined(GETHOSTBYNAME_R_HOSTENT_DATA) */
+#else
+        hp = gethostbyname(hostname);
+#endif
+
+        if (!hp) {
+#ifdef WIN32
+            return apr_get_netos_error();
+#else
+            return (h_errno + APR_OS_START_SYSERR);
+#endif
+        }
+    }
+
+    prev_sa = NULL;
+    curaddr = 0;
+    while (hp->h_addr_list[curaddr]) {
+        apr_sockaddr_t *new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t));
+
+        new_sa->pool = p;
+        new_sa->sa.sin.sin_addr = *(struct in_addr *)hp->h_addr_list[curaddr];
+        apr_sockaddr_vars_set(new_sa, AF_INET, port);
+
+        if (!prev_sa) { /* first element in new list */
+            if (orig_hostname) {
+                new_sa->hostname = apr_pstrdup(p, orig_hostname);
+            }
+            *sa = new_sa;
+        }
+        else {
+            new_sa->hostname = prev_sa->hostname;
+            prev_sa->next = new_sa;
+        }
+
+        prev_sa = new_sa;
+        ++curaddr;
+    }
+
+    if (prev_sa == NULL) {
+        /* this should not happen but no result should be treated as error */
+        return APR_EGENERAL;
+    }
+
+    return APR_SUCCESS;
+}
+
+#endif /* end of !HAVE_GETADDRINFO code */
+
+APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa,
+                                                const char *hostname, 
+                                                apr_int32_t family, apr_port_t port,
+                                                apr_int32_t flags, apr_pool_t *p)
+{
+    apr_int32_t masked;
+    *sa = NULL;
+
+    if ((masked = flags & (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK))) {
+        if (!hostname ||
+            family != APR_UNSPEC ||
+            masked == (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK)) {
+            return APR_EINVAL;
+        }
+#if !APR_HAVE_IPV6
+        if (flags & APR_IPV6_ADDR_OK) {
+            return APR_ENOTIMPL;
+        }
+#endif
+    }
+#if !APR_HAVE_IPV6
+    /* What may happen is that APR is not IPv6-enabled, but we're still
+     * going to call getaddrinfo(), so we have to tell the OS we only
+     * want IPv4 addresses back since we won't know what to do with
+     * IPv6 addresses.
+     */
+    if (family == APR_UNSPEC) {
+        family = APR_INET;
+    }
+#endif
+
+    return find_addresses(sa, hostname, family, port, flags, p);
+}
+
+APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname,
+                                          apr_sockaddr_t *sockaddr,
+                                          apr_int32_t flags)
+{
+#if defined(HAVE_GETNAMEINFO)
+    int rc;
+#if defined(NI_MAXHOST)
+    char tmphostname[NI_MAXHOST];
+#else
+    char tmphostname[256];
+#endif
+
+    /* don't know if it is portable for getnameinfo() to set h_errno;
+     * clear it then see if it was set */
+    SET_H_ERRNO(0);
+
+    /* default flags are NI_NAMREQD; otherwise, getnameinfo() will return
+     * a numeric address string if it fails to resolve the host name;
+     * that is *not* what we want here
+     *
+     * For IPv4-mapped IPv6 addresses, drop down to IPv4 before calling
+     * getnameinfo() to avoid getnameinfo bugs (MacOS X, glibc).
+     */
+#if APR_HAVE_IPV6
+    if (sockaddr->family == AF_INET6 &&
+        IN6_IS_ADDR_V4MAPPED(&sockaddr->sa.sin6.sin6_addr)) {
+        struct sockaddr_in tmpsa;
+        tmpsa.sin_family = AF_INET;
+        tmpsa.sin_port = 0;
+        tmpsa.sin_addr.s_addr = ((apr_uint32_t *)sockaddr->ipaddr_ptr)[3];
+#ifdef SIN6_LEN
+        tmpsa.sin_len = sizeof(tmpsa);
+#endif
+
+        rc = getnameinfo((const struct sockaddr *)&tmpsa, sizeof(tmpsa),
+                         tmphostname, sizeof(tmphostname), NULL, 0,
+                         flags != 0 ? flags : NI_NAMEREQD);
+    }
+    else
+#endif
+    rc = getnameinfo((const struct sockaddr *)&sockaddr->sa, sockaddr->salen,
+                     tmphostname, sizeof(tmphostname), NULL, 0,
+                     flags != 0 ? flags : NI_NAMEREQD);
+    if (rc != 0) {
+        *hostname = NULL;
+
+#ifndef WIN32
+        /* something went wrong. Look at the EAI_ error code */
+        if (rc == EAI_SYSTEM) {
+            /* EAI_SYSTEM      System error returned in errno. */
+            /* IMHO, Implementations that set h_errno a simply broken. */
+            if (h_errno) { /* for broken implementations which set h_errno */
+                return h_errno + APR_OS_START_SYSERR;
+            }
+            else { /* "normal" case */
+                return errno + APR_OS_START_SYSERR;
+            }
+        }
+        else 
+#endif
+        {
+#if defined(NEGATIVE_EAI)
+            if (rc < 0) rc = -rc;
+#endif
+            return rc + APR_OS_START_EAIERR; /* return the EAI_ error */
+        }
+    }
+    *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool, 
+                                                 tmphostname);
+    return APR_SUCCESS;
+#else
+#if APR_HAS_THREADS && !defined(GETHOSTBYADDR_IS_THREAD_SAFE) && \
+    defined(HAVE_GETHOSTBYADDR_R) && !defined(BEOS)
+#ifdef GETHOSTBYNAME_R_HOSTENT_DATA
+    struct hostent_data hd;
+#else
+    char tmp[GETHOSTBYNAME_BUFLEN];
+#endif
+    int hosterror;
+    struct hostent hs, *hptr;
+
+#if defined(GETHOSTBYNAME_R_HOSTENT_DATA)
+    /* AIX, HP/UX, D/UX et alia */
+    gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr, 
+                  sizeof(struct in_addr), AF_INET, &hs, &hd);
+    hptr = &hs;
+#else
+#if defined(GETHOSTBYNAME_R_GLIBC2)
+    /* Linux glibc2+ */
+    gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr, 
+                    sizeof(struct in_addr), AF_INET,
+                    &hs, tmp, GETHOSTBYNAME_BUFLEN - 1, &hptr, &hosterror);
+#else
+    /* Solaris, Irix et alia */
+    hptr = gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr, 
+                           sizeof(struct in_addr), AF_INET,
+                           &hs, tmp, GETHOSTBYNAME_BUFLEN, &hosterror);
+#endif /* !defined(GETHOSTBYNAME_R_GLIBC2) */
+    if (!hptr) {
+        *hostname = NULL;
+        return hosterror + APR_OS_START_SYSERR;
+    }
+#endif /* !defined(GETHOSTBYNAME_R_HOSTENT_DATA) */
+#else
+    struct hostent *hptr;
+    hptr = gethostbyaddr((char *)&sockaddr->sa.sin.sin_addr, 
+                         sizeof(struct in_addr), AF_INET);
+#endif
+
+    if (hptr) {
+        *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool, hptr->h_name);
+        return APR_SUCCESS;
+    }
+    *hostname = NULL;
+#if defined(WIN32)
+    return apr_get_netos_error();
+#elif defined(OS2)
+    return h_errno;
+#else
+    return h_errno + APR_OS_START_SYSERR;
+#endif
+#endif
+}
+
+APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr,
+                                            const char *servname)
+{
+#if APR_HAS_THREADS && !defined(GETSERVBYNAME_IS_THREAD_SAFE) && \
+    defined(HAVE_GETSERVBYNAME_R) && \
+    (defined(GETSERVBYNAME_R_GLIBC2) || defined(GETSERVBYNAME_R_SOLARIS) || \
+     defined(GETSERVBYNAME_R_OSF1))
+    struct servent se;
+#if defined(GETSERVBYNAME_R_OSF1)
+    struct servent_data sed;
+
+    memset(&sed, 0, sizeof(sed)); /* must zero fill before use */
+#else
+#if defined(GETSERVBYNAME_R_GLIBC2)
+    struct servent *res;
+#endif
+    char buf[1024];
+#endif
+#else
+    struct servent *se;
+#endif
+
+    if (servname == NULL)
+        return APR_EINVAL;
+
+#if APR_HAS_THREADS && !defined(GETSERVBYNAME_IS_THREAD_SAFE) && \
+    defined(HAVE_GETSERVBYNAME_R) && \
+    (defined(GETSERVBYNAME_R_GLIBC2) || defined(GETSERVBYNAME_R_SOLARIS) || \
+     defined(GETSERVBYNAME_R_OSF1))
+#if defined(GETSERVBYNAME_R_GLIBC2)
+    if (getservbyname_r(servname, NULL,
+                        &se, buf, sizeof(buf), &res) == 0 && res != NULL) {
+        sockaddr->port = ntohs(res->s_port);
+        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
+        sockaddr->sa.sin.sin_port = res->s_port;
+        return APR_SUCCESS;
+    }
+#elif defined(GETSERVBYNAME_R_SOLARIS)
+    if (getservbyname_r(servname, NULL, &se, buf, sizeof(buf)) != NULL) {
+        sockaddr->port = ntohs(se.s_port);
+        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
+        sockaddr->sa.sin.sin_port = se.s_port;
+        return APR_SUCCESS;
+    }
+#elif defined(GETSERVBYNAME_R_OSF1)
+    if (getservbyname_r(servname, NULL, &se, &sed) == 0) {
+        sockaddr->port = ntohs(se.s_port);
+        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
+        sockaddr->sa.sin.sin_port = se.s_port;
+        return APR_SUCCESS;
+    }
+#endif
+#else
+    if ((se = getservbyname(servname, NULL)) != NULL){
+        sockaddr->port = ntohs(se->s_port);
+        sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
+        sockaddr->sa.sin.sin_port = se->s_port;
+        return APR_SUCCESS;
+    }
+#endif
+    return APR_ENOENT;
+}
+
+#define V4MAPPED_EQUAL(a,b)                                   \
+((a)->sa.sin.sin_family == AF_INET &&                         \
+ (b)->sa.sin.sin_family == AF_INET6 &&                        \
+ IN6_IS_ADDR_V4MAPPED((struct in6_addr *)(b)->ipaddr_ptr) &&  \
+ !memcmp((a)->ipaddr_ptr,                                     \
+         &((struct in6_addr *)(b)->ipaddr_ptr)->s6_addr[12],  \
+         (a)->ipaddr_len))
+
+APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1,
+                                    const apr_sockaddr_t *addr2)
+{
+    if (addr1->ipaddr_len == addr2->ipaddr_len &&
+        !memcmp(addr1->ipaddr_ptr, addr2->ipaddr_ptr, addr1->ipaddr_len)) {
+        return 1;
+    }
+#if APR_HAVE_IPV6
+    if (V4MAPPED_EQUAL(addr1, addr2)) {
+        return 1;
+    }
+    if (V4MAPPED_EQUAL(addr2, addr1)) {
+        return 1;
+    }
+#endif
+    return 0; /* not equal */
+}
+
+APR_DECLARE(int) apr_sockaddr_is_wildcard(const apr_sockaddr_t *addr)
+{
+    static const char inaddr_any[
+#if APR_HAVE_IPV6
+        sizeof(struct in6_addr)
+#else
+        sizeof(struct in_addr)
+#endif
+    ] = {0};
+
+    if (addr->ipaddr_ptr /* IP address initialized */
+        && addr->ipaddr_len <= sizeof inaddr_any) { /* else bug elsewhere? */
+        if (!memcmp(inaddr_any, addr->ipaddr_ptr, addr->ipaddr_len)) {
+            return 1;
+        }
+#if APR_HAVE_IPV6
+    if (addr->family == AF_INET6
+        && IN6_IS_ADDR_V4MAPPED((struct in6_addr *)addr->ipaddr_ptr)) {
+        struct in_addr *v4 = (struct in_addr *)&((apr_uint32_t *)addr->ipaddr_ptr)[3];
+
+        if (!memcmp(inaddr_any, v4, sizeof *v4)) {
+            return 1;
+        }
+    }
+#endif
+    }
+    return 0;
+}
+
+static apr_status_t parse_network(apr_ipsubnet_t *ipsub, const char *network)
+{
+    /* legacy syntax for ip addrs: a.b.c. ==> a.b.c.0/24 for example */
+    int shift;
+    char *s, *t;
+    int octet;
+    char buf[sizeof "255.255.255.255"];
+
+    if (strlen(network) < sizeof buf) {
+        strcpy(buf, network);
+    }
+    else {
+        return APR_EBADIP;
+    }
+
+    /* parse components */
+    s = buf;
+    ipsub->sub[0] = 0;
+    ipsub->mask[0] = 0;
+    shift = 24;
+    while (*s) {
+        t = s;
+        if (!apr_isdigit(*t)) {
+            return APR_EBADIP;
+        }
+        while (apr_isdigit(*t)) {
+            ++t;
+        }
+        if (*t == '.') {
+            *t++ = 0;
+        }
+        else if (*t) {
+            return APR_EBADIP;
+        }
+        if (shift < 0) {
+            return APR_EBADIP;
+        }
+        octet = atoi(s);
+        if (octet < 0 || octet > 255) {
+            return APR_EBADIP;
+        }
+        ipsub->sub[0] |= octet << shift;
+        ipsub->mask[0] |= 0xFFUL << shift;
+        s = t;
+        shift -= 8;
+    }
+    ipsub->sub[0] = ntohl(ipsub->sub[0]);
+    ipsub->mask[0] = ntohl(ipsub->mask[0]);
+    ipsub->family = AF_INET;
+    return APR_SUCCESS;
+}
+
+/* return values:
+ * APR_EINVAL     not an IP address; caller should see if it is something else
+ * APR_BADIP      IP address portion is is not valid
+ * APR_BADMASK    mask portion is not valid
+ */
+
+static apr_status_t parse_ip(apr_ipsubnet_t *ipsub, const char *ipstr, int network_allowed)
+{
+    /* supported flavors of IP:
+     *
+     * . IPv6 numeric address string (e.g., "fe80::1")
+     * 
+     *   IMPORTANT: Don't store IPv4-mapped IPv6 address as an IPv6 address.
+     *
+     * . IPv4 numeric address string (e.g., "127.0.0.1")
+     *
+     * . IPv4 network string (e.g., "9.67")
+     *
+     *   IMPORTANT: This network form is only allowed if network_allowed is on.
+     */
+    int rc;
+
+#if APR_HAVE_IPV6
+    rc = apr_inet_pton(AF_INET6, ipstr, ipsub->sub);
+    if (rc == 1) {
+        if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)ipsub->sub)) {
+            /* apr_ipsubnet_test() assumes that we don't create IPv4-mapped IPv6
+             * addresses; this of course forces the user to specify IPv4 addresses
+             * in a.b.c.d style instead of ::ffff:a.b.c.d style.
+             */
+            return APR_EBADIP;
+        }
+        ipsub->family = AF_INET6;
+    }
+    else
+#endif
+    {
+        rc = apr_inet_pton(AF_INET, ipstr, ipsub->sub);
+        if (rc == 1) {
+            ipsub->family = AF_INET;
+        }
+    }
+    if (rc != 1) {
+        if (network_allowed) {
+            return parse_network(ipsub, ipstr);
+        }
+        else {
+            return APR_EBADIP;
+        }
+    }
+    return APR_SUCCESS;
+}
+
+static int looks_like_ip(const char *ipstr)
+{
+    if (strchr(ipstr, ':')) {
+        /* definitely not a hostname; assume it is intended to be an IPv6 address */
+        return 1;
+    }
+
+    /* simple IPv4 address string check */
+    while ((*ipstr == '.') || apr_isdigit(*ipstr))
+        ipstr++;
+    return (*ipstr == '\0');
+}
+
+static void fix_subnet(apr_ipsubnet_t *ipsub)
+{
+    /* in case caller specified more bits in network address than are
+     * valid according to the mask, turn off the extra bits
+     */
+    int i;
+
+    for (i = 0; i < sizeof ipsub->mask / sizeof(apr_int32_t); i++) {
+        ipsub->sub[i] &= ipsub->mask[i];
+    }
+}
+
+/* be sure not to store any IPv4 address as a v4-mapped IPv6 address */
+APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char *ipstr, 
+                                              const char *mask_or_numbits, apr_pool_t *p)
+{
+    apr_status_t rv;
+    char *endptr;
+    long bits, maxbits = 32;
+
+    /* filter out stuff which doesn't look remotely like an IP address; this helps 
+     * callers like mod_access which have a syntax allowing hostname or IP address;
+     * APR_EINVAL tells the caller that it was probably not intended to be an IP
+     * address
+     */
+    if (!looks_like_ip(ipstr)) {
+        return APR_EINVAL;
+    }
+
+    *ipsub = apr_pcalloc(p, sizeof(apr_ipsubnet_t));
+
+    /* assume ipstr is an individual IP address, not a subnet */
+    memset((*ipsub)->mask, 0xFF, sizeof (*ipsub)->mask);
+
+    rv = parse_ip(*ipsub, ipstr, mask_or_numbits == NULL);
+    if (rv != APR_SUCCESS) {
+        return rv;
+    }
+
+    if (mask_or_numbits) {
+#if APR_HAVE_IPV6
+        if ((*ipsub)->family == AF_INET6) {
+            maxbits = 128;
+        }
+#endif
+        bits = strtol(mask_or_numbits, &endptr, 10);
+        if (*endptr == '\0' && bits > 0 && bits <= maxbits) {
+            /* valid num-bits string; fill in mask appropriately */
+            int cur_entry = 0;
+            apr_int32_t cur_bit_value;
+
+            memset((*ipsub)->mask, 0, sizeof (*ipsub)->mask);
+            while (bits > 32) {
+                (*ipsub)->mask[cur_entry] = 0xFFFFFFFF; /* all 32 bits */
+                bits -= 32;
+                ++cur_entry;
+            }
+            cur_bit_value = 0x80000000;
+            while (bits) {
+                (*ipsub)->mask[cur_entry] |= cur_bit_value;
+                --bits;
+                cur_bit_value /= 2;
+            }
+            (*ipsub)->mask[cur_entry] = htonl((*ipsub)->mask[cur_entry]);
+        }
+        else if (apr_inet_pton(AF_INET, mask_or_numbits, (*ipsub)->mask) == 1 &&
+            (*ipsub)->family == AF_INET) {
+            /* valid IPv4 netmask */
+        }
+        else {
+            return APR_EBADMASK;
+        }
+    }
+
+    fix_subnet(*ipsub);
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa)
+{
+#if APR_HAVE_IPV6
+    /* XXX This line will segv on Win32 build with APR_HAVE_IPV6,
+     * but without the IPV6 drivers installed.
+     */
+    if (sa->family == AF_INET) {
+        if (ipsub->family == AF_INET &&
+            ((sa->sa.sin.sin_addr.s_addr & ipsub->mask[0]) == ipsub->sub[0])) {
+            return 1;
+        }
+    }
+    else if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)sa->ipaddr_ptr)) {
+        if (ipsub->family == AF_INET &&
+            (((apr_uint32_t *)sa->ipaddr_ptr)[3] & ipsub->mask[0]) == ipsub->sub[0]) {
+            return 1;
+        }
+    }
+    else if (sa->family == AF_INET6 && ipsub->family == AF_INET6) {
+        apr_uint32_t *addr = (apr_uint32_t *)sa->ipaddr_ptr;
+
+        if ((addr[0] & ipsub->mask[0]) == ipsub->sub[0] &&
+            (addr[1] & ipsub->mask[1]) == ipsub->sub[1] &&
+            (addr[2] & ipsub->mask[2]) == ipsub->sub[2] &&
+            (addr[3] & ipsub->mask[3]) == ipsub->sub[3]) {
+            return 1;
+        }
+    }
+#else
+    if ((sa->sa.sin.sin_addr.s_addr & ipsub->mask[0]) == ipsub->sub[0]) {
+        return 1;
+    }
+#endif /* APR_HAVE_IPV6 */
+    return 0; /* no match */
+}

Deleted: vendor/apache/apr/1.5.2/network_io/unix/socket_util.c
===================================================================
--- vendor/apache/apr/dist/network_io/unix/socket_util.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/unix/socket_util.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,74 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_network_io.h"
-#include "apr_poll.h"
-
-APR_DECLARE(apr_status_t) apr_socket_atreadeof(apr_socket_t *sock, int *atreadeof)
-{
-    apr_pollfd_t pfds[1];
-    apr_status_t rv;
-    apr_int32_t  nfds;
-
-    /* The purpose here is to return APR_SUCCESS only in cases in
-     * which it can be unambiguously determined whether or not the
-     * socket will return EOF on next read.  In case of an unexpected
-     * error, return that. */
-
-    pfds[0].reqevents = APR_POLLIN;
-    pfds[0].desc_type = APR_POLL_SOCKET;
-    pfds[0].desc.s = sock;
-
-    do {
-        rv = apr_poll(&pfds[0], 1, &nfds, 0);
-    } while (APR_STATUS_IS_EINTR(rv));
-
-    if (APR_STATUS_IS_TIMEUP(rv)) {
-        /* Read buffer empty -> subsequent reads would block, so,
-         * definitely not at EOF. */
-        *atreadeof = 0;
-        return APR_SUCCESS;
-    }
-    else if (rv) {
-        /* Some other error -> unexpected error. */
-        return rv;
-    }
-    else if (nfds == 1 && pfds[0].rtnevents == APR_POLLIN) {
-        apr_sockaddr_t unused;
-        apr_size_t len = 1;
-        char buf;
-
-        /* The socket is readable - peek to see whether it returns EOF
-         * without consuming bytes from the socket buffer. */
-        rv = apr_socket_recvfrom(&unused, sock, MSG_PEEK, &buf, &len);
-        if (rv == APR_EOF) {
-            *atreadeof = 1;
-            return APR_SUCCESS;
-        }
-        else if (rv) {
-            /* Read error -> unexpected error. */
-            return rv;
-        }
-        else {
-            *atreadeof = 0;
-            return APR_SUCCESS;
-        }
-    }
-
-    /* Should not fall through here. */
-    return APR_EGENERAL;
-}
-

Copied: vendor/apache/apr/1.5.2/network_io/unix/socket_util.c (from rev 9273, vendor/apache/apr/dist/network_io/unix/socket_util.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/unix/socket_util.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/unix/socket_util.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,75 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_network_io.h"
+#include "apr_poll.h"
+
+APR_DECLARE(apr_status_t) apr_socket_atreadeof(apr_socket_t *sock, int *atreadeof)
+{
+    apr_pollfd_t pfds[1];
+    apr_status_t rv;
+    apr_int32_t  nfds;
+
+    /* The purpose here is to return APR_SUCCESS only in cases in
+     * which it can be unambiguously determined whether or not the
+     * socket will return EOF on next read.  In case of an unexpected
+     * error, return that. */
+
+    pfds[0].reqevents = APR_POLLIN;
+    pfds[0].desc_type = APR_POLL_SOCKET;
+    pfds[0].desc.s = sock;
+
+    do {
+        rv = apr_poll(&pfds[0], 1, &nfds, 0);
+    } while (APR_STATUS_IS_EINTR(rv));
+
+    if (APR_STATUS_IS_TIMEUP(rv)) {
+        /* Read buffer empty -> subsequent reads would block, so,
+         * definitely not at EOF. */
+        *atreadeof = 0;
+        return APR_SUCCESS;
+    }
+    else if (rv) {
+        /* Some other error -> unexpected error. */
+        return rv;
+    }
+    /* Many platforms return only APR_POLLIN; OS X returns APR_POLLHUP|APR_POLLIN */
+    else if (nfds == 1 && (pfds[0].rtnevents & APR_POLLIN)  == APR_POLLIN) {
+        apr_sockaddr_t unused;
+        apr_size_t len = 1;
+        char buf;
+
+        /* The socket is readable - peek to see whether it returns EOF
+         * without consuming bytes from the socket buffer. */
+        rv = apr_socket_recvfrom(&unused, sock, MSG_PEEK, &buf, &len);
+        if (rv == APR_EOF) {
+            *atreadeof = 1;
+            return APR_SUCCESS;
+        }
+        else if (rv) {
+            /* Read error -> unexpected error. */
+            return rv;
+        }
+        else {
+            *atreadeof = 0;
+            return APR_SUCCESS;
+        }
+    }
+
+    /* Should not fall through here. */
+    return APR_EGENERAL;
+}
+

Deleted: vendor/apache/apr/1.5.2/network_io/unix/sockets.c
===================================================================
--- vendor/apache/apr/dist/network_io/unix/sockets.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/unix/sockets.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,490 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_network_io.h"
-#include "apr_strings.h"
-#include "apr_support.h"
-#include "apr_portable.h"
-#include "apr_arch_inherit.h"
-
-#ifdef BEOS_R5
-#undef close
-#define close closesocket
-#endif /* BEOS_R5 */
-
-static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */
-
-static apr_status_t socket_cleanup(void *sock)
-{
-    apr_socket_t *thesocket = sock;
-    int sd = thesocket->socketdes;
-
-    /* Set socket descriptor to -1 before close(), so that there is no
-     * chance of returning an already closed FD from apr_os_sock_get().
-     */
-    thesocket->socketdes = -1;
-
-    if (close(sd) == 0) {
-        return APR_SUCCESS;
-    }
-    else {
-        /* Restore, close() was not successful. */
-        thesocket->socketdes = sd;
-
-        return errno;
-    }
-}
-
-static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol)
-{
-    sock->type = type;
-    sock->protocol = protocol;
-    apr_sockaddr_vars_set(sock->local_addr, family, 0);
-    apr_sockaddr_vars_set(sock->remote_addr, family, 0);
-    sock->options = 0;
-#if defined(BEOS) && !defined(BEOS_BONE)
-    /* BeOS pre-BONE has TCP_NODELAY on by default and it can't be
-     * switched off!
-     */
-    sock->options |= APR_TCP_NODELAY;
-#endif
-}
-
-static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
-{
-    *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t));
-    (*new)->pool = p;
-    (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
-                                                       sizeof(apr_sockaddr_t));
-    (*new)->local_addr->pool = p;
-    (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
-                                                        sizeof(apr_sockaddr_t));
-    (*new)->remote_addr->pool = p;
-    (*new)->remote_addr_unknown = 1;
-#ifndef WAITIO_USES_POLL
-    /* Create a pollset with room for one descriptor. */
-    /* ### check return codes */
-    (void) apr_pollset_create(&(*new)->pollset, 1, p, 0);
-#endif
-}
-
-apr_status_t apr_socket_protocol_get(apr_socket_t *sock, int *protocol)
-{
-    *protocol = sock->protocol;
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_create(apr_socket_t **new, int ofamily, int type,
-                               int protocol, apr_pool_t *cont)
-{
-    int family = ofamily, flags = 0;
-
-#ifdef HAVE_SOCK_CLOEXEC
-    flags |= SOCK_CLOEXEC;
-#endif
-
-    if (family == APR_UNSPEC) {
-#if APR_HAVE_IPV6
-        family = APR_INET6;
-#else
-        family = APR_INET;
-#endif
-    }
-
-    alloc_socket(new, cont);
-
-#ifndef BEOS_R5
-    (*new)->socketdes = socket(family, type|flags, protocol);
-#else
-    /* For some reason BeOS R5 has an unconventional protocol numbering,
-     * so we need to translate here. */
-    switch (protocol) {
-    case 0:
-        (*new)->socketdes = socket(family, type|flags, 0);
-        break;
-    case APR_PROTO_TCP:
-        (*new)->socketdes = socket(family, type|flags, IPPROTO_TCP);
-        break;
-    case APR_PROTO_UDP:
-        (*new)->socketdes = socket(family, type|flags, IPPROTO_UDP);
-        break;
-    case APR_PROTO_SCTP:
-    default:
-        errno = EPROTONOSUPPORT;
-        (*new)->socketdes = -1;
-        break;
-    }
-#endif /* BEOS_R5 */
-
-#if APR_HAVE_IPV6
-    if ((*new)->socketdes < 0 && ofamily == APR_UNSPEC) {
-        family = APR_INET;
-        (*new)->socketdes = socket(family, type|flags, protocol);
-    }
-#endif
-
-    if ((*new)->socketdes < 0) {
-        return errno;
-    }
-    set_socket_vars(*new, family, type, protocol);
-
-#ifndef HAVE_SOCK_CLOEXEC
-    {
-        int flags;
-
-        if ((flags = fcntl((*new)->socketdes, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl((*new)->socketdes, F_SETFD, flags) == -1)
-            return errno;
-    }
-#endif
-
-    (*new)->timeout = -1;
-    (*new)->inherit = 0;
-    apr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup,
-                              socket_cleanup);
-
-    return APR_SUCCESS;
-} 
-
-apr_status_t apr_socket_shutdown(apr_socket_t *thesocket, 
-                                 apr_shutdown_how_e how)
-{
-    return (shutdown(thesocket->socketdes, how) == -1) ? errno : APR_SUCCESS;
-}
-
-apr_status_t apr_socket_close(apr_socket_t *thesocket)
-{
-    return apr_pool_cleanup_run(thesocket->pool, thesocket, socket_cleanup);
-}
-
-apr_status_t apr_socket_bind(apr_socket_t *sock, apr_sockaddr_t *sa)
-{
-    if (bind(sock->socketdes, 
-             (struct sockaddr *)&sa->sa, sa->salen) == -1) {
-        return errno;
-    }
-    else {
-        sock->local_addr = sa;
-        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
-        if (sock->local_addr->sa.sin.sin_port == 0) { /* no need for ntohs() when comparing w/ 0 */
-            sock->local_port_unknown = 1; /* kernel got us an ephemeral port */
-        }
-        return APR_SUCCESS;
-    }
-}
-
-apr_status_t apr_socket_listen(apr_socket_t *sock, apr_int32_t backlog)
-{
-    if (listen(sock->socketdes, backlog) == -1)
-        return errno;
-    else
-        return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock,
-                               apr_pool_t *connection_context)
-{
-    int s;
-    apr_sockaddr_t sa;
-
-    sa.salen = sizeof(sa.sa);
-
-#ifdef HAVE_ACCEPT4
-    s = accept4(sock->socketdes, (struct sockaddr *)&sa.sa, &sa.salen, SOCK_CLOEXEC);
-#else
-    s = accept(sock->socketdes, (struct sockaddr *)&sa.sa, &sa.salen);
-#endif
-
-    if (s < 0) {
-        return errno;
-    }
-#ifdef TPF
-    if (s == 0) { 
-        /* 0 is an invalid socket for TPF */
-        return APR_EINTR;
-    }
-#endif
-    alloc_socket(new, connection_context);
-
-    /* Set up socket variables -- note that it may be possible for
-     * *new to be an AF_INET socket when sock is AF_INET6 in some
-     * dual-stack configurations, so ensure that the remote_/local_addr
-     * structures are adjusted for the family of the accepted
-     * socket: */
-    set_socket_vars(*new, sa.sa.sin.sin_family, SOCK_STREAM, sock->protocol);
-
-#ifndef HAVE_POLL
-    (*new)->connected = 1;
-#endif
-    (*new)->timeout = -1;
-
-    (*new)->remote_addr_unknown = 0;
-
-    (*new)->socketdes = s;
-
-    /* Copy in peer's address. */
-    (*new)->remote_addr->sa = sa.sa;
-    (*new)->remote_addr->salen = sa.salen;
-
-    *(*new)->local_addr = *sock->local_addr;
-
-    /* The above assignment just overwrote the pool entry. Setting the local_addr 
-       pool for the accepted socket back to what it should be.  Otherwise all 
-       allocations for this socket will come from a server pool that is not
-       freed until the process goes down.*/
-    (*new)->local_addr->pool = connection_context;
-
-    /* fix up any pointers which are no longer valid */
-    if (sock->local_addr->sa.sin.sin_family == AF_INET) {
-        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr;
-    }
-#if APR_HAVE_IPV6
-    else if (sock->local_addr->sa.sin.sin_family == AF_INET6) {
-        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin6.sin6_addr;
-    }
-#endif
-    (*new)->remote_addr->port = ntohs((*new)->remote_addr->sa.sin.sin_port);
-    if (sock->local_port_unknown) {
-        /* not likely for a listening socket, but theoretically possible :) */
-        (*new)->local_port_unknown = 1;
-    }
-
-#if APR_TCP_NODELAY_INHERITED
-    if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1) {
-        apr_set_option(*new, APR_TCP_NODELAY, 1);
-    }
-#endif /* TCP_NODELAY_INHERITED */
-#if APR_O_NONBLOCK_INHERITED
-    if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) {
-        apr_set_option(*new, APR_SO_NONBLOCK, 1);
-    }
-#endif /* APR_O_NONBLOCK_INHERITED */
-
-    if (sock->local_interface_unknown ||
-        !memcmp(sock->local_addr->ipaddr_ptr,
-                generic_inaddr_any,
-                sock->local_addr->ipaddr_len)) {
-        /* If the interface address inside the listening socket's local_addr wasn't 
-         * up-to-date, we don't know local interface of the connected socket either.
-         *
-         * If the listening socket was not bound to a specific interface, we
-         * don't know the local_addr of the connected socket.
-         */
-        (*new)->local_interface_unknown = 1;
-    }
-
-#ifndef HAVE_ACCEPT4
-    {
-        int flags;
-
-        if ((flags = fcntl((*new)->socketdes, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl((*new)->socketdes, F_SETFD, flags) == -1)
-            return errno;
-    }
-#endif
-
-    (*new)->inherit = 0;
-    apr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup,
-                              socket_cleanup);
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa)
-{
-    int rc;        
-
-    do {
-        rc = connect(sock->socketdes,
-                     (const struct sockaddr *)&sa->sa.sin,
-                     sa->salen);
-    } while (rc == -1 && errno == EINTR);
-
-    /* we can see EINPROGRESS the first time connect is called on a non-blocking
-     * socket; if called again, we can see EALREADY
-     */
-    if ((rc == -1) && (errno == EINPROGRESS || errno == EALREADY)
-                   && (sock->timeout > 0)) {
-        rc = apr_wait_for_io_or_timeout(NULL, sock, 0);
-        if (rc != APR_SUCCESS) {
-            return rc;
-        }
-
-#ifdef SO_ERROR
-        {
-            int error;
-            apr_socklen_t len = sizeof(error);
-            if ((rc = getsockopt(sock->socketdes, SOL_SOCKET, SO_ERROR, 
-                                 (char *)&error, &len)) < 0) {
-                return errno;
-            }
-            if (error) {
-                return error;
-            }
-        }
-#endif /* SO_ERROR */
-    }
-
-
-    if (memcmp(sa->ipaddr_ptr, generic_inaddr_any, sa->ipaddr_len)) {
-        /* A real remote address was passed in.  If the unspecified
-         * address was used, the actual remote addr will have to be
-         * determined using getpeername() if required. */
-        sock->remote_addr_unknown = 0;
-
-        /* Copy the address structure details in. */
-        sock->remote_addr->sa = sa->sa;
-        sock->remote_addr->salen = sa->salen;
-        /* Adjust ipaddr_ptr et al. */
-        apr_sockaddr_vars_set(sock->remote_addr, sa->family, sa->port);
-    }
-
-    if (sock->local_addr->port == 0) {
-        /* connect() got us an ephemeral port */
-        sock->local_port_unknown = 1;
-    }
-    if (!memcmp(sock->local_addr->ipaddr_ptr,
-                generic_inaddr_any,
-                sock->local_addr->ipaddr_len)) {
-        /* not bound to specific local interface; connect() had to assign
-         * one for the socket
-         */
-        sock->local_interface_unknown = 1;
-    }
-
-    if (rc == -1 && errno != EISCONN) {
-        return errno;
-    }
-
-#ifndef HAVE_POLL
-    sock->connected=1;
-#endif
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_type_get(apr_socket_t *sock, int *type)
-{
-    *type = sock->type;
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock)
-{
-    sock_userdata_t *cur = sock->userdata;
-
-    *data = NULL;
-
-    while (cur) {
-        if (!strcmp(cur->key, key)) {
-            *data = cur->data;
-            break;
-        }
-        cur = cur->next;
-    }
-
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key,
-                                 apr_status_t (*cleanup) (void *))
-{
-    sock_userdata_t *new = apr_palloc(sock->pool, sizeof(sock_userdata_t));
-
-    new->key = apr_pstrdup(sock->pool, key);
-    new->data = data;
-    new->next = sock->userdata;
-    sock->userdata = new;
-
-    if (cleanup) {
-        apr_pool_cleanup_register(sock->pool, data, cleanup, cleanup);
-    }
-
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock)
-{
-    *thesock = sock->socketdes;
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, 
-                              apr_os_sock_info_t *os_sock_info, 
-                              apr_pool_t *cont)
-{
-    alloc_socket(apr_sock, cont);
-    set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol);
-    (*apr_sock)->timeout = -1;
-    (*apr_sock)->socketdes = *os_sock_info->os_sock;
-    if (os_sock_info->local) {
-        memcpy(&(*apr_sock)->local_addr->sa.sin, 
-               os_sock_info->local, 
-               (*apr_sock)->local_addr->salen);
-        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
-        (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port);
-    }
-    else {
-        (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1;
-    }
-    if (os_sock_info->remote) {
-#ifndef HAVE_POLL
-        (*apr_sock)->connected = 1;
-#endif
-        memcpy(&(*apr_sock)->remote_addr->sa.sin, 
-               os_sock_info->remote,
-               (*apr_sock)->remote_addr->salen);
-        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
-        (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port);
-    }
-    else {
-        (*apr_sock)->remote_addr_unknown = 1;
-    }
-        
-    (*apr_sock)->inherit = 0;
-    apr_pool_cleanup_register((*apr_sock)->pool, (void *)(*apr_sock), 
-                              socket_cleanup, socket_cleanup);
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, 
-                           apr_pool_t *cont)
-{
-    /* XXX Bogus assumption that *sock points at anything legit */
-    if ((*sock) == NULL) {
-        alloc_socket(sock, cont);
-        /* XXX IPv6 figure out the family here! */
-        /* XXX figure out the actual socket type here */
-        /* *or* just decide that apr_os_sock_put() has to be told the family and type */
-        set_socket_vars(*sock, APR_INET, SOCK_STREAM, 0);
-        (*sock)->timeout = -1;
-    }
-    (*sock)->local_port_unknown = (*sock)->local_interface_unknown = 1;
-    (*sock)->remote_addr_unknown = 1;
-    (*sock)->socketdes = *thesock;
-    return APR_SUCCESS;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(socket)
-
-APR_IMPLEMENT_INHERIT_SET(socket, inherit, pool, socket_cleanup)
-
-APR_IMPLEMENT_INHERIT_UNSET(socket, inherit, pool, socket_cleanup)

Copied: vendor/apache/apr/1.5.2/network_io/unix/sockets.c (from rev 9273, vendor/apache/apr/dist/network_io/unix/sockets.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/unix/sockets.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/unix/sockets.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,521 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_networkio.h"
+#include "apr_network_io.h"
+#include "apr_strings.h"
+#include "apr_support.h"
+#include "apr_portable.h"
+#include "apr_arch_inherit.h"
+
+#ifdef BEOS_R5
+#undef close
+#define close closesocket
+#endif /* BEOS_R5 */
+
+static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */
+
+static apr_status_t socket_cleanup(void *sock)
+{
+    apr_socket_t *thesocket = sock;
+    int sd = thesocket->socketdes;
+
+    /* Set socket descriptor to -1 before close(), so that there is no
+     * chance of returning an already closed FD from apr_os_sock_get().
+     */
+    thesocket->socketdes = -1;
+
+    if (close(sd) == 0) {
+        return APR_SUCCESS;
+    }
+    else {
+        /* Restore, close() was not successful. */
+        thesocket->socketdes = sd;
+
+        return errno;
+    }
+}
+
+static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol)
+{
+    sock->type = type;
+    sock->protocol = protocol;
+    apr_sockaddr_vars_set(sock->local_addr, family, 0);
+    apr_sockaddr_vars_set(sock->remote_addr, family, 0);
+    sock->options = 0;
+#if defined(BEOS) && !defined(BEOS_BONE)
+    /* BeOS pre-BONE has TCP_NODELAY on by default and it can't be
+     * switched off!
+     */
+    sock->options |= APR_TCP_NODELAY;
+#endif
+}
+
+static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
+{
+    *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t));
+    (*new)->pool = p;
+    (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
+                                                       sizeof(apr_sockaddr_t));
+    (*new)->local_addr->pool = p;
+    (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
+                                                        sizeof(apr_sockaddr_t));
+    (*new)->remote_addr->pool = p;
+    (*new)->remote_addr_unknown = 1;
+#ifndef WAITIO_USES_POLL
+    /* Create a pollset with room for one descriptor. */
+    /* ### check return codes */
+    (void) apr_pollset_create(&(*new)->pollset, 1, p, 0);
+#endif
+}
+
+apr_status_t apr_socket_protocol_get(apr_socket_t *sock, int *protocol)
+{
+    *protocol = sock->protocol;
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_create(apr_socket_t **new, int ofamily, int type,
+                               int protocol, apr_pool_t *cont)
+{
+    int family = ofamily, flags = 0;
+
+#ifdef HAVE_SOCK_CLOEXEC
+    flags |= SOCK_CLOEXEC;
+#endif
+
+    if (family == APR_UNSPEC) {
+#if APR_HAVE_IPV6
+        family = APR_INET6;
+#else
+        family = APR_INET;
+#endif
+    }
+
+    alloc_socket(new, cont);
+
+#ifndef BEOS_R5
+    (*new)->socketdes = socket(family, type|flags, protocol);
+#else
+    /* For some reason BeOS R5 has an unconventional protocol numbering,
+     * so we need to translate here. */
+    switch (protocol) {
+    case 0:
+        (*new)->socketdes = socket(family, type|flags, 0);
+        break;
+    case APR_PROTO_TCP:
+        (*new)->socketdes = socket(family, type|flags, IPPROTO_TCP);
+        break;
+    case APR_PROTO_UDP:
+        (*new)->socketdes = socket(family, type|flags, IPPROTO_UDP);
+        break;
+    case APR_PROTO_SCTP:
+    default:
+        errno = EPROTONOSUPPORT;
+        (*new)->socketdes = -1;
+        break;
+    }
+#endif /* BEOS_R5 */
+
+#if APR_HAVE_IPV6
+    if ((*new)->socketdes < 0 && ofamily == APR_UNSPEC) {
+        family = APR_INET;
+        (*new)->socketdes = socket(family, type|flags, protocol);
+    }
+#endif
+
+    if ((*new)->socketdes < 0) {
+        return errno;
+    }
+    set_socket_vars(*new, family, type, protocol);
+
+#ifndef HAVE_SOCK_CLOEXEC
+    {
+        int flags;
+        apr_status_t rv;
+
+        if ((flags = fcntl((*new)->socketdes, F_GETFD)) == -1) {
+            rv = errno;
+            close((*new)->socketdes);
+            (*new)->socketdes = -1;
+            return rv;
+        }
+
+        flags |= FD_CLOEXEC;
+        if (fcntl((*new)->socketdes, F_SETFD, flags) == -1) {
+            rv = errno;
+            close((*new)->socketdes);
+            (*new)->socketdes = -1;
+            return rv;
+        }
+    }
+#endif
+
+    (*new)->timeout = -1;
+    (*new)->inherit = 0;
+    apr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup,
+                              socket_cleanup);
+
+    return APR_SUCCESS;
+} 
+
+apr_status_t apr_socket_shutdown(apr_socket_t *thesocket, 
+                                 apr_shutdown_how_e how)
+{
+    return (shutdown(thesocket->socketdes, how) == -1) ? errno : APR_SUCCESS;
+}
+
+apr_status_t apr_socket_close(apr_socket_t *thesocket)
+{
+    return apr_pool_cleanup_run(thesocket->pool, thesocket, socket_cleanup);
+}
+
+apr_status_t apr_socket_bind(apr_socket_t *sock, apr_sockaddr_t *sa)
+{
+    if (bind(sock->socketdes, 
+             (struct sockaddr *)&sa->sa, sa->salen) == -1) {
+        return errno;
+    }
+    else {
+        sock->local_addr = sa;
+        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
+        if (sock->local_addr->sa.sin.sin_port == 0) { /* no need for ntohs() when comparing w/ 0 */
+            sock->local_port_unknown = 1; /* kernel got us an ephemeral port */
+        }
+        return APR_SUCCESS;
+    }
+}
+
+apr_status_t apr_socket_listen(apr_socket_t *sock, apr_int32_t backlog)
+{
+    if (listen(sock->socketdes, backlog) == -1)
+        return errno;
+    else
+        return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock,
+                               apr_pool_t *connection_context)
+{
+    int s;
+    apr_sockaddr_t sa;
+
+    sa.salen = sizeof(sa.sa);
+
+#ifdef HAVE_ACCEPT4
+    {
+        int flags = SOCK_CLOEXEC;
+
+#if defined(SOCK_NONBLOCK) && APR_O_NONBLOCK_INHERITED
+        /* With FreeBSD accept4() (avail in 10+), O_NONBLOCK is not inherited
+         * (unlike Linux).  Mimic the accept() behavior here in a way that
+         * may help other platforms.
+         */
+        if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) {
+            flags |= SOCK_NONBLOCK;
+        }
+#endif
+        s = accept4(sock->socketdes, (struct sockaddr *)&sa.sa, &sa.salen, flags);
+    }
+#else
+    s = accept(sock->socketdes, (struct sockaddr *)&sa.sa, &sa.salen);
+#endif
+
+    if (s < 0) {
+        return errno;
+    }
+#ifdef TPF
+    if (s == 0) { 
+        /* 0 is an invalid socket for TPF */
+        return APR_EINTR;
+    }
+#endif
+    alloc_socket(new, connection_context);
+
+    /* Set up socket variables -- note that it may be possible for
+     * *new to be an AF_INET socket when sock is AF_INET6 in some
+     * dual-stack configurations, so ensure that the remote_/local_addr
+     * structures are adjusted for the family of the accepted
+     * socket: */
+    set_socket_vars(*new, sa.sa.sin.sin_family, SOCK_STREAM, sock->protocol);
+
+#ifndef HAVE_POLL
+    (*new)->connected = 1;
+#endif
+    (*new)->timeout = -1;
+
+    (*new)->remote_addr_unknown = 0;
+
+    (*new)->socketdes = s;
+
+    /* Copy in peer's address. */
+    (*new)->remote_addr->sa = sa.sa;
+    (*new)->remote_addr->salen = sa.salen;
+
+    *(*new)->local_addr = *sock->local_addr;
+
+    /* The above assignment just overwrote the pool entry. Setting the local_addr 
+       pool for the accepted socket back to what it should be.  Otherwise all 
+       allocations for this socket will come from a server pool that is not
+       freed until the process goes down.*/
+    (*new)->local_addr->pool = connection_context;
+
+    /* fix up any pointers which are no longer valid */
+    if (sock->local_addr->sa.sin.sin_family == AF_INET) {
+        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr;
+    }
+#if APR_HAVE_IPV6
+    else if (sock->local_addr->sa.sin.sin_family == AF_INET6) {
+        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin6.sin6_addr;
+    }
+#endif
+    (*new)->remote_addr->port = ntohs((*new)->remote_addr->sa.sin.sin_port);
+    if (sock->local_port_unknown) {
+        /* not likely for a listening socket, but theoretically possible :) */
+        (*new)->local_port_unknown = 1;
+    }
+
+#if APR_TCP_NODELAY_INHERITED
+    if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1) {
+        apr_set_option(*new, APR_TCP_NODELAY, 1);
+    }
+#endif /* TCP_NODELAY_INHERITED */
+#if APR_O_NONBLOCK_INHERITED
+    if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) {
+        apr_set_option(*new, APR_SO_NONBLOCK, 1);
+    }
+#endif /* APR_O_NONBLOCK_INHERITED */
+
+    if (sock->local_interface_unknown ||
+        !memcmp(sock->local_addr->ipaddr_ptr,
+                generic_inaddr_any,
+                sock->local_addr->ipaddr_len)) {
+        /* If the interface address inside the listening socket's local_addr wasn't 
+         * up-to-date, we don't know local interface of the connected socket either.
+         *
+         * If the listening socket was not bound to a specific interface, we
+         * don't know the local_addr of the connected socket.
+         */
+        (*new)->local_interface_unknown = 1;
+    }
+
+#ifndef HAVE_ACCEPT4
+    {
+        int flags;
+        apr_status_t rv;
+
+        if ((flags = fcntl((*new)->socketdes, F_GETFD)) == -1) {
+            rv = errno;
+            close((*new)->socketdes);
+            (*new)->socketdes = -1;
+            return rv;
+        }
+
+        flags |= FD_CLOEXEC;
+        if (fcntl((*new)->socketdes, F_SETFD, flags) == -1) {
+            rv = errno;
+            close((*new)->socketdes);
+            (*new)->socketdes = -1;
+            return rv;
+        }
+    }
+#endif
+
+    (*new)->inherit = 0;
+    apr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup,
+                              socket_cleanup);
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa)
+{
+    int rc;        
+
+    do {
+        rc = connect(sock->socketdes,
+                     (const struct sockaddr *)&sa->sa.sin,
+                     sa->salen);
+    } while (rc == -1 && errno == EINTR);
+
+    /* we can see EINPROGRESS the first time connect is called on a non-blocking
+     * socket; if called again, we can see EALREADY
+     */
+    if ((rc == -1) && (errno == EINPROGRESS || errno == EALREADY)
+                   && (sock->timeout > 0)) {
+        rc = apr_wait_for_io_or_timeout(NULL, sock, 0);
+        if (rc != APR_SUCCESS) {
+            return rc;
+        }
+
+#ifdef SO_ERROR
+        {
+            int error;
+            apr_socklen_t len = sizeof(error);
+            if ((rc = getsockopt(sock->socketdes, SOL_SOCKET, SO_ERROR, 
+                                 (char *)&error, &len)) < 0) {
+                return errno;
+            }
+            if (error) {
+                return error;
+            }
+        }
+#endif /* SO_ERROR */
+    }
+
+
+    if (memcmp(sa->ipaddr_ptr, generic_inaddr_any, sa->ipaddr_len)) {
+        /* A real remote address was passed in.  If the unspecified
+         * address was used, the actual remote addr will have to be
+         * determined using getpeername() if required. */
+        sock->remote_addr_unknown = 0;
+
+        /* Copy the address structure details in. */
+        sock->remote_addr->sa = sa->sa;
+        sock->remote_addr->salen = sa->salen;
+        /* Adjust ipaddr_ptr et al. */
+        apr_sockaddr_vars_set(sock->remote_addr, sa->family, sa->port);
+    }
+
+    if (sock->local_addr->port == 0) {
+        /* connect() got us an ephemeral port */
+        sock->local_port_unknown = 1;
+    }
+    if (!memcmp(sock->local_addr->ipaddr_ptr,
+                generic_inaddr_any,
+                sock->local_addr->ipaddr_len)) {
+        /* not bound to specific local interface; connect() had to assign
+         * one for the socket
+         */
+        sock->local_interface_unknown = 1;
+    }
+
+    if (rc == -1 && errno != EISCONN) {
+        return errno;
+    }
+
+#ifndef HAVE_POLL
+    sock->connected=1;
+#endif
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_type_get(apr_socket_t *sock, int *type)
+{
+    *type = sock->type;
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock)
+{
+    sock_userdata_t *cur = sock->userdata;
+
+    *data = NULL;
+
+    while (cur) {
+        if (!strcmp(cur->key, key)) {
+            *data = cur->data;
+            break;
+        }
+        cur = cur->next;
+    }
+
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key,
+                                 apr_status_t (*cleanup) (void *))
+{
+    sock_userdata_t *new = apr_palloc(sock->pool, sizeof(sock_userdata_t));
+
+    new->key = apr_pstrdup(sock->pool, key);
+    new->data = data;
+    new->next = sock->userdata;
+    sock->userdata = new;
+
+    if (cleanup) {
+        apr_pool_cleanup_register(sock->pool, data, cleanup, cleanup);
+    }
+
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock)
+{
+    *thesock = sock->socketdes;
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, 
+                              apr_os_sock_info_t *os_sock_info, 
+                              apr_pool_t *cont)
+{
+    alloc_socket(apr_sock, cont);
+    set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol);
+    (*apr_sock)->timeout = -1;
+    (*apr_sock)->socketdes = *os_sock_info->os_sock;
+    if (os_sock_info->local) {
+        memcpy(&(*apr_sock)->local_addr->sa.sin, 
+               os_sock_info->local, 
+               (*apr_sock)->local_addr->salen);
+        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
+        (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port);
+    }
+    else {
+        (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1;
+    }
+    if (os_sock_info->remote) {
+#ifndef HAVE_POLL
+        (*apr_sock)->connected = 1;
+#endif
+        memcpy(&(*apr_sock)->remote_addr->sa.sin, 
+               os_sock_info->remote,
+               (*apr_sock)->remote_addr->salen);
+        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
+        (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port);
+    }
+    else {
+        (*apr_sock)->remote_addr_unknown = 1;
+    }
+        
+    (*apr_sock)->inherit = 0;
+    apr_pool_cleanup_register((*apr_sock)->pool, (void *)(*apr_sock), 
+                              socket_cleanup, socket_cleanup);
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, 
+                           apr_pool_t *cont)
+{
+    /* XXX Bogus assumption that *sock points at anything legit */
+    if ((*sock) == NULL) {
+        alloc_socket(sock, cont);
+        /* XXX IPv6 figure out the family here! */
+        /* XXX figure out the actual socket type here */
+        /* *or* just decide that apr_os_sock_put() has to be told the family and type */
+        set_socket_vars(*sock, APR_INET, SOCK_STREAM, 0);
+        (*sock)->timeout = -1;
+    }
+    (*sock)->local_port_unknown = (*sock)->local_interface_unknown = 1;
+    (*sock)->remote_addr_unknown = 1;
+    (*sock)->socketdes = *thesock;
+    return APR_SUCCESS;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(socket)
+
+APR_IMPLEMENT_INHERIT_SET(socket, inherit, pool, socket_cleanup)
+
+APR_IMPLEMENT_INHERIT_UNSET(socket, inherit, pool, socket_cleanup)

Deleted: vendor/apache/apr/1.5.2/network_io/unix/sockopt.c
===================================================================
--- vendor/apache/apr/dist/network_io/unix/sockopt.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/unix/sockopt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,418 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_strings.h"
-
-
-static apr_status_t soblock(int sd)
-{
-/* BeOS uses setsockopt at present for non blocking... */
-#ifndef BEOS
-    int fd_flags;
-
-    fd_flags = fcntl(sd, F_GETFL, 0);
-#if defined(O_NONBLOCK)
-    fd_flags &= ~O_NONBLOCK;
-#elif defined(O_NDELAY)
-    fd_flags &= ~O_NDELAY;
-#elif defined(FNDELAY)
-    fd_flags &= ~FNDELAY;
-#else
-#error Please teach APR how to make sockets blocking on your platform.
-#endif
-    if (fcntl(sd, F_SETFL, fd_flags) == -1) {
-        return errno;
-    }
-#else
-    int on = 0;
-    if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)
-        return errno;
-#endif /* BEOS */
-    return APR_SUCCESS;
-}
-
-static apr_status_t sononblock(int sd)
-{
-#ifndef BEOS
-    int fd_flags;
-
-    fd_flags = fcntl(sd, F_GETFL, 0);
-#if defined(O_NONBLOCK)
-    fd_flags |= O_NONBLOCK;
-#elif defined(O_NDELAY)
-    fd_flags |= O_NDELAY;
-#elif defined(FNDELAY)
-    fd_flags |= FNDELAY;
-#else
-#error Please teach APR how to make sockets non-blocking on your platform.
-#endif
-    if (fcntl(sd, F_SETFL, fd_flags) == -1) {
-        return errno;
-    }
-#else
-    int on = 1;
-    if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)
-        return errno;
-#endif /* BEOS */
-    return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
-{
-    apr_status_t stat;
-
-    /* If our new timeout is non-negative and our old timeout was
-     * negative, then we need to ensure that we are non-blocking.
-     * Conversely, if our new timeout is negative and we had
-     * non-negative timeout, we must make sure our socket is blocking.
-     * We want to avoid calling fcntl more than necessary on the
-     * socket.
-     */
-    if (t >= 0 && sock->timeout < 0) {
-        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != 1) {
-            if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) {
-                return stat;
-            }
-            apr_set_option(sock, APR_SO_NONBLOCK, 1);
-        }
-    } 
-    else if (t < 0 && sock->timeout >= 0) {
-        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != 0) { 
-            if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) { 
-                return stat; 
-            }
-            apr_set_option(sock, APR_SO_NONBLOCK, 0);
-        } 
-    }
-    /* must disable the incomplete read support if we disable
-     * a timeout
-     */
-    if (t <= 0) {
-        sock->options &= ~APR_INCOMPLETE_READ;
-    }
-    sock->timeout = t;
-    return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_opt_set(apr_socket_t *sock, 
-                                apr_int32_t opt, apr_int32_t on)
-{
-    int one;
-    apr_status_t rv;
-
-    if (on)
-        one = 1;
-    else
-        one = 0;
-    switch(opt) {
-    case APR_SO_KEEPALIVE:
-#ifdef SO_KEEPALIVE
-        if (on != apr_is_option_set(sock, APR_SO_KEEPALIVE)) {
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_SO_KEEPALIVE, on);
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_SO_DEBUG:
-        if (on != apr_is_option_set(sock, APR_SO_DEBUG)) {
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_SO_DEBUG, on);
-        }
-        break;
-    case APR_SO_REUSEADDR:
-        if (on != apr_is_option_set(sock, APR_SO_REUSEADDR)) {
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_SO_REUSEADDR, on);
-        }
-        break;
-    case APR_SO_SNDBUF:
-#ifdef SO_SNDBUF
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF, (void *)&on, sizeof(int)) == -1) {
-            return errno;
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_SO_RCVBUF:
-#ifdef SO_RCVBUF
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVBUF, (void *)&on, sizeof(int)) == -1) {
-            return errno;
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_SO_NONBLOCK:
-        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != on) {
-            if (on) {
-                if ((rv = sononblock(sock->socketdes)) != APR_SUCCESS) 
-                    return rv;
-            }
-            else {
-                if ((rv = soblock(sock->socketdes)) != APR_SUCCESS)
-                    return rv;
-            }
-            apr_set_option(sock, APR_SO_NONBLOCK, on);
-        }
-        break;
-    case APR_SO_LINGER:
-#ifdef SO_LINGER
-        if (apr_is_option_set(sock, APR_SO_LINGER) != on) {
-            struct linger li;
-            li.l_onoff = on;
-            li.l_linger = APR_MAX_SECS_TO_LINGER;
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_SO_LINGER, on);
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_TCP_DEFER_ACCEPT:
-#if defined(TCP_DEFER_ACCEPT)
-        if (apr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) {
-            int optlevel = IPPROTO_TCP;
-            int optname = TCP_DEFER_ACCEPT;
-
-            if (setsockopt(sock->socketdes, optlevel, optname, 
-                           (void *)&on, sizeof(int)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_TCP_DEFER_ACCEPT, on);
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_TCP_NODELAY:
-#if defined(TCP_NODELAY)
-        if (apr_is_option_set(sock, APR_TCP_NODELAY) != on) {
-            int optlevel = IPPROTO_TCP;
-            int optname = TCP_NODELAY;
-
-#if APR_HAVE_SCTP
-            if (sock->protocol == IPPROTO_SCTP) {
-                optlevel = IPPROTO_SCTP;
-                optname = SCTP_NODELAY;
-            }
-#endif
-            if (setsockopt(sock->socketdes, optlevel, optname, (void *)&on, sizeof(int)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_TCP_NODELAY, on);
-        }
-#else
-        /* BeOS pre-BONE has TCP_NODELAY set by default.
-         * As it can't be turned off we might as well check if they're asking
-         * for it to be turned on!
-         */
-#ifdef BEOS
-        if (on == 1)
-            return APR_SUCCESS;
-        else
-#endif
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_TCP_NOPUSH:
-#if APR_TCP_NOPUSH_FLAG
-        /* TCP_NODELAY and TCP_CORK are mutually exclusive on Linux
-         * kernels < 2.6; on newer kernels they can be used together
-         * and TCP_CORK takes preference, which is the desired
-         * behaviour.  On older kernels, TCP_NODELAY must be toggled
-         * to "off" whilst TCP_CORK is in effect. */
-        if (apr_is_option_set(sock, APR_TCP_NOPUSH) != on) {
-#ifndef HAVE_TCP_NODELAY_WITH_CORK
-            int optlevel = IPPROTO_TCP;
-            int optname = TCP_NODELAY;
-
-#if APR_HAVE_SCTP
-            if (sock->protocol == IPPROTO_SCTP) {
-                optlevel = IPPROTO_SCTP;
-                optname = SCTP_NODELAY;
-            }
-#endif
-            /* OK we're going to change some settings here... */
-            if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1 && on) {
-                /* Now toggle TCP_NODELAY to off, if TCP_CORK is being
-                 * turned on: */
-                int tmpflag = 0;
-                if (setsockopt(sock->socketdes, optlevel, optname,
-                               (void*)&tmpflag, sizeof(int)) == -1) {
-                    return errno;
-                }
-                apr_set_option(sock, APR_RESET_NODELAY, 1);
-                apr_set_option(sock, APR_TCP_NODELAY, 0);
-            } else if (on) {
-                apr_set_option(sock, APR_RESET_NODELAY, 0);
-            }
-#endif /* HAVE_TCP_NODELAY_WITH_CORK */
-
-            /* OK, now we can just set the TCP_NOPUSH flag accordingly...*/
-            if (setsockopt(sock->socketdes, IPPROTO_TCP, APR_TCP_NOPUSH_FLAG,
-                           (void*)&on, sizeof(int)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_TCP_NOPUSH, on);
-#ifndef HAVE_TCP_NODELAY_WITH_CORK
-            if (!on && apr_is_option_set(sock, APR_RESET_NODELAY)) {
-                /* Now, if TCP_CORK was just turned off, turn
-                 * TCP_NODELAY back on again if it was earlier toggled
-                 * to off: */
-                int tmpflag = 1;
-                if (setsockopt(sock->socketdes, optlevel, optname,
-                               (void*)&tmpflag, sizeof(int)) == -1) {
-                    return errno;
-                }
-                apr_set_option(sock, APR_RESET_NODELAY,0);
-                apr_set_option(sock, APR_TCP_NODELAY, 1);
-            }
-#endif /* HAVE_TCP_NODELAY_WITH_CORK */
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    case APR_INCOMPLETE_READ:
-        apr_set_option(sock, APR_INCOMPLETE_READ, on);
-        break;
-    case APR_IPV6_V6ONLY:
-#if APR_HAVE_IPV6 && defined(IPV6_V6ONLY)
-        /* we don't know the initial setting of this option,
-         * so don't check sock->options since that optimization
-         * won't work
-         */
-        if (setsockopt(sock->socketdes, IPPROTO_IPV6, IPV6_V6ONLY,
-                       (void *)&on, sizeof(int)) == -1) {
-            return errno;
-        }
-        apr_set_option(sock, APR_IPV6_V6ONLY, on);
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    default:
-        return APR_EINVAL;
-    }
-
-    return APR_SUCCESS; 
-}         
-
-
-apr_status_t apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)
-{
-    *t = sock->timeout;
-    return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_opt_get(apr_socket_t *sock, 
-                                apr_int32_t opt, apr_int32_t *on)
-{
-    switch(opt) {
-        default:
-            *on = apr_is_option_set(sock, opt);
-    }
-    return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark)
-{
-#ifndef BEOS_R5
-    int oobmark;
-
-    if (ioctl(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0)
-        return apr_get_netos_error();
-
-    *atmark = (oobmark != 0);
-
-    return APR_SUCCESS;
-#else /* BEOS_R5 */
-    return APR_ENOTIMPL;
-#endif
-}
-
-apr_status_t apr_gethostname(char *buf, apr_int32_t len, apr_pool_t *cont)
-{
-#ifdef BEOS_R5
-    if (gethostname(buf, len) == 0) {
-#else
-    if (gethostname(buf, len) != 0) {
-#endif  
-        buf[0] = '\0';
-        return errno;
-    }
-    else if (!memchr(buf, '\0', len)) { /* buffer too small */
-        /* note... most platforms just truncate in this condition
-         *         linux+glibc return an error
-         */
-        buf[0] = '\0';
-        return APR_ENAMETOOLONG;
-    }
-    return APR_SUCCESS;
-}
-
-#if APR_HAS_SO_ACCEPTFILTER
-apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *nonconst_name, 
-                                      char *nonconst_args)
-{
-    /* these should have been const; act like they are */
-    const char *name = nonconst_name;
-    const char *args = nonconst_args;
-
-    struct accept_filter_arg af;
-    socklen_t optlen = sizeof(af);
-
-    /* FreeBSD returns an error if the filter is already set; ignore
-     * this call if we previously set it to the same value.
-     */
-    if ((getsockopt(sock->socketdes, SOL_SOCKET, SO_ACCEPTFILTER,
-                    &af, &optlen)) == 0) {
-        if (!strcmp(name, af.af_name) && !strcmp(args, af.af_arg)) {
-            return APR_SUCCESS;
-        }
-    }
-
-    /* Uhh, at least in FreeBSD 9 the fields are declared as arrays of
-     * these lengths; did sizeof not work in some ancient release?
-     *
-     * FreeBSD kernel sets the last byte to a '\0'.
-     */
-    apr_cpystrn(af.af_name, name, 16);
-    apr_cpystrn(af.af_arg, args, 256 - 16);
-
-    if ((setsockopt(sock->socketdes, SOL_SOCKET, SO_ACCEPTFILTER,
-          &af, sizeof(af))) < 0) {
-        return errno;
-    }
-    return APR_SUCCESS;
-}
-#endif

Copied: vendor/apache/apr/1.5.2/network_io/unix/sockopt.c (from rev 9273, vendor/apache/apr/dist/network_io/unix/sockopt.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/unix/sockopt.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/unix/sockopt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,430 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_networkio.h"
+#include "apr_strings.h"
+
+
+static apr_status_t soblock(int sd)
+{
+/* BeOS uses setsockopt at present for non blocking... */
+#ifndef BEOS
+    int fd_flags;
+
+    fd_flags = fcntl(sd, F_GETFL, 0);
+#if defined(O_NONBLOCK)
+    fd_flags &= ~O_NONBLOCK;
+#elif defined(O_NDELAY)
+    fd_flags &= ~O_NDELAY;
+#elif defined(FNDELAY)
+    fd_flags &= ~FNDELAY;
+#else
+#error Please teach APR how to make sockets blocking on your platform.
+#endif
+    if (fcntl(sd, F_SETFL, fd_flags) == -1) {
+        return errno;
+    }
+#else
+    int on = 0;
+    if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)
+        return errno;
+#endif /* BEOS */
+    return APR_SUCCESS;
+}
+
+static apr_status_t sononblock(int sd)
+{
+#ifndef BEOS
+    int fd_flags;
+
+    fd_flags = fcntl(sd, F_GETFL, 0);
+#if defined(O_NONBLOCK)
+    fd_flags |= O_NONBLOCK;
+#elif defined(O_NDELAY)
+    fd_flags |= O_NDELAY;
+#elif defined(FNDELAY)
+    fd_flags |= FNDELAY;
+#else
+#error Please teach APR how to make sockets non-blocking on your platform.
+#endif
+    if (fcntl(sd, F_SETFL, fd_flags) == -1) {
+        return errno;
+    }
+#else
+    int on = 1;
+    if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)
+        return errno;
+#endif /* BEOS */
+    return APR_SUCCESS;
+}
+
+
+apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
+{
+    apr_status_t stat;
+
+    /* If our new timeout is non-negative and our old timeout was
+     * negative, then we need to ensure that we are non-blocking.
+     * Conversely, if our new timeout is negative and we had
+     * non-negative timeout, we must make sure our socket is blocking.
+     * We want to avoid calling fcntl more than necessary on the
+     * socket.
+     */
+    if (t >= 0 && sock->timeout < 0) {
+        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != 1) {
+            if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) {
+                return stat;
+            }
+            apr_set_option(sock, APR_SO_NONBLOCK, 1);
+        }
+    } 
+    else if (t < 0 && sock->timeout >= 0) {
+        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != 0) { 
+            if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) { 
+                return stat; 
+            }
+            apr_set_option(sock, APR_SO_NONBLOCK, 0);
+        } 
+    }
+    /* must disable the incomplete read support if we disable
+     * a timeout
+     */
+    if (t <= 0) {
+        sock->options &= ~APR_INCOMPLETE_READ;
+    }
+    sock->timeout = t;
+    return APR_SUCCESS;
+}
+
+
+apr_status_t apr_socket_opt_set(apr_socket_t *sock, 
+                                apr_int32_t opt, apr_int32_t on)
+{
+    int one;
+    apr_status_t rv;
+
+    if (on)
+        one = 1;
+    else
+        one = 0;
+    switch(opt) {
+    case APR_SO_KEEPALIVE:
+#ifdef SO_KEEPALIVE
+        if (on != apr_is_option_set(sock, APR_SO_KEEPALIVE)) {
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_SO_KEEPALIVE, on);
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_SO_DEBUG:
+        if (on != apr_is_option_set(sock, APR_SO_DEBUG)) {
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_SO_DEBUG, on);
+        }
+        break;
+    case APR_SO_BROADCAST:
+#ifdef SO_BROADCAST
+        if (on != apr_is_option_set(sock, APR_SO_BROADCAST)) {
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_BROADCAST, (void *)&one, sizeof(int)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_SO_BROADCAST, on);
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_SO_REUSEADDR:
+        if (on != apr_is_option_set(sock, APR_SO_REUSEADDR)) {
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_SO_REUSEADDR, on);
+        }
+        break;
+    case APR_SO_SNDBUF:
+#ifdef SO_SNDBUF
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF, (void *)&on, sizeof(int)) == -1) {
+            return errno;
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_SO_RCVBUF:
+#ifdef SO_RCVBUF
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVBUF, (void *)&on, sizeof(int)) == -1) {
+            return errno;
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_SO_NONBLOCK:
+        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != on) {
+            if (on) {
+                if ((rv = sononblock(sock->socketdes)) != APR_SUCCESS) 
+                    return rv;
+            }
+            else {
+                if ((rv = soblock(sock->socketdes)) != APR_SUCCESS)
+                    return rv;
+            }
+            apr_set_option(sock, APR_SO_NONBLOCK, on);
+        }
+        break;
+    case APR_SO_LINGER:
+#ifdef SO_LINGER
+        if (apr_is_option_set(sock, APR_SO_LINGER) != on) {
+            struct linger li;
+            li.l_onoff = on;
+            li.l_linger = APR_MAX_SECS_TO_LINGER;
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_SO_LINGER, on);
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_TCP_DEFER_ACCEPT:
+#if defined(TCP_DEFER_ACCEPT)
+        if (apr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) {
+            int optlevel = IPPROTO_TCP;
+            int optname = TCP_DEFER_ACCEPT;
+
+            if (setsockopt(sock->socketdes, optlevel, optname, 
+                           (void *)&on, sizeof(int)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_TCP_DEFER_ACCEPT, on);
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_TCP_NODELAY:
+#if defined(TCP_NODELAY)
+        if (apr_is_option_set(sock, APR_TCP_NODELAY) != on) {
+            int optlevel = IPPROTO_TCP;
+            int optname = TCP_NODELAY;
+
+#if APR_HAVE_SCTP
+            if (sock->protocol == IPPROTO_SCTP) {
+                optlevel = IPPROTO_SCTP;
+                optname = SCTP_NODELAY;
+            }
+#endif
+            if (setsockopt(sock->socketdes, optlevel, optname, (void *)&on, sizeof(int)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_TCP_NODELAY, on);
+        }
+#else
+        /* BeOS pre-BONE has TCP_NODELAY set by default.
+         * As it can't be turned off we might as well check if they're asking
+         * for it to be turned on!
+         */
+#ifdef BEOS
+        if (on == 1)
+            return APR_SUCCESS;
+        else
+#endif
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_TCP_NOPUSH:
+#if APR_TCP_NOPUSH_FLAG
+        /* TCP_NODELAY and TCP_CORK are mutually exclusive on Linux
+         * kernels < 2.6; on newer kernels they can be used together
+         * and TCP_CORK takes preference, which is the desired
+         * behaviour.  On older kernels, TCP_NODELAY must be toggled
+         * to "off" whilst TCP_CORK is in effect. */
+        if (apr_is_option_set(sock, APR_TCP_NOPUSH) != on) {
+#ifndef HAVE_TCP_NODELAY_WITH_CORK
+            int optlevel = IPPROTO_TCP;
+            int optname = TCP_NODELAY;
+
+#if APR_HAVE_SCTP
+            if (sock->protocol == IPPROTO_SCTP) {
+                optlevel = IPPROTO_SCTP;
+                optname = SCTP_NODELAY;
+            }
+#endif
+            /* OK we're going to change some settings here... */
+            if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1 && on) {
+                /* Now toggle TCP_NODELAY to off, if TCP_CORK is being
+                 * turned on: */
+                int tmpflag = 0;
+                if (setsockopt(sock->socketdes, optlevel, optname,
+                               (void*)&tmpflag, sizeof(int)) == -1) {
+                    return errno;
+                }
+                apr_set_option(sock, APR_RESET_NODELAY, 1);
+                apr_set_option(sock, APR_TCP_NODELAY, 0);
+            } else if (on) {
+                apr_set_option(sock, APR_RESET_NODELAY, 0);
+            }
+#endif /* HAVE_TCP_NODELAY_WITH_CORK */
+
+            /* OK, now we can just set the TCP_NOPUSH flag accordingly...*/
+            if (setsockopt(sock->socketdes, IPPROTO_TCP, APR_TCP_NOPUSH_FLAG,
+                           (void*)&on, sizeof(int)) == -1) {
+                return errno;
+            }
+            apr_set_option(sock, APR_TCP_NOPUSH, on);
+#ifndef HAVE_TCP_NODELAY_WITH_CORK
+            if (!on && apr_is_option_set(sock, APR_RESET_NODELAY)) {
+                /* Now, if TCP_CORK was just turned off, turn
+                 * TCP_NODELAY back on again if it was earlier toggled
+                 * to off: */
+                int tmpflag = 1;
+                if (setsockopt(sock->socketdes, optlevel, optname,
+                               (void*)&tmpflag, sizeof(int)) == -1) {
+                    return errno;
+                }
+                apr_set_option(sock, APR_RESET_NODELAY,0);
+                apr_set_option(sock, APR_TCP_NODELAY, 1);
+            }
+#endif /* HAVE_TCP_NODELAY_WITH_CORK */
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    case APR_INCOMPLETE_READ:
+        apr_set_option(sock, APR_INCOMPLETE_READ, on);
+        break;
+    case APR_IPV6_V6ONLY:
+#if APR_HAVE_IPV6 && defined(IPV6_V6ONLY)
+        /* we don't know the initial setting of this option,
+         * so don't check sock->options since that optimization
+         * won't work
+         */
+        if (setsockopt(sock->socketdes, IPPROTO_IPV6, IPV6_V6ONLY,
+                       (void *)&on, sizeof(int)) == -1) {
+            return errno;
+        }
+        apr_set_option(sock, APR_IPV6_V6ONLY, on);
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    default:
+        return APR_EINVAL;
+    }
+
+    return APR_SUCCESS; 
+}         
+
+
+apr_status_t apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)
+{
+    *t = sock->timeout;
+    return APR_SUCCESS;
+}
+
+
+apr_status_t apr_socket_opt_get(apr_socket_t *sock, 
+                                apr_int32_t opt, apr_int32_t *on)
+{
+    switch(opt) {
+        default:
+            *on = apr_is_option_set(sock, opt);
+    }
+    return APR_SUCCESS;
+}
+
+
+apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark)
+{
+#ifndef BEOS_R5
+    int oobmark;
+
+    if (ioctl(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0)
+        return apr_get_netos_error();
+
+    *atmark = (oobmark != 0);
+
+    return APR_SUCCESS;
+#else /* BEOS_R5 */
+    return APR_ENOTIMPL;
+#endif
+}
+
+apr_status_t apr_gethostname(char *buf, apr_int32_t len, apr_pool_t *cont)
+{
+#ifdef BEOS_R5
+    if (gethostname(buf, len) == 0) {
+#else
+    if (gethostname(buf, len) != 0) {
+#endif  
+        buf[0] = '\0';
+        return errno;
+    }
+    else if (!memchr(buf, '\0', len)) { /* buffer too small */
+        /* note... most platforms just truncate in this condition
+         *         linux+glibc return an error
+         */
+        buf[0] = '\0';
+        return APR_ENAMETOOLONG;
+    }
+    return APR_SUCCESS;
+}
+
+#if APR_HAS_SO_ACCEPTFILTER
+apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *nonconst_name, 
+                                      char *nonconst_args)
+{
+    /* these should have been const; act like they are */
+    const char *name = nonconst_name;
+    const char *args = nonconst_args;
+
+    struct accept_filter_arg af;
+    socklen_t optlen = sizeof(af);
+
+    /* FreeBSD returns an error if the filter is already set; ignore
+     * this call if we previously set it to the same value.
+     */
+    if ((getsockopt(sock->socketdes, SOL_SOCKET, SO_ACCEPTFILTER,
+                    &af, &optlen)) == 0) {
+        if (!strcmp(name, af.af_name) && !strcmp(args, af.af_arg)) {
+            return APR_SUCCESS;
+        }
+    }
+
+    /* Uhh, at least in FreeBSD 9 the fields are declared as arrays of
+     * these lengths; did sizeof not work in some ancient release?
+     *
+     * FreeBSD kernel sets the last byte to a '\0'.
+     */
+    apr_cpystrn(af.af_name, name, 16);
+    apr_cpystrn(af.af_arg, args, 256 - 16);
+
+    if ((setsockopt(sock->socketdes, SOL_SOCKET, SO_ACCEPTFILTER,
+          &af, sizeof(af))) < 0) {
+        return errno;
+    }
+    return APR_SUCCESS;
+}
+#endif

Deleted: vendor/apache/apr/1.5.2/network_io/win32/sockets.c
===================================================================
--- vendor/apache/apr/dist/network_io/win32/sockets.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/win32/sockets.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,510 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_network_io.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "apr_portable.h"
-#include "apr_strings.h"
-#include <string.h>
-#include "apr_arch_inherit.h"
-#include "apr_arch_misc.h"
-
-static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */
-
-static apr_status_t socket_cleanup(void *sock)
-{
-    apr_socket_t *thesocket = sock;
-
-    if (thesocket->socketdes != INVALID_SOCKET) {
-        if (closesocket(thesocket->socketdes) == SOCKET_ERROR) {
-            return apr_get_netos_error();
-        }
-        thesocket->socketdes = INVALID_SOCKET;
-    }
-#if APR_HAS_SENDFILE
-    if (thesocket->overlapped) {
-        CloseHandle(thesocket->overlapped->hEvent);
-        thesocket->overlapped = NULL;
-    }
-#endif
-    return APR_SUCCESS;
-}
-
-static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol)
-{
-    sock->type = type;
-    sock->protocol = protocol;
-    apr_sockaddr_vars_set(sock->local_addr, family, 0);
-    apr_sockaddr_vars_set(sock->remote_addr, family, 0);
-#if APR_HAVE_IPV6
-    /* hard-coded behavior for older Windows IPv6 */
-    if (apr_os_level < APR_WIN_VISTA && family == AF_INET6) {
-        apr_set_option(sock, APR_IPV6_V6ONLY, 1);
-    }
-#endif
-}                                                                                                  
-static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
-{
-    *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t));
-    (*new)->pool = p;
-    (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
-                                                       sizeof(apr_sockaddr_t));
-    (*new)->local_addr->pool = p;
-    
-    (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
-                                                        sizeof(apr_sockaddr_t));
-    (*new)->remote_addr->pool = p;
-    (*new)->remote_addr_unknown = 1;
-
-    /* Create a pollset with room for one descriptor. */
-    /* ### check return codes */
-    (void) apr_pollset_create(&(*new)->pollset, 1, p, 0);
-}
-
-APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock,
-                                                  int *protocol)
-{
-    *protocol = sock->protocol;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new, int family,
-                                            int type, int protocol, 
-                                            apr_pool_t *cont)
-{
-#if APR_HAVE_IPV6
-    int downgrade = (family == AF_UNSPEC);
-#endif
-
-    if (family == AF_UNSPEC) {
-#if APR_HAVE_IPV6
-        family = AF_INET6;
-#else
-        family = AF_INET;
-#endif
-    }
-
-    alloc_socket(new, cont);
-
-    /* For right now, we are not using socket groups.  We may later.
-     * No flags to use when creating a socket, so use 0 for that parameter as well.
-     */
-    (*new)->socketdes = socket(family, type, protocol);
-#if APR_HAVE_IPV6
-    if ((*new)->socketdes == INVALID_SOCKET && downgrade) {
-        family = AF_INET;
-        (*new)->socketdes = socket(family, type, protocol);
-    }
-#endif
-
-    if ((*new)->socketdes == INVALID_SOCKET) {
-        return apr_get_netos_error();
-    }
-
-#ifdef WIN32
-    /* Socket handles are never truly inheritable, there are too many
-     * bugs associated.  WSADuplicateSocket will copy them, but for our
-     * purposes, always transform the socket() created as a non-inherited
-     * handle
-     */
-#if APR_HAS_UNICODE_FS && !defined(_WIN32_WCE)
-    IF_WIN_OS_IS_UNICODE {
-        /* A different approach.  Many users report errors such as 
-         * (32538)An operation was attempted on something that is not 
-         * a socket.  : Parent: WSADuplicateSocket failed...
-         *
-         * This appears that the duplicated handle is no longer recognized
-         * as a socket handle.  SetHandleInformation should overcome that
-         * problem by not altering the handle identifier.  But this won't
-         * work on 9x - it's unsupported.
-         */
-        SetHandleInformation((HANDLE) (*new)->socketdes, 
-                             HANDLE_FLAG_INHERIT, 0);
-    }
-#if APR_HAS_ANSI_FS
-    /* only if APR_HAS_ANSI_FS && APR_HAS_UNICODE_FS */
-    ELSE_WIN_OS_IS_ANSI
-#endif
-#endif
-#if APR_HAS_ANSI_FS || defined(_WIN32_WCE)
-    {
-        HANDLE hProcess = GetCurrentProcess();
-        HANDLE dup;
-        if (DuplicateHandle(hProcess, (HANDLE) (*new)->socketdes, hProcess, 
-                            &dup, 0, FALSE, DUPLICATE_SAME_ACCESS)) {
-            closesocket((*new)->socketdes);
-            (*new)->socketdes = (SOCKET) dup;
-        }
-    }
-#endif
-
-#endif /* def WIN32 */
-
-    set_socket_vars(*new, family, type, protocol);
-
-    (*new)->timeout = -1;
-    (*new)->disconnected = 0;
-
-    apr_pool_cleanup_register((*new)->pool, (void *)(*new), 
-                        socket_cleanup, apr_pool_cleanup_null);
-
-    return APR_SUCCESS;
-} 
-
-APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket,
-                                              apr_shutdown_how_e how)
-{
-    int winhow = 0;
-
-#ifdef SD_RECEIVE
-    switch (how) {
-        case APR_SHUTDOWN_READ: {
-            winhow = SD_RECEIVE;
-            break;
-        }
-        case APR_SHUTDOWN_WRITE: {
-            winhow = SD_SEND;
-            break;
-        }
-        case APR_SHUTDOWN_READWRITE: {
-            winhow = SD_BOTH;
-            break;
-        }
-        default:
-            return APR_BADARG;
-    }
-#endif
-    if (shutdown(thesocket->socketdes, winhow) == 0) {
-        return APR_SUCCESS;
-    }
-    else {
-        return apr_get_netos_error();
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket)
-{
-    apr_pool_cleanup_kill(thesocket->pool, thesocket, socket_cleanup);
-    return socket_cleanup(thesocket);
-}
-
-APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock,
-                                          apr_sockaddr_t *sa)
-{
-    if (bind(sock->socketdes, 
-             (struct sockaddr *)&sa->sa, 
-             sa->salen) == -1) {
-        return apr_get_netos_error();
-    }
-    else {
-        sock->local_addr = sa;
-        if (sock->local_addr->sa.sin.sin_port == 0) {
-            sock->local_port_unknown = 1; /* ephemeral port */
-        }
-        return APR_SUCCESS;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock,
-                                            apr_int32_t backlog)
-{
-    if (listen(sock->socketdes, backlog) == SOCKET_ERROR)
-        return apr_get_netos_error();
-    else
-        return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, 
-                                            apr_socket_t *sock, apr_pool_t *p)
-{
-    SOCKET s;
-#if APR_HAVE_IPV6
-    struct sockaddr_storage sa;
-#else
-    struct sockaddr sa;
-#endif
-    int salen = sizeof(sock->remote_addr->sa);
-
-    /* Don't allocate the memory until after we call accept. This allows
-       us to work with nonblocking sockets. */
-    s = accept(sock->socketdes, (struct sockaddr *)&sa, &salen);
-    if (s == INVALID_SOCKET) {
-        return apr_get_netos_error();
-    }
-
-    alloc_socket(new, p);
-    set_socket_vars(*new, sock->local_addr->sa.sin.sin_family, SOCK_STREAM, 
-                    sock->protocol);
-
-    (*new)->timeout = -1;   
-    (*new)->disconnected = 0;
-
-    (*new)->socketdes = s;
-    /* XXX next line looks bogus w.r.t. AF_INET6 support */
-    (*new)->remote_addr->salen = sizeof((*new)->remote_addr->sa);
-    memcpy (&(*new)->remote_addr->sa, &sa, salen);
-    *(*new)->local_addr = *sock->local_addr;
-    (*new)->remote_addr_unknown = 0;
-
-    /* The above assignment just overwrote the pool entry. Setting the local_addr 
-       pool for the accepted socket back to what it should be.  Otherwise all 
-       allocations for this socket will come from a server pool that is not
-       freed until the process goes down.*/
-    (*new)->local_addr->pool = p;
-
-    /* fix up any pointers which are no longer valid */
-    if (sock->local_addr->sa.sin.sin_family == AF_INET) {
-        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr;
-    }
-#if APR_HAVE_IPV6
-    else if (sock->local_addr->sa.sin.sin_family == AF_INET6) {
-        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin6.sin6_addr;
-    }
-#endif
-    (*new)->remote_addr->port = ntohs((*new)->remote_addr->sa.sin.sin_port);
-    if (sock->local_port_unknown) {
-        /* not likely for a listening socket, but theoretically possible :) */
-        (*new)->local_port_unknown = 1;
-    }
-
-#if APR_TCP_NODELAY_INHERITED
-    if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1) {
-        apr_set_option(*new, APR_TCP_NODELAY, 1);
-    }
-#endif /* TCP_NODELAY_INHERITED */
-#if APR_O_NONBLOCK_INHERITED
-    if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) {
-        apr_set_option(*new, APR_SO_NONBLOCK, 1);
-    }
-#endif /* APR_O_NONBLOCK_INHERITED */
-
-    if (sock->local_interface_unknown ||
-        !memcmp(sock->local_addr->ipaddr_ptr,
-                generic_inaddr_any,
-                sock->local_addr->ipaddr_len)) {
-        /* If the interface address inside the listening socket's local_addr wasn't
-         * up-to-date, we don't know local interface of the connected socket either.
-         *
-         * If the listening socket was not bound to a specific interface, we
-         * don't know the local_addr of the connected socket.
-         */
-        (*new)->local_interface_unknown = 1;
-    }
-
-    apr_pool_cleanup_register((*new)->pool, (void *)(*new), 
-                        socket_cleanup, apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, 
-                                             apr_sockaddr_t *sa)
-{
-    apr_status_t rv;
-
-    if ((sock->socketdes == INVALID_SOCKET) || (!sock->local_addr)) {
-        return APR_ENOTSOCK;
-    }
-
-    if (connect(sock->socketdes, (const struct sockaddr *)&sa->sa.sin,
-                sa->salen) == SOCKET_ERROR) {
-        int rc;
-        struct timeval tv, *tvptr;
-        fd_set wfdset, efdset;
-
-        rv = apr_get_netos_error();
-        if (rv != APR_FROM_OS_ERROR(WSAEWOULDBLOCK)) {
-            return rv;
-        }
-
-        if (sock->timeout == 0) {
-            /* Tell the app that the connect is in progress...
-             * Gotta play some games here.  connect on Unix will return 
-             * EINPROGRESS under the same circumstances that Windows 
-             * returns WSAEWOULDBLOCK. Do some adhoc canonicalization...
-             */
-            return APR_FROM_OS_ERROR(WSAEINPROGRESS);
-        }
-
-        /* wait for the connect to complete or timeout */
-        FD_ZERO(&wfdset);
-        FD_SET(sock->socketdes, &wfdset);
-        FD_ZERO(&efdset);
-        FD_SET(sock->socketdes, &efdset);
-
-        if (sock->timeout < 0) {
-            tvptr = NULL;
-        }
-        else {
-            /* casts for winsock/timeval definition */
-            tv.tv_sec =  (long)apr_time_sec(sock->timeout);
-            tv.tv_usec = (int)apr_time_usec(sock->timeout);
-            tvptr = &tv;
-        }
-        rc = select(FD_SETSIZE+1, NULL, &wfdset, &efdset, tvptr);
-        if (rc == SOCKET_ERROR) {
-            return apr_get_netos_error();
-        }
-        else if (!rc) {
-            return APR_FROM_OS_ERROR(WSAETIMEDOUT);
-        }
-        /* Evaluate the efdset */
-        if (FD_ISSET(sock->socketdes, &efdset)) {
-            /* The connect failed. */
-            int rclen = sizeof(rc);
-            if (getsockopt(sock->socketdes, SOL_SOCKET, SO_ERROR, (char*) &rc, &rclen)) {
-                return apr_get_netos_error();
-            }
-            return APR_FROM_OS_ERROR(rc);
-        }
-    }
-    /* connect was OK .. amazing */
-    sock->remote_addr = sa;
-    if (sock->local_addr->sa.sin.sin_port == 0) {
-        sock->local_port_unknown = 1;
-    }
-    if (!memcmp(sock->local_addr->ipaddr_ptr,
-                generic_inaddr_any,
-                sock->local_addr->ipaddr_len)) {
-        /* not bound to specific local interface; connect() had to assign
-         * one for the socket
-         */
-        sock->local_interface_unknown = 1;
-    }
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_socket_type_get(apr_socket_t *sock, int *type)
-{
-    *type = sock->type;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key,
-                                             apr_socket_t *sock)
-{
-    sock_userdata_t *cur = sock->userdata;
-
-    *data = NULL;
-
-    while (cur) {
-        if (!strcmp(cur->key, key)) {
-            *data = cur->data;
-            break;
-        }
-        cur = cur->next;
-    }
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data,
-                                             const char *key,
-                                             apr_status_t (*cleanup)(void *))
-{
-    sock_userdata_t *new = apr_palloc(sock->pool, sizeof(sock_userdata_t));
-
-    new->key = apr_pstrdup(sock->pool, key);
-    new->data = data;
-    new->next = sock->userdata;
-    sock->userdata = new;
-
-    if (cleanup) {
-        apr_pool_cleanup_register(sock->pool, data, cleanup, cleanup);
-    }
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_sock_get(apr_os_sock_t *thesock,
-                                          apr_socket_t *sock)
-{
-    *thesock = sock->socketdes;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_sock_make(apr_socket_t **apr_sock,
-                                           apr_os_sock_info_t *os_sock_info,
-                                           apr_pool_t *cont)
-{
-    alloc_socket(apr_sock, cont);
-    set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol);
-    (*apr_sock)->timeout = -1;
-    (*apr_sock)->disconnected = 0;
-    (*apr_sock)->socketdes = *os_sock_info->os_sock;
-    if (os_sock_info->local) {
-        memcpy(&(*apr_sock)->local_addr->sa.sin, 
-               os_sock_info->local, 
-               (*apr_sock)->local_addr->salen);
-        (*apr_sock)->local_addr->pool = cont;
-        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
-        (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port);
-    }
-    else {
-        (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1;
-    }
-    if (os_sock_info->remote) {
-        memcpy(&(*apr_sock)->remote_addr->sa.sin, 
-               os_sock_info->remote,
-               (*apr_sock)->remote_addr->salen);
-        (*apr_sock)->remote_addr->pool = cont;
-        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
-        (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port);
-        (*apr_sock)->remote_addr_unknown = 0;
-    }
-        
-    apr_pool_cleanup_register((*apr_sock)->pool, (void *)(*apr_sock), 
-                        socket_cleanup, apr_pool_cleanup_null);
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_sock_put(apr_socket_t **sock,
-                                          apr_os_sock_t *thesock,
-                                          apr_pool_t *cont)
-{
-    if ((*sock) == NULL) {
-        alloc_socket(sock, cont);
-        /* XXX figure out the actual socket type here */
-        /* *or* just decide that apr_os_sock_put() has to be told the family and type */
-        set_socket_vars(*sock, AF_INET, SOCK_STREAM, 0);
-        (*sock)->timeout = -1;
-        (*sock)->disconnected = 0;
-    }
-    (*sock)->local_port_unknown = (*sock)->local_interface_unknown = 1;
-    (*sock)->remote_addr_unknown = 1;
-    (*sock)->socketdes = *thesock;
-    return APR_SUCCESS;
-}
-
-
-/* Sockets cannot be inherited through the standard sockets
- * inheritence.  WSADuplicateSocket must be used.
- * This is not trivial to implement.
- */
-
-APR_DECLARE(apr_status_t) apr_socket_inherit_set(apr_socket_t *socket)    
-{    
-    return APR_ENOTIMPL;
-}    
-
-APR_DECLARE(apr_status_t) apr_socket_inherit_unset(apr_socket_t *socket)    
-{    
-    return APR_ENOTIMPL;
-}    
-
-APR_POOL_IMPLEMENT_ACCESSOR(socket);

Copied: vendor/apache/apr/1.5.2/network_io/win32/sockets.c (from rev 9273, vendor/apache/apr/dist/network_io/win32/sockets.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/win32/sockets.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/win32/sockets.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,538 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_networkio.h"
+#include "apr_network_io.h"
+#include "apr_general.h"
+#include "apr_lib.h"
+#include "apr_portable.h"
+#include "apr_strings.h"
+#include <string.h>
+#include "apr_arch_inherit.h"
+#include "apr_arch_misc.h"
+
+static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */
+
+static apr_status_t socket_cleanup(void *sock)
+{
+    apr_socket_t *thesocket = sock;
+
+    if (thesocket->socketdes != INVALID_SOCKET) {
+        if (closesocket(thesocket->socketdes) == SOCKET_ERROR) {
+            return apr_get_netos_error();
+        }
+        thesocket->socketdes = INVALID_SOCKET;
+    }
+#if APR_HAS_SENDFILE
+    if (thesocket->overlapped) {
+        CloseHandle(thesocket->overlapped->hEvent);
+        thesocket->overlapped = NULL;
+    }
+#endif
+    return APR_SUCCESS;
+}
+
+static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol)
+{
+    sock->type = type;
+    sock->protocol = protocol;
+    apr_sockaddr_vars_set(sock->local_addr, family, 0);
+    apr_sockaddr_vars_set(sock->remote_addr, family, 0);
+#if APR_HAVE_IPV6
+    /* hard-coded behavior for older Windows IPv6 */
+    if (apr_os_level < APR_WIN_VISTA && family == AF_INET6) {
+        apr_set_option(sock, APR_IPV6_V6ONLY, 1);
+    }
+#endif
+}                                                                                                  
+static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
+{
+    *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t));
+    (*new)->pool = p;
+    (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
+                                                       sizeof(apr_sockaddr_t));
+    (*new)->local_addr->pool = p;
+    
+    (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
+                                                        sizeof(apr_sockaddr_t));
+    (*new)->remote_addr->pool = p;
+    (*new)->remote_addr_unknown = 1;
+
+    /* Create a pollset with room for one descriptor. */
+    /* ### check return codes */
+    (void) apr_pollset_create(&(*new)->pollset, 1, p, 0);
+}
+
+APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock,
+                                                  int *protocol)
+{
+    *protocol = sock->protocol;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new, int family,
+                                            int type, int protocol, 
+                                            apr_pool_t *cont)
+{
+#if APR_HAVE_IPV6
+    int downgrade = (family == AF_UNSPEC);
+#endif
+
+    if (family == AF_UNSPEC) {
+#if APR_HAVE_IPV6
+        family = AF_INET6;
+#else
+        family = AF_INET;
+#endif
+    }
+
+    alloc_socket(new, cont);
+
+    /* For right now, we are not using socket groups.  We may later.
+     * No flags to use when creating a socket, so use 0 for that parameter as well.
+     */
+    (*new)->socketdes = socket(family, type, protocol);
+#if APR_HAVE_IPV6
+    if ((*new)->socketdes == INVALID_SOCKET && downgrade) {
+        family = AF_INET;
+        (*new)->socketdes = socket(family, type, protocol);
+    }
+#endif
+
+    if ((*new)->socketdes == INVALID_SOCKET) {
+        return apr_get_netos_error();
+    }
+
+#ifdef WIN32
+    /* Socket handles are never truly inheritable, there are too many
+     * bugs associated.  WSADuplicateSocket will copy them, but for our
+     * purposes, always transform the socket() created as a non-inherited
+     * handle
+     */
+#if APR_HAS_UNICODE_FS && !defined(_WIN32_WCE)
+    IF_WIN_OS_IS_UNICODE {
+        /* A different approach.  Many users report errors such as 
+         * (32538)An operation was attempted on something that is not 
+         * a socket.  : Parent: WSADuplicateSocket failed...
+         *
+         * This appears that the duplicated handle is no longer recognized
+         * as a socket handle.  SetHandleInformation should overcome that
+         * problem by not altering the handle identifier.  But this won't
+         * work on 9x - it's unsupported.
+         */
+        SetHandleInformation((HANDLE) (*new)->socketdes, 
+                             HANDLE_FLAG_INHERIT, 0);
+    }
+#if APR_HAS_ANSI_FS
+    /* only if APR_HAS_ANSI_FS && APR_HAS_UNICODE_FS */
+    ELSE_WIN_OS_IS_ANSI
+#endif
+#endif
+#if APR_HAS_ANSI_FS || defined(_WIN32_WCE)
+    {
+        HANDLE hProcess = GetCurrentProcess();
+        HANDLE dup;
+        if (DuplicateHandle(hProcess, (HANDLE) (*new)->socketdes, hProcess, 
+                            &dup, 0, FALSE, DUPLICATE_SAME_ACCESS)) {
+            closesocket((*new)->socketdes);
+            (*new)->socketdes = (SOCKET) dup;
+        }
+    }
+#endif
+
+#endif /* def WIN32 */
+
+    set_socket_vars(*new, family, type, protocol);
+
+    (*new)->timeout = -1;
+    (*new)->disconnected = 0;
+
+    apr_pool_cleanup_register((*new)->pool, (void *)(*new), 
+                        socket_cleanup, apr_pool_cleanup_null);
+
+    return APR_SUCCESS;
+} 
+
+APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket,
+                                              apr_shutdown_how_e how)
+{
+    int winhow = 0;
+
+#ifdef SD_RECEIVE
+    switch (how) {
+        case APR_SHUTDOWN_READ: {
+            winhow = SD_RECEIVE;
+            break;
+        }
+        case APR_SHUTDOWN_WRITE: {
+            winhow = SD_SEND;
+            break;
+        }
+        case APR_SHUTDOWN_READWRITE: {
+            winhow = SD_BOTH;
+            break;
+        }
+        default:
+            return APR_BADARG;
+    }
+#endif
+    if (shutdown(thesocket->socketdes, winhow) == 0) {
+        return APR_SUCCESS;
+    }
+    else {
+        return apr_get_netos_error();
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket)
+{
+    apr_pool_cleanup_kill(thesocket->pool, thesocket, socket_cleanup);
+    return socket_cleanup(thesocket);
+}
+
+APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock,
+                                          apr_sockaddr_t *sa)
+{
+    if (bind(sock->socketdes, 
+             (struct sockaddr *)&sa->sa, 
+             sa->salen) == -1) {
+        return apr_get_netos_error();
+    }
+    else {
+        sock->local_addr = sa;
+        if (sock->local_addr->sa.sin.sin_port == 0) {
+            sock->local_port_unknown = 1; /* ephemeral port */
+        }
+        return APR_SUCCESS;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock,
+                                            apr_int32_t backlog)
+{
+    if (listen(sock->socketdes, backlog) == SOCKET_ERROR)
+        return apr_get_netos_error();
+    else
+        return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, 
+                                            apr_socket_t *sock, apr_pool_t *p)
+{
+    SOCKET s;
+#if APR_HAVE_IPV6
+    struct sockaddr_storage sa;
+#else
+    struct sockaddr sa;
+#endif
+    int salen = sizeof(sock->remote_addr->sa);
+
+    /* Don't allocate the memory until after we call accept. This allows
+       us to work with nonblocking sockets. */
+    s = accept(sock->socketdes, (struct sockaddr *)&sa, &salen);
+    if (s == INVALID_SOCKET) {
+        return apr_get_netos_error();
+    }
+
+    alloc_socket(new, p);
+    set_socket_vars(*new, sock->local_addr->sa.sin.sin_family, SOCK_STREAM, 
+                    sock->protocol);
+
+    (*new)->timeout = -1;   
+    (*new)->disconnected = 0;
+
+    (*new)->socketdes = s;
+    /* XXX next line looks bogus w.r.t. AF_INET6 support */
+    (*new)->remote_addr->salen = sizeof((*new)->remote_addr->sa);
+    memcpy (&(*new)->remote_addr->sa, &sa, salen);
+    *(*new)->local_addr = *sock->local_addr;
+    (*new)->remote_addr_unknown = 0;
+
+    /* The above assignment just overwrote the pool entry. Setting the local_addr 
+       pool for the accepted socket back to what it should be.  Otherwise all 
+       allocations for this socket will come from a server pool that is not
+       freed until the process goes down.*/
+    (*new)->local_addr->pool = p;
+
+    /* fix up any pointers which are no longer valid */
+    if (sock->local_addr->sa.sin.sin_family == AF_INET) {
+        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr;
+    }
+#if APR_HAVE_IPV6
+    else if (sock->local_addr->sa.sin.sin_family == AF_INET6) {
+        (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin6.sin6_addr;
+    }
+#endif
+    (*new)->remote_addr->port = ntohs((*new)->remote_addr->sa.sin.sin_port);
+    if (sock->local_port_unknown) {
+        /* not likely for a listening socket, but theoretically possible :) */
+        (*new)->local_port_unknown = 1;
+    }
+
+#if APR_TCP_NODELAY_INHERITED
+    if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1) {
+        apr_set_option(*new, APR_TCP_NODELAY, 1);
+    }
+#endif /* TCP_NODELAY_INHERITED */
+#if APR_O_NONBLOCK_INHERITED
+    if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) {
+        apr_set_option(*new, APR_SO_NONBLOCK, 1);
+    }
+#endif /* APR_O_NONBLOCK_INHERITED */
+
+    if (sock->local_interface_unknown ||
+        !memcmp(sock->local_addr->ipaddr_ptr,
+                generic_inaddr_any,
+                sock->local_addr->ipaddr_len)) {
+        /* If the interface address inside the listening socket's local_addr wasn't
+         * up-to-date, we don't know local interface of the connected socket either.
+         *
+         * If the listening socket was not bound to a specific interface, we
+         * don't know the local_addr of the connected socket.
+         */
+        (*new)->local_interface_unknown = 1;
+    }
+
+    apr_pool_cleanup_register((*new)->pool, (void *)(*new), 
+                        socket_cleanup, apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+static apr_status_t wait_for_connect(apr_socket_t *sock)
+{
+    int rc;
+    struct timeval tv, *tvptr;
+    fd_set wfdset, efdset;
+
+    /* wait for the connect to complete or timeout */
+    FD_ZERO(&wfdset);
+    FD_SET(sock->socketdes, &wfdset);
+    FD_ZERO(&efdset);
+    FD_SET(sock->socketdes, &efdset);
+
+    if (sock->timeout < 0) {
+        tvptr = NULL;
+    }
+    else {
+        /* casts for winsock/timeval definition */
+        tv.tv_sec =  (long)apr_time_sec(sock->timeout);
+        tv.tv_usec = (int)apr_time_usec(sock->timeout);
+        tvptr = &tv;
+    }
+    rc = select(FD_SETSIZE+1, NULL, &wfdset, &efdset, tvptr);
+    if (rc == SOCKET_ERROR) {
+        return apr_get_netos_error();
+    }
+    else if (!rc) {
+        return APR_FROM_OS_ERROR(WSAETIMEDOUT);
+    }
+    /* Evaluate the efdset */
+    if (FD_ISSET(sock->socketdes, &efdset)) {
+        /* The connect failed. */
+        int rclen = sizeof(rc);
+        if (getsockopt(sock->socketdes, SOL_SOCKET, SO_ERROR, (char*) &rc, &rclen)) {
+            return apr_get_netos_error();
+        }
+        return APR_FROM_OS_ERROR(rc);
+    }
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, 
+                                             apr_sockaddr_t *sa)
+{
+    apr_status_t rv;
+
+    if ((sock->socketdes == INVALID_SOCKET) || (!sock->local_addr)) {
+        return APR_ENOTSOCK;
+    }
+
+    if (connect(sock->socketdes, (const struct sockaddr *)&sa->sa.sin,
+                sa->salen) == SOCKET_ERROR) {
+        rv = apr_get_netos_error();
+    }
+    else {
+        rv = APR_SUCCESS;
+    }
+
+    if (rv == APR_FROM_OS_ERROR(WSAEWOULDBLOCK)) {
+        if (sock->timeout == 0) {
+            /* Tell the app that the connect is in progress...
+             * Gotta play some games here.  connect on Unix will return 
+             * EINPROGRESS under the same circumstances that Windows 
+             * returns WSAEWOULDBLOCK. Do some adhoc canonicalization...
+             */
+            rv = APR_FROM_OS_ERROR(WSAEINPROGRESS);
+        }
+        else {
+            rv = wait_for_connect(sock);
+            if (rv != APR_SUCCESS) {
+                return rv;
+            }
+        }
+    }
+
+    if (memcmp(sa->ipaddr_ptr, generic_inaddr_any, sa->ipaddr_len)) {
+        /* A real remote address was passed in.  If the unspecified
+         * address was used, the actual remote addr will have to be
+         * determined using getpeername() if required. */
+        sock->remote_addr_unknown = 0;
+
+        /* Copy the address structure details in. */
+        sock->remote_addr = sa;
+    }
+
+    if (sock->local_addr->sa.sin.sin_port == 0) {
+        /* connect() got us an ephemeral port */
+        sock->local_port_unknown = 1;
+    }
+    if (!memcmp(sock->local_addr->ipaddr_ptr,
+                generic_inaddr_any,
+                sock->local_addr->ipaddr_len)) {
+        /* not bound to specific local interface; connect() had to assign
+         * one for the socket
+         */
+        sock->local_interface_unknown = 1;
+    }
+
+    if (rv != APR_SUCCESS && rv != APR_FROM_OS_ERROR(WSAEISCONN)) {
+        return rv;
+    }
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_socket_type_get(apr_socket_t *sock, int *type)
+{
+    *type = sock->type;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key,
+                                             apr_socket_t *sock)
+{
+    sock_userdata_t *cur = sock->userdata;
+
+    *data = NULL;
+
+    while (cur) {
+        if (!strcmp(cur->key, key)) {
+            *data = cur->data;
+            break;
+        }
+        cur = cur->next;
+    }
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data,
+                                             const char *key,
+                                             apr_status_t (*cleanup)(void *))
+{
+    sock_userdata_t *new = apr_palloc(sock->pool, sizeof(sock_userdata_t));
+
+    new->key = apr_pstrdup(sock->pool, key);
+    new->data = data;
+    new->next = sock->userdata;
+    sock->userdata = new;
+
+    if (cleanup) {
+        apr_pool_cleanup_register(sock->pool, data, cleanup, cleanup);
+    }
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_sock_get(apr_os_sock_t *thesock,
+                                          apr_socket_t *sock)
+{
+    *thesock = sock->socketdes;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_sock_make(apr_socket_t **apr_sock,
+                                           apr_os_sock_info_t *os_sock_info,
+                                           apr_pool_t *cont)
+{
+    alloc_socket(apr_sock, cont);
+    set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol);
+    (*apr_sock)->timeout = -1;
+    (*apr_sock)->disconnected = 0;
+    (*apr_sock)->socketdes = *os_sock_info->os_sock;
+    if (os_sock_info->local) {
+        memcpy(&(*apr_sock)->local_addr->sa.sin, 
+               os_sock_info->local, 
+               (*apr_sock)->local_addr->salen);
+        (*apr_sock)->local_addr->pool = cont;
+        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
+        (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port);
+    }
+    else {
+        (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1;
+    }
+    if (os_sock_info->remote) {
+        memcpy(&(*apr_sock)->remote_addr->sa.sin, 
+               os_sock_info->remote,
+               (*apr_sock)->remote_addr->salen);
+        (*apr_sock)->remote_addr->pool = cont;
+        /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
+        (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port);
+        (*apr_sock)->remote_addr_unknown = 0;
+    }
+        
+    apr_pool_cleanup_register((*apr_sock)->pool, (void *)(*apr_sock), 
+                        socket_cleanup, apr_pool_cleanup_null);
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_sock_put(apr_socket_t **sock,
+                                          apr_os_sock_t *thesock,
+                                          apr_pool_t *cont)
+{
+    if ((*sock) == NULL) {
+        alloc_socket(sock, cont);
+        /* XXX figure out the actual socket type here */
+        /* *or* just decide that apr_os_sock_put() has to be told the family and type */
+        set_socket_vars(*sock, AF_INET, SOCK_STREAM, 0);
+        (*sock)->timeout = -1;
+        (*sock)->disconnected = 0;
+    }
+    (*sock)->local_port_unknown = (*sock)->local_interface_unknown = 1;
+    (*sock)->remote_addr_unknown = 1;
+    (*sock)->socketdes = *thesock;
+    return APR_SUCCESS;
+}
+
+
+/* Sockets cannot be inherited through the standard sockets
+ * inheritence.  WSADuplicateSocket must be used.
+ * This is not trivial to implement.
+ */
+
+APR_DECLARE(apr_status_t) apr_socket_inherit_set(apr_socket_t *socket)    
+{    
+    return APR_ENOTIMPL;
+}    
+
+APR_DECLARE(apr_status_t) apr_socket_inherit_unset(apr_socket_t *socket)    
+{    
+    return APR_ENOTIMPL;
+}    
+
+APR_POOL_IMPLEMENT_ACCESSOR(socket);

Deleted: vendor/apache/apr/1.5.2/network_io/win32/sockopt.c
===================================================================
--- vendor/apache/apr/dist/network_io/win32/sockopt.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/network_io/win32/sockopt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,292 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_arch_misc.h" /* apr_os_level */
-#include "apr_network_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include <string.h>
-
-/* IPV6_V6ONLY is missing from pre-Windows 2008 SDK as well as MinGW
- * (at least up through 1.0.16).
- * Runtime support is a separate issue.
- */
-#ifndef IPV6_V6ONLY
-#define IPV6_V6ONLY 27
-#endif
-
-static apr_status_t soblock(SOCKET sd)
-{
-    u_long zero = 0;
-
-    if (ioctlsocket(sd, FIONBIO, &zero) == SOCKET_ERROR) {
-        return apr_get_netos_error();
-    }
-    return APR_SUCCESS;
-}
-
-static apr_status_t sononblock(SOCKET sd)
-{
-    u_long one = 1;
-
-    if (ioctlsocket(sd, FIONBIO, &one) == SOCKET_ERROR) {
-        return apr_get_netos_error();
-    }
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
-{
-    apr_status_t stat;
-
-    if (t == 0) {
-        /* Set the socket non-blocking if it was previously blocking */
-        if (sock->timeout != 0) {
-            if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS)
-                return stat;
-        }
-    }
-    else if (t > 0) {
-        /* Set the socket to blocking if it was previously non-blocking */
-        if (sock->timeout == 0) {
-            if ((stat = soblock(sock->socketdes)) != APR_SUCCESS)
-                return stat;
-        }
-        /* Reset socket timeouts if the new timeout differs from the old timeout */
-        if (sock->timeout != t) 
-        {
-            /* Win32 timeouts are in msec, represented as int */
-            sock->timeout_ms = (int)apr_time_as_msec(t);
-            setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVTIMEO, 
-                       (char *) &sock->timeout_ms, 
-                       sizeof(sock->timeout_ms));
-            setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDTIMEO, 
-                       (char *) &sock->timeout_ms, 
-                       sizeof(sock->timeout_ms));
-        }
-    }
-    else if (t < 0) {
-        int zero = 0;
-        /* Set the socket to blocking with infinite timeouts */
-        if ((stat = soblock(sock->socketdes)) != APR_SUCCESS)
-            return stat;
-        setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVTIMEO, 
-                   (char *) &zero, sizeof(zero));
-        setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDTIMEO, 
-                   (char *) &zero, sizeof(zero));
-    }
-    sock->timeout = t;
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock,
-                                             apr_int32_t opt, apr_int32_t on)
-{
-    int one;
-    apr_status_t stat;
-
-    one = on ? 1 : 0;
-
-    switch (opt) {
-    case APR_SO_KEEPALIVE:
-        if (on != apr_is_option_set(sock, APR_SO_KEEPALIVE)) {
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, 
-                           (void *)&one, sizeof(int)) == -1) {
-                return apr_get_netos_error();
-            }
-            apr_set_option(sock, APR_SO_KEEPALIVE, on);
-        }
-        break;
-    case APR_SO_DEBUG:
-        if (on != apr_is_option_set(sock, APR_SO_DEBUG)) {
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, 
-                           (void *)&one, sizeof(int)) == -1) {
-                return apr_get_netos_error();
-            }
-            apr_set_option(sock, APR_SO_DEBUG, on);
-        }
-        break;
-    case APR_SO_SNDBUF:
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF,
-                       (void *)&on, sizeof(int)) == -1) {
-            return apr_get_netos_error();
-        }
-        break;
-    case APR_SO_RCVBUF:
-        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVBUF,
-                       (void *)&on, sizeof(int)) == -1) {
-            return apr_get_netos_error();
-        }
-        break;
-    case APR_SO_REUSEADDR:
-        if (on != apr_is_option_set(sock, APR_SO_REUSEADDR)) {
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, 
-                           (void *)&one, sizeof(int)) == -1) {
-                return apr_get_netos_error();
-            }
-            apr_set_option(sock, APR_SO_REUSEADDR, on);
-        }
-        break;
-    case APR_SO_NONBLOCK:
-        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != on) {
-            if (on) {
-                if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) 
-                    return stat;
-            }
-            else {
-                if ((stat = soblock(sock->socketdes)) != APR_SUCCESS)
-                    return stat;
-            }
-            apr_set_option(sock, APR_SO_NONBLOCK, on);
-        }
-        break;
-    case APR_SO_LINGER:
-    {
-        if (apr_is_option_set(sock, APR_SO_LINGER) != on) {
-            struct linger li;
-            li.l_onoff = on;
-            li.l_linger = APR_MAX_SECS_TO_LINGER;
-            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, 
-                           (char *) &li, sizeof(struct linger)) == -1) {
-                return apr_get_netos_error();
-            }
-            apr_set_option(sock, APR_SO_LINGER, on);
-        }
-        break;
-    }
-    case APR_TCP_DEFER_ACCEPT:
-#if defined(TCP_DEFER_ACCEPT)
-        if (apr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) {
-            int optlevel = IPPROTO_TCP;
-            int optname = TCP_DEFER_ACCEPT;
-
-            if (setsockopt(sock->socketdes, optlevel, optname, 
-                           (void *)&on, sizeof(int)) == -1) {
-                return errno;
-            }
-            apr_set_option(sock, APR_TCP_DEFER_ACCEPT, on);
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-    case APR_TCP_NODELAY:
-        if (apr_is_option_set(sock, APR_TCP_NODELAY) != on) {
-            int optlevel = IPPROTO_TCP;
-            int optname = TCP_NODELAY;
-
-#if APR_HAVE_SCTP
-            if (sock->protocol == IPPROTO_SCTP) {
-                optlevel = IPPROTO_SCTP;
-                optname = SCTP_NODELAY;
-            }
-#endif
-            if (setsockopt(sock->socketdes, optlevel, optname,
-                           (void *)&on, sizeof(int)) == -1) {
-                return apr_get_netos_error();
-            }
-            apr_set_option(sock, APR_TCP_NODELAY, on);
-        }
-        break;
-    case APR_IPV6_V6ONLY:
-#if APR_HAVE_IPV6
-        if (apr_os_level < APR_WIN_VISTA && 
-            sock->local_addr->family == AF_INET6) {
-            /* apr_set_option() called at socket creation */
-            if (on) {
-                return APR_SUCCESS;
-            }
-            else {
-                return APR_ENOTIMPL;
-            }
-        }
-        /* we don't know the initial setting of this option,
-         * so don't check sock->options since that optimization
-         * won't work
-         */
-        if (setsockopt(sock->socketdes, IPPROTO_IPV6, IPV6_V6ONLY,
-                       (void *)&on, sizeof(int)) == -1) {
-            return apr_get_netos_error();
-        }
-        apr_set_option(sock, APR_IPV6_V6ONLY, on);
-#else
-        return APR_ENOTIMPL;
-#endif
-        break;
-    default:
-        return APR_EINVAL;
-        break;
-    }
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)
-{
-    *t = sock->timeout;
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock,
-                                             apr_int32_t opt, apr_int32_t *on)
-{
-    switch (opt) {
-    case APR_SO_DISCONNECTED:
-        *on = sock->disconnected;
-        break;
-    case APR_SO_KEEPALIVE:
-    case APR_SO_DEBUG:
-    case APR_SO_REUSEADDR:
-    case APR_SO_NONBLOCK:
-    case APR_SO_LINGER:
-    default:
-        *on = apr_is_option_set(sock, opt);
-        break;
-    }
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark)
-{
-    u_long oobmark;
-
-    if (ioctlsocket(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0)
-        return apr_get_netos_error();
-
-    *atmark = (oobmark != 0);
-
-    return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len,
-                                          apr_pool_t *cont)
-{
-    if (gethostname(buf, len) == -1) {
-        buf[0] = '\0';
-        return apr_get_netos_error();
-    }
-    else if (!memchr(buf, '\0', len)) { /* buffer too small */
-        buf[0] = '\0';
-        return APR_ENAMETOOLONG;
-    }
-    return APR_SUCCESS;
-}
-

Copied: vendor/apache/apr/1.5.2/network_io/win32/sockopt.c (from rev 9273, vendor/apache/apr/dist/network_io/win32/sockopt.c)
===================================================================
--- vendor/apache/apr/1.5.2/network_io/win32/sockopt.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/network_io/win32/sockopt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,302 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_networkio.h"
+#include "apr_arch_misc.h" /* apr_os_level */
+#include "apr_network_io.h"
+#include "apr_general.h"
+#include "apr_strings.h"
+#include <string.h>
+
+/* IPV6_V6ONLY is missing from pre-Windows 2008 SDK as well as MinGW
+ * (at least up through 1.0.16).
+ * Runtime support is a separate issue.
+ */
+#ifndef IPV6_V6ONLY
+#define IPV6_V6ONLY 27
+#endif
+
+static apr_status_t soblock(SOCKET sd)
+{
+    u_long zero = 0;
+
+    if (ioctlsocket(sd, FIONBIO, &zero) == SOCKET_ERROR) {
+        return apr_get_netos_error();
+    }
+    return APR_SUCCESS;
+}
+
+static apr_status_t sononblock(SOCKET sd)
+{
+    u_long one = 1;
+
+    if (ioctlsocket(sd, FIONBIO, &one) == SOCKET_ERROR) {
+        return apr_get_netos_error();
+    }
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
+{
+    apr_status_t stat;
+
+    if (t == 0) {
+        /* Set the socket non-blocking if it was previously blocking */
+        if (sock->timeout != 0) {
+            if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS)
+                return stat;
+        }
+    }
+    else if (t > 0) {
+        /* Set the socket to blocking if it was previously non-blocking */
+        if (sock->timeout == 0 || apr_is_option_set(sock, APR_SO_NONBLOCK)) {
+            if ((stat = soblock(sock->socketdes)) != APR_SUCCESS)
+                return stat;
+            apr_set_option(sock, APR_SO_NONBLOCK, 0);
+        }
+        /* Reset socket timeouts if the new timeout differs from the old timeout */
+        if (sock->timeout != t) 
+        {
+            /* Win32 timeouts are in msec, represented as int */
+            sock->timeout_ms = (int)apr_time_as_msec(t);
+            setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVTIMEO, 
+                       (char *) &sock->timeout_ms, 
+                       sizeof(sock->timeout_ms));
+            setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDTIMEO, 
+                       (char *) &sock->timeout_ms, 
+                       sizeof(sock->timeout_ms));
+        }
+    }
+    else if (t < 0) {
+        int zero = 0;
+        /* Set the socket to blocking with infinite timeouts */
+        if ((stat = soblock(sock->socketdes)) != APR_SUCCESS)
+            return stat;
+        setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVTIMEO, 
+                   (char *) &zero, sizeof(zero));
+        setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDTIMEO, 
+                   (char *) &zero, sizeof(zero));
+    }
+    sock->timeout = t;
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock,
+                                             apr_int32_t opt, apr_int32_t on)
+{
+    int one;
+    apr_status_t stat;
+
+    one = on ? 1 : 0;
+
+    switch (opt) {
+    case APR_SO_KEEPALIVE:
+        if (on != apr_is_option_set(sock, APR_SO_KEEPALIVE)) {
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, 
+                           (void *)&one, sizeof(int)) == -1) {
+                return apr_get_netos_error();
+            }
+            apr_set_option(sock, APR_SO_KEEPALIVE, on);
+        }
+        break;
+    case APR_SO_DEBUG:
+        if (on != apr_is_option_set(sock, APR_SO_DEBUG)) {
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, 
+                           (void *)&one, sizeof(int)) == -1) {
+                return apr_get_netos_error();
+            }
+            apr_set_option(sock, APR_SO_DEBUG, on);
+        }
+        break;
+    case APR_SO_SNDBUF:
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF,
+                       (void *)&on, sizeof(int)) == -1) {
+            return apr_get_netos_error();
+        }
+        break;
+    case APR_SO_RCVBUF:
+        if (setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVBUF,
+                       (void *)&on, sizeof(int)) == -1) {
+            return apr_get_netos_error();
+        }
+        break;
+    case APR_SO_BROADCAST:
+        if (on != apr_is_option_set(sock, APR_SO_BROADCAST)) {
+           if (setsockopt(sock->socketdes, SOL_SOCKET, SO_BROADCAST, 
+                           (void *)&one, sizeof(int)) == -1) {
+                return apr_get_netos_error();
+            }
+            apr_set_option(sock, APR_SO_BROADCAST, on);
+        }
+        break;
+    case APR_SO_REUSEADDR:
+        if (on != apr_is_option_set(sock, APR_SO_REUSEADDR)) {
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, 
+                           (void *)&one, sizeof(int)) == -1) {
+                return apr_get_netos_error();
+            }
+            apr_set_option(sock, APR_SO_REUSEADDR, on);
+        }
+        break;
+    case APR_SO_NONBLOCK:
+        if (apr_is_option_set(sock, APR_SO_NONBLOCK) != on) {
+            if (on) {
+                if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) 
+                    return stat;
+            }
+            else {
+                if ((stat = soblock(sock->socketdes)) != APR_SUCCESS)
+                    return stat;
+            }
+            apr_set_option(sock, APR_SO_NONBLOCK, on);
+        }
+        break;
+    case APR_SO_LINGER:
+    {
+        if (apr_is_option_set(sock, APR_SO_LINGER) != on) {
+            struct linger li;
+            li.l_onoff = on;
+            li.l_linger = APR_MAX_SECS_TO_LINGER;
+            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, 
+                           (char *) &li, sizeof(struct linger)) == -1) {
+                return apr_get_netos_error();
+            }
+            apr_set_option(sock, APR_SO_LINGER, on);
+        }
+        break;
+    }
+    case APR_TCP_DEFER_ACCEPT:
+#if defined(TCP_DEFER_ACCEPT)
+        if (apr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) {
+            int optlevel = IPPROTO_TCP;
+            int optname = TCP_DEFER_ACCEPT;
+
+            if (setsockopt(sock->socketdes, optlevel, optname, 
+                           (void *)&on, sizeof(int)) == -1) {
+                return apr_get_netos_error();
+            }
+            apr_set_option(sock, APR_TCP_DEFER_ACCEPT, on);
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+    case APR_TCP_NODELAY:
+        if (apr_is_option_set(sock, APR_TCP_NODELAY) != on) {
+            int optlevel = IPPROTO_TCP;
+            int optname = TCP_NODELAY;
+
+#if APR_HAVE_SCTP
+            if (sock->protocol == IPPROTO_SCTP) {
+                optlevel = IPPROTO_SCTP;
+                optname = SCTP_NODELAY;
+            }
+#endif
+            if (setsockopt(sock->socketdes, optlevel, optname,
+                           (void *)&on, sizeof(int)) == -1) {
+                return apr_get_netos_error();
+            }
+            apr_set_option(sock, APR_TCP_NODELAY, on);
+        }
+        break;
+    case APR_IPV6_V6ONLY:
+#if APR_HAVE_IPV6
+        if (apr_os_level < APR_WIN_VISTA && 
+            sock->local_addr->family == AF_INET6) {
+            /* apr_set_option() called at socket creation */
+            if (on) {
+                return APR_SUCCESS;
+            }
+            else {
+                return APR_ENOTIMPL;
+            }
+        }
+        /* we don't know the initial setting of this option,
+         * so don't check sock->options since that optimization
+         * won't work
+         */
+        if (setsockopt(sock->socketdes, IPPROTO_IPV6, IPV6_V6ONLY,
+                       (void *)&on, sizeof(int)) == -1) {
+            return apr_get_netos_error();
+        }
+        apr_set_option(sock, APR_IPV6_V6ONLY, on);
+#else
+        return APR_ENOTIMPL;
+#endif
+        break;
+    default:
+        return APR_EINVAL;
+        break;
+    }
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)
+{
+    *t = sock->timeout;
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock,
+                                             apr_int32_t opt, apr_int32_t *on)
+{
+    switch (opt) {
+    case APR_SO_DISCONNECTED:
+        *on = sock->disconnected;
+        break;
+    case APR_SO_KEEPALIVE:
+    case APR_SO_DEBUG:
+    case APR_SO_REUSEADDR:
+    case APR_SO_NONBLOCK:
+    case APR_SO_LINGER:
+    default:
+        *on = apr_is_option_set(sock, opt);
+        break;
+    }
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark)
+{
+    u_long oobmark;
+
+    if (ioctlsocket(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0)
+        return apr_get_netos_error();
+
+    *atmark = (oobmark != 0);
+
+    return APR_SUCCESS;
+}
+
+
+APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len,
+                                          apr_pool_t *cont)
+{
+    if (gethostname(buf, len) == -1) {
+        buf[0] = '\0';
+        return apr_get_netos_error();
+    }
+    else if (!memchr(buf, '\0', len)) { /* buffer too small */
+        buf[0] = '\0';
+        return APR_ENAMETOOLONG;
+    }
+    return APR_SUCCESS;
+}
+

Deleted: vendor/apache/apr/1.5.2/passwd/apr_getpass.c
===================================================================
--- vendor/apache/apr/dist/passwd/apr_getpass.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/passwd/apr_getpass.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,254 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* apr_password_get.c: abstraction to provide for obtaining a password from the
- * command line in whatever way the OS supports.  In the best case, it's a
- * wrapper for the system library's getpass() routine; otherwise, we
- * use one we define ourselves.
- */
-#include "apr_private.h"
-#include "apr_strings.h"
-#include "apr_lib.h"
-#include "apr_errno.h"
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-#if APR_HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if APR_HAVE_CONIO_H
-#ifdef _MSC_VER
-#pragma warning(disable: 4032)
-#include <conio.h>
-#pragma warning(default: 4032)
-#else
-#include <conio.h>
-#endif
-#endif
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#if APR_HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
-/* Disable getpass() support when PASS_MAX is defined and is "small",
- * for an arbitrary definition of "small".
- * HP-UX truncates passwords (PR49496) so we disable getpass() for
- * this platform too.
- */
-#if defined(HAVE_GETPASS) && \
-    (defined(PASS_MAX) && PASS_MAX < 32) || defined(__hpux) || defined(__hpux__)
-#undef HAVE_GETPASS
-#endif
-
-#if defined(HAVE_TERMIOS_H) && !defined(HAVE_GETPASS)
-#include <termios.h>
-#endif
-
-#if !APR_CHARSET_EBCDIC
-#define LF 10
-#define CR 13
-#else /* APR_CHARSET_EBCDIC */
-#define LF '\n'
-#define CR '\r'
-#endif /* APR_CHARSET_EBCDIC */
-
-#define MAX_STRING_LEN 256
-
-#define ERR_OVERFLOW 5
-
-#if !defined(HAVE_GETPASS) && !defined(HAVE_GETPASSPHRASE) && !defined(HAVE_GETPASS_R)
-
-/* MPE, Win32, NetWare and BeOS all lack a native getpass() */
-
-#if !defined(HAVE_TERMIOS_H) && !defined(WIN32) && !defined(NETWARE)
-/*
- * MPE lacks getpass() and a way to suppress stdin echo.  So for now, just
- * issue the prompt and read the results with echo.  (Ugh).
- */
-
-static char *get_password(const char *prompt)
-{
-    static char password[MAX_STRING_LEN];
-
-    fputs(prompt, stderr);
-    fgets((char *) &password, sizeof(password), stdin);
-
-    return (char *) &password;
-}
-
-#elif defined (HAVE_TERMIOS_H)
-#include <stdio.h>
-
-static char *get_password(const char *prompt)
-{
-    struct termios attr;
-    static char password[MAX_STRING_LEN];
-    int n=0;
-    fputs(prompt, stderr);
-    fflush(stderr);
-
-    if (tcgetattr(STDIN_FILENO, &attr) != 0)
-        return NULL;
-    attr.c_lflag &= ~(ECHO);
-
-    if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &attr) != 0)
-        return NULL;
-    while ((password[n] = getchar()) != '\n') {
-        if (n < sizeof(password) - 1 && password[n] >= ' ' && password[n] <= '~') {
-            n++;
-        } else {
-            fprintf(stderr,"\n");
-            fputs(prompt, stderr);
-            fflush(stderr);
-            n = 0;
-        }
-    }
- 
-    password[n] = '\0';
-    printf("\n");
-    if (n > (MAX_STRING_LEN - 1)) {
-        password[MAX_STRING_LEN - 1] = '\0';
-    }
-
-    attr.c_lflag |= ECHO;
-    tcsetattr(STDIN_FILENO, TCSANOW, &attr);
-    return (char*) &password;
-}
-
-#else
-
-/*
- * Windows lacks getpass().  So we'll re-implement it here.
- */
-
-static char *get_password(const char *prompt)
-{
-/* WCE lacks console. So the getpass is unsuported
- * The only way is to use the GUI so the getpass should be implemented
- * on per-application basis.
- */ 
-#ifdef _WIN32_WCE
-    return NULL;
-#else
-    static char password[128];
-    int n = 0;
-    int ch;
-
-    fputs(prompt, stderr);
-    
-    while ((ch = _getch()) != '\r') {
-        if (ch == EOF) /* EOF */ {
-            fputs("[EOF]\n", stderr);
-            return NULL;
-        }
-        else if (ch == 0 || ch == 0xE0) {
-            /* FN Keys (0 or E0) are a sentinal for a FN code */ 
-            ch = (ch << 4) | _getch();
-            /* Catch {DELETE}, {<--}, Num{DEL} and Num{<--} */
-            if ((ch == 0xE53 || ch == 0xE4B || ch == 0x053 || ch == 0x04b) && n) {
-                password[--n] = '\0';
-                fputs("\b \b", stderr);
-            }
-            else {
-                fputc('\a', stderr);
-            }
-        }
-        else if ((ch == '\b' || ch == 127) && n) /* BS/DEL */ {
-            password[--n] = '\0';
-            fputs("\b \b", stderr);
-        }
-        else if (ch == 3) /* CTRL+C */ {
-            /* _getch() bypasses Ctrl+C but not Ctrl+Break detection! */
-            fputs("^C\n", stderr);
-            exit(-1);
-        }
-        else if (ch == 26) /* CTRL+Z */ {
-            fputs("^Z\n", stderr);
-            return NULL;
-        }
-        else if (ch == 27) /* ESC */ {
-            fputc('\n', stderr);
-            fputs(prompt, stderr);
-            n = 0;
-        }
-        else if ((n < sizeof(password) - 1) && !apr_iscntrl(ch)) {
-            password[n++] = ch;
-            fputc('*', stderr);
-        }
-        else {
-            fputc('\a', stderr);
-        }
-    }
- 
-    fputc('\n', stderr);
-    password[n] = '\0';
-    return password;
-#endif
-}
-
-#endif /* no getchar or _getch */
-
-#endif /* no getpass or getpassphrase or getpass_r */
-
-/*
- * Use the OS getpass() routine (or our own) to obtain a password from
- * the input stream.
- *
- * Exit values:
- *  0: Success
- *  5: Partial success; entered text truncated to the size of the
- *     destination buffer
- *
- * Restrictions: Truncation also occurs according to the host system's
- * getpass() semantics, or at position 255 if our own version is used,
- * but the caller is *not* made aware of it unless their own buffer is
- * smaller than our own.
- */
-
-APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, apr_size_t *bufsiz)
-{
-    apr_status_t rv = APR_SUCCESS;
-#if defined(HAVE_GETPASS_R)
-    if (getpass_r(prompt, pwbuf, *bufsiz) == NULL)
-        return APR_EINVAL;
-#else
-#if defined(HAVE_GETPASSPHRASE)
-    char *pw_got = getpassphrase(prompt);
-#elif defined(HAVE_GETPASS)
-    char *pw_got = getpass(prompt);
-#else /* use the replacement implementation above */
-    char *pw_got = get_password(prompt);
-#endif
-
-    if (!pw_got)
-        return APR_EINVAL;
-    if (strlen(pw_got) >= *bufsiz) {
-        rv = APR_ENAMETOOLONG;
-    }
-    apr_cpystrn(pwbuf, pw_got, *bufsiz);
-    memset(pw_got, 0, strlen(pw_got));
-#endif /* HAVE_GETPASS_R */
-    return rv;
-}

Copied: vendor/apache/apr/1.5.2/passwd/apr_getpass.c (from rev 9273, vendor/apache/apr/dist/passwd/apr_getpass.c)
===================================================================
--- vendor/apache/apr/1.5.2/passwd/apr_getpass.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/passwd/apr_getpass.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,256 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* apr_password_get.c: abstraction to provide for obtaining a password from the
+ * command line in whatever way the OS supports.  In the best case, it's a
+ * wrapper for the system library's getpass() routine; otherwise, we
+ * use one we define ourselves.
+ */
+#include "apr_private.h"
+#include "apr_strings.h"
+#include "apr_lib.h"
+#include "apr_errno.h"
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if APR_HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#if APR_HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if APR_HAVE_CONIO_H
+#ifdef _MSC_VER
+#pragma warning(disable: 4032)
+#include <conio.h>
+#pragma warning(default: 4032)
+#else
+#include <conio.h>
+#endif
+#endif
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+#if APR_HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#if APR_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+
+/* Disable getpass() support when PASS_MAX is defined and is "small",
+ * for an arbitrary definition of "small".
+ * HP-UX truncates passwords (PR49496) so we disable getpass() for
+ * this platform too.
+ */
+#if defined(HAVE_GETPASS) && \
+    (defined(PASS_MAX) && PASS_MAX < 32) || defined(__hpux) || defined(__hpux__)
+#undef HAVE_GETPASS
+#endif
+
+#if defined(HAVE_TERMIOS_H) && !defined(HAVE_GETPASS)
+#include <termios.h>
+#endif
+
+#if !APR_CHARSET_EBCDIC
+#define LF 10
+#define CR 13
+#else /* APR_CHARSET_EBCDIC */
+#define LF '\n'
+#define CR '\r'
+#endif /* APR_CHARSET_EBCDIC */
+
+#define MAX_STRING_LEN 256
+
+#define ERR_OVERFLOW 5
+
+#if !defined(HAVE_GETPASS) && !defined(HAVE_GETPASSPHRASE) && !defined(HAVE_GETPASS_R)
+
+/* MPE, Win32, and BeOS all lack a native getpass() */
+
+#if !defined(HAVE_TERMIOS_H) && !defined(WIN32)
+/*
+ * MPE lacks getpass() and a way to suppress stdin echo.  So for now, just
+ * issue the prompt and read the results with echo.  (Ugh).
+ */
+
+static char *get_password(const char *prompt)
+{
+    static char password[MAX_STRING_LEN];
+
+    fputs(prompt, stderr);
+    fgets((char *) &password, sizeof(password), stdin);
+
+    return (char *) &password;
+}
+
+#elif defined(WIN32)
+
+/*
+ * Windows lacks getpass().  So we'll re-implement it here.
+ */
+
+static char *get_password(const char *prompt)
+{
+/* WCE lacks console. So the getpass is unsuported
+ * The only way is to use the GUI so the getpass should be implemented
+ * on per-application basis.
+ */ 
+#ifdef _WIN32_WCE
+    return NULL;
+#else
+    static char password[128];
+    int n = 0;
+    int ch;
+
+    fputs(prompt, stderr);
+    
+    while ((ch = _getch()) != '\r') {
+        if (ch == EOF) /* EOF */ {
+            fputs("[EOF]\n", stderr);
+            return NULL;
+        }
+        else if (ch == 0 || ch == 0xE0) {
+            /* FN Keys (0 or E0) are a sentinal for a FN code */ 
+            ch = (ch << 4) | _getch();
+            /* Catch {DELETE}, {<--}, Num{DEL} and Num{<--} */
+            if ((ch == 0xE53 || ch == 0xE4B || ch == 0x053 || ch == 0x04b) && n) {
+                password[--n] = '\0';
+                fputs("\b \b", stderr);
+            }
+            else {
+                fputc('\a', stderr);
+            }
+        }
+        else if ((ch == '\b' || ch == 127) && n) /* BS/DEL */ {
+            password[--n] = '\0';
+            fputs("\b \b", stderr);
+        }
+        else if (ch == 3) /* CTRL+C */ {
+            /* _getch() bypasses Ctrl+C but not Ctrl+Break detection! */
+            fputs("^C\n", stderr);
+            exit(-1);
+        }
+        else if (ch == 26) /* CTRL+Z */ {
+            fputs("^Z\n", stderr);
+            return NULL;
+        }
+        else if (ch == 27) /* ESC */ {
+            fputc('\n', stderr);
+            fputs(prompt, stderr);
+            n = 0;
+        }
+        else if ((n < sizeof(password) - 1) && !apr_iscntrl(ch)) {
+            password[n++] = ch;
+            fputc('*', stderr);
+        }
+        else {
+            fputc('\a', stderr);
+        }
+    }
+ 
+    fputc('\n', stderr);
+    password[n] = '\0';
+    return password;
+#endif
+}
+
+#elif defined (HAVE_TERMIOS_H)
+
+static char *get_password(const char *prompt)
+{
+    struct termios attr;
+    static char password[MAX_STRING_LEN];
+    int n=0;
+    fputs(prompt, stderr);
+    fflush(stderr);
+
+    if (tcgetattr(STDIN_FILENO, &attr) != 0)
+        return NULL;
+    attr.c_lflag &= ~(ECHO);
+
+    if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &attr) != 0)
+        return NULL;
+    while ((password[n] = getchar()) != '\n') {
+        if (n < sizeof(password) - 1 && password[n] >= ' ' && password[n] <= '~') {
+            n++;
+        } else {
+            fprintf(stderr,"\n");
+            fputs(prompt, stderr);
+            fflush(stderr);
+            n = 0;
+        }
+    }
+ 
+    password[n] = '\0';
+    printf("\n");
+    if (n > (MAX_STRING_LEN - 1)) {
+        password[MAX_STRING_LEN - 1] = '\0';
+    }
+
+    attr.c_lflag |= ECHO;
+    tcsetattr(STDIN_FILENO, TCSANOW, &attr);
+    return (char*) &password;
+}
+
+#endif /* no getchar or _getch */
+
+#endif /* no getpass or getpassphrase or getpass_r */
+
+/*
+ * Use the OS getpass() routine (or our own) to obtain a password from
+ * the input stream.
+ *
+ * Exit values:
+ *  0: Success
+ *  5: Partial success; entered text truncated to the size of the
+ *     destination buffer
+ *
+ * Restrictions: Truncation also occurs according to the host system's
+ * getpass() semantics, or at position 255 if our own version is used,
+ * but the caller is *not* made aware of it unless their own buffer is
+ * smaller than our own.
+ */
+
+APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, apr_size_t *bufsiz)
+{
+    apr_status_t rv = APR_SUCCESS;
+#if defined(HAVE_GETPASS_R)
+    if (getpass_r(prompt, pwbuf, *bufsiz) == NULL)
+        return APR_EINVAL;
+#else
+#if defined(HAVE_GETPASSPHRASE)
+    char *pw_got = getpassphrase(prompt);
+#elif defined(HAVE_GETPASS)
+    char *pw_got = getpass(prompt);
+#else /* use the replacement implementation above */
+    char *pw_got = get_password(prompt);
+#endif
+
+    if (!pw_got)
+        return APR_EINVAL;
+    if (strlen(pw_got) >= *bufsiz) {
+        rv = APR_ENAMETOOLONG;
+    }
+    apr_cpystrn(pwbuf, pw_got, *bufsiz);
+    memset(pw_got, 0, strlen(pw_got));
+#endif /* HAVE_GETPASS_R */
+    return rv;
+}

Deleted: vendor/apache/apr/1.5.2/poll/unix/epoll.c
===================================================================
--- vendor/apache/apr/dist/poll/unix/epoll.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/poll/unix/epoll.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,462 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_poll.h"
-#include "apr_time.h"
-#include "apr_portable.h"
-#include "apr_arch_file_io.h"
-#include "apr_arch_networkio.h"
-#include "apr_arch_poll_private.h"
-#include "apr_arch_inherit.h"
-
-#if defined(HAVE_EPOLL)
-
-static apr_int16_t get_epoll_event(apr_int16_t event)
-{
-    apr_int16_t rv = 0;
-
-    if (event & APR_POLLIN)
-        rv |= EPOLLIN;
-    if (event & APR_POLLPRI)
-        rv |= EPOLLPRI;
-    if (event & APR_POLLOUT)
-        rv |= EPOLLOUT;
-    /* APR_POLLNVAL is not handled by epoll.  EPOLLERR and EPOLLHUP are return-only */
-
-    return rv;
-}
-
-static apr_int16_t get_epoll_revent(apr_int16_t event)
-{
-    apr_int16_t rv = 0;
-
-    if (event & EPOLLIN)
-        rv |= APR_POLLIN;
-    if (event & EPOLLPRI)
-        rv |= APR_POLLPRI;
-    if (event & EPOLLOUT)
-        rv |= APR_POLLOUT;
-    if (event & EPOLLERR)
-        rv |= APR_POLLERR;
-    if (event & EPOLLHUP)
-        rv |= APR_POLLHUP;
-    /* APR_POLLNVAL is not handled by epoll. */
-
-    return rv;
-}
-
-struct apr_pollset_private_t
-{
-    int epoll_fd;
-    struct epoll_event *pollset;
-    apr_pollfd_t *result_set;
-#if APR_HAS_THREADS
-    /* A thread mutex to protect operations on the rings */
-    apr_thread_mutex_t *ring_lock;
-#endif
-    /* A ring containing all of the pollfd_t that are active */
-    APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring;
-    /* A ring of pollfd_t that have been used, and then _remove()'d */
-    APR_RING_HEAD(pfd_free_ring_t, pfd_elem_t) free_ring;
-    /* A ring of pollfd_t where rings that have been _remove()`ed but
-        might still be inside a _poll() */
-    APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring;
-};
-
-static apr_status_t impl_pollset_cleanup(apr_pollset_t *pollset)
-{
-    close(pollset->p->epoll_fd);
-    return APR_SUCCESS;
-}
-
-
-static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
-                                        apr_uint32_t size,
-                                        apr_pool_t *p,
-                                        apr_uint32_t flags)
-{
-    apr_status_t rv;
-    int fd;
-
-#ifdef HAVE_EPOLL_CREATE1
-    fd = epoll_create1(EPOLL_CLOEXEC);
-#else
-    fd = epoll_create(size);
-#endif
-    if (fd < 0) {
-        pollset->p = NULL;
-        return apr_get_netos_error();
-    }
-
-#ifndef HAVE_EPOLL_CREATE1
-    {
-        int flags;
-
-        if ((flags = fcntl(fd, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(fd, F_SETFD, flags) == -1)
-            return errno;
-    }
-#endif
-
-    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
-#if APR_HAS_THREADS
-    if ((flags & APR_POLLSET_THREADSAFE) &&
-        !(flags & APR_POLLSET_NOCOPY) &&
-        ((rv = apr_thread_mutex_create(&pollset->p->ring_lock,
-                                       APR_THREAD_MUTEX_DEFAULT,
-                                       p)) != APR_SUCCESS)) {
-        pollset->p = NULL;
-        return rv;
-    }
-#else
-    if (flags & APR_POLLSET_THREADSAFE) {
-        pollset->p = NULL;
-        return APR_ENOTIMPL;
-    }
-#endif
-    pollset->p->epoll_fd = fd;
-    pollset->p->pollset = apr_palloc(p, size * sizeof(struct epoll_event));
-    pollset->p->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
-
-    if (!(flags & APR_POLLSET_NOCOPY)) {
-        APR_RING_INIT(&pollset->p->query_ring, pfd_elem_t, link);
-        APR_RING_INIT(&pollset->p->free_ring, pfd_elem_t, link);
-        APR_RING_INIT(&pollset->p->dead_ring, pfd_elem_t, link);
-    }
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
-                                     const apr_pollfd_t *descriptor)
-{
-    struct epoll_event ev = {0};
-    int ret = -1;
-    pfd_elem_t *elem = NULL;
-    apr_status_t rv = APR_SUCCESS;
-
-    ev.events = get_epoll_event(descriptor->reqevents);
-
-    if (pollset->flags & APR_POLLSET_NOCOPY) {
-        ev.data.ptr = (void *)descriptor;
-    }
-    else {
-        pollset_lock_rings();
-
-        if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) {
-            elem = APR_RING_FIRST(&(pollset->p->free_ring));
-            APR_RING_REMOVE(elem, link);
-        }
-        else {
-            elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t));
-            APR_RING_ELEM_INIT(elem, link);
-        }
-        elem->pfd = *descriptor;
-        ev.data.ptr = elem;
-    }
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_ADD,
-                        descriptor->desc.s->socketdes, &ev);
-    }
-    else {
-        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_ADD,
-                        descriptor->desc.f->filedes, &ev);
-    }
-
-    if (0 != ret) {
-        rv = apr_get_netos_error();
-    }
-
-    if (!(pollset->flags & APR_POLLSET_NOCOPY)) {
-        if (rv != APR_SUCCESS) {
-            APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link);
-        }
-        else {
-            APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link);
-        }
-        pollset_unlock_rings();
-    }
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
-                                        const apr_pollfd_t *descriptor)
-{
-    pfd_elem_t *ep;
-    apr_status_t rv = APR_SUCCESS;
-    struct epoll_event ev = {0}; /* ignored, but must be passed with
-                                  * kernel < 2.6.9
-                                  */
-    int ret = -1;
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_DEL,
-                        descriptor->desc.s->socketdes, &ev);
-    }
-    else {
-        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_DEL,
-                        descriptor->desc.f->filedes, &ev);
-    }
-    if (ret < 0) {
-        rv = APR_NOTFOUND;
-    }
-
-    if (!(pollset->flags & APR_POLLSET_NOCOPY)) {
-        pollset_lock_rings();
-
-        for (ep = APR_RING_FIRST(&(pollset->p->query_ring));
-             ep != APR_RING_SENTINEL(&(pollset->p->query_ring),
-                                     pfd_elem_t, link);
-             ep = APR_RING_NEXT(ep, link)) {
-                
-            if (descriptor->desc.s == ep->pfd.desc.s) {
-                APR_RING_REMOVE(ep, link);
-                APR_RING_INSERT_TAIL(&(pollset->p->dead_ring),
-                                     ep, pfd_elem_t, link);
-                break;
-            }
-        }
-
-        pollset_unlock_rings();
-    }
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
-                                           apr_interval_time_t timeout,
-                                           apr_int32_t *num,
-                                           const apr_pollfd_t **descriptors)
-{
-    int ret, i, j;
-    apr_status_t rv = APR_SUCCESS;
-    apr_pollfd_t *fdptr;
-
-    if (timeout > 0) {
-        timeout /= 1000;
-    }
-
-    ret = epoll_wait(pollset->p->epoll_fd, pollset->p->pollset, pollset->nalloc,
-                     timeout);
-    (*num) = ret;
-
-    if (ret < 0) {
-        rv = apr_get_netos_error();
-    }
-    else if (ret == 0) {
-        rv = APR_TIMEUP;
-    }
-    else {
-        for (i = 0, j = 0; i < ret; i++) {
-            if (pollset->flags & APR_POLLSET_NOCOPY) {
-                fdptr = (apr_pollfd_t *)(pollset->p->pollset[i].data.ptr);
-            }
-            else {
-                fdptr = &(((pfd_elem_t *) (pollset->p->pollset[i].data.ptr))->pfd);
-            }
-            /* Check if the polled descriptor is our
-             * wakeup pipe. In that case do not put it result set.
-             */
-            if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
-                fdptr->desc_type == APR_POLL_FILE &&
-                fdptr->desc.f == pollset->wakeup_pipe[0]) {
-                apr_pollset_drain_wakeup_pipe(pollset);
-                rv = APR_EINTR;
-            }
-            else {
-                pollset->p->result_set[j] = *fdptr;
-                pollset->p->result_set[j].rtnevents =
-                    get_epoll_revent(pollset->p->pollset[i].events);
-                j++;
-            }
-        }
-        if (((*num) = j)) { /* any event besides wakeup pipe? */
-            rv = APR_SUCCESS;
-
-            if (descriptors) {
-                *descriptors = pollset->p->result_set;
-            }
-        }
-    }
-
-    if (!(pollset->flags & APR_POLLSET_NOCOPY)) {
-        pollset_lock_rings();
-
-        /* Shift all PFDs in the Dead Ring to the Free Ring */
-        APR_RING_CONCAT(&(pollset->p->free_ring), &(pollset->p->dead_ring), pfd_elem_t, link);
-
-        pollset_unlock_rings();
-    }
-
-    return rv;
-}
-
-static apr_pollset_provider_t impl = {
-    impl_pollset_create,
-    impl_pollset_add,
-    impl_pollset_remove,
-    impl_pollset_poll,
-    impl_pollset_cleanup,
-    "epoll"
-};
-
-apr_pollset_provider_t *apr_pollset_provider_epoll = &impl;
-
-static apr_status_t cb_cleanup(void *p_)
-{
-    apr_pollcb_t *pollcb = (apr_pollcb_t *) p_;
-    close(pollcb->fd);
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
-                                       apr_uint32_t size,
-                                       apr_pool_t *p,
-                                       apr_uint32_t flags)
-{
-    int fd;
-    
-#ifdef HAVE_EPOLL_CREATE1
-    fd = epoll_create1(EPOLL_CLOEXEC);
-#else
-    fd = epoll_create(size);
-#endif
-    
-    if (fd < 0) {
-        return apr_get_netos_error();
-    }
-
-#ifndef HAVE_EPOLL_CREATE1
-    {
-        int flags;
-
-        if ((flags = fcntl(fd, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(fd, F_SETFD, flags) == -1)
-            return errno;
-    }
-#endif
-    
-    pollcb->fd = fd;
-    pollcb->pollset.epoll = apr_palloc(p, size * sizeof(struct epoll_event));
-    apr_pool_cleanup_register(p, pollcb, cb_cleanup, apr_pool_cleanup_null);
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
-                                    apr_pollfd_t *descriptor)
-{
-    struct epoll_event ev;
-    int ret;
-    
-    ev.events = get_epoll_event(descriptor->reqevents);
-    ev.data.ptr = (void *)descriptor;
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_ADD,
-                        descriptor->desc.s->socketdes, &ev);
-    }
-    else {
-        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_ADD,
-                        descriptor->desc.f->filedes, &ev);
-    }
-    
-    if (ret == -1) {
-        return apr_get_netos_error();
-    }
-    
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
-                                       apr_pollfd_t *descriptor)
-{
-    apr_status_t rv = APR_SUCCESS;
-    struct epoll_event ev = {0}; /* ignored, but must be passed with
-                                  * kernel < 2.6.9
-                                  */
-    int ret = -1;
-    
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_DEL,
-                        descriptor->desc.s->socketdes, &ev);
-    }
-    else {
-        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_DEL,
-                        descriptor->desc.f->filedes, &ev);
-    }
-    
-    if (ret < 0) {
-        rv = APR_NOTFOUND;
-    }
-    
-    return rv;
-}
-
-
-static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
-                                     apr_interval_time_t timeout,
-                                     apr_pollcb_cb_t func,
-                                     void *baton)
-{
-    int ret, i;
-    apr_status_t rv = APR_SUCCESS;
-    
-    if (timeout > 0) {
-        timeout /= 1000;
-    }
-    
-    ret = epoll_wait(pollcb->fd, pollcb->pollset.epoll, pollcb->nalloc,
-                     timeout);
-    if (ret < 0) {
-        rv = apr_get_netos_error();
-    }
-    else if (ret == 0) {
-        rv = APR_TIMEUP;
-    }
-    else {
-        for (i = 0; i < ret; i++) {
-            apr_pollfd_t *pollfd = (apr_pollfd_t *)(pollcb->pollset.epoll[i].data.ptr);
-            pollfd->rtnevents = get_epoll_revent(pollcb->pollset.epoll[i].events);
-
-            rv = func(baton, pollfd);
-            if (rv) {
-                return rv;
-            }
-        }
-    }
-    
-    return rv;
-}
-
-static apr_pollcb_provider_t impl_cb = {
-    impl_pollcb_create,
-    impl_pollcb_add,
-    impl_pollcb_remove,
-    impl_pollcb_poll,
-    "epoll"
-};
-
-apr_pollcb_provider_t *apr_pollcb_provider_epoll = &impl_cb;
-
-#endif /* HAVE_EPOLL */

Copied: vendor/apache/apr/1.5.2/poll/unix/epoll.c (from rev 9273, vendor/apache/apr/dist/poll/unix/epoll.c)
===================================================================
--- vendor/apache/apr/1.5.2/poll/unix/epoll.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/poll/unix/epoll.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,481 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_poll.h"
+#include "apr_time.h"
+#include "apr_portable.h"
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_arch_poll_private.h"
+#include "apr_arch_inherit.h"
+
+#if defined(HAVE_EPOLL)
+
+static apr_int16_t get_epoll_event(apr_int16_t event)
+{
+    apr_int16_t rv = 0;
+
+    if (event & APR_POLLIN)
+        rv |= EPOLLIN;
+    if (event & APR_POLLPRI)
+        rv |= EPOLLPRI;
+    if (event & APR_POLLOUT)
+        rv |= EPOLLOUT;
+    /* APR_POLLNVAL is not handled by epoll.  EPOLLERR and EPOLLHUP are return-only */
+
+    return rv;
+}
+
+static apr_int16_t get_epoll_revent(apr_int16_t event)
+{
+    apr_int16_t rv = 0;
+
+    if (event & EPOLLIN)
+        rv |= APR_POLLIN;
+    if (event & EPOLLPRI)
+        rv |= APR_POLLPRI;
+    if (event & EPOLLOUT)
+        rv |= APR_POLLOUT;
+    if (event & EPOLLERR)
+        rv |= APR_POLLERR;
+    if (event & EPOLLHUP)
+        rv |= APR_POLLHUP;
+    /* APR_POLLNVAL is not handled by epoll. */
+
+    return rv;
+}
+
+struct apr_pollset_private_t
+{
+    int epoll_fd;
+    struct epoll_event *pollset;
+    apr_pollfd_t *result_set;
+#if APR_HAS_THREADS
+    /* A thread mutex to protect operations on the rings */
+    apr_thread_mutex_t *ring_lock;
+#endif
+    /* A ring containing all of the pollfd_t that are active */
+    APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring;
+    /* A ring of pollfd_t that have been used, and then _remove()'d */
+    APR_RING_HEAD(pfd_free_ring_t, pfd_elem_t) free_ring;
+    /* A ring of pollfd_t where rings that have been _remove()`ed but
+        might still be inside a _poll() */
+    APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring;
+};
+
+static apr_status_t impl_pollset_cleanup(apr_pollset_t *pollset)
+{
+    close(pollset->p->epoll_fd);
+    return APR_SUCCESS;
+}
+
+
+static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
+                                        apr_uint32_t size,
+                                        apr_pool_t *p,
+                                        apr_uint32_t flags)
+{
+    apr_status_t rv;
+    int fd;
+
+#ifdef HAVE_EPOLL_CREATE1
+    fd = epoll_create1(EPOLL_CLOEXEC);
+#else
+    fd = epoll_create(size);
+#endif
+    if (fd < 0) {
+        pollset->p = NULL;
+        return apr_get_netos_error();
+    }
+
+#ifndef HAVE_EPOLL_CREATE1
+    {
+        int fd_flags;
+
+        if ((fd_flags = fcntl(fd, F_GETFD)) == -1) {
+            rv = errno;
+            close(fd);
+            pollset->p = NULL;
+            return rv;
+        }
+
+        fd_flags |= FD_CLOEXEC;
+        if (fcntl(fd, F_SETFD, fd_flags) == -1) {
+            rv = errno;
+            close(fd);
+            pollset->p = NULL;
+            return rv;
+        }
+    }
+#endif
+
+    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
+#if APR_HAS_THREADS
+    if ((flags & APR_POLLSET_THREADSAFE) &&
+        !(flags & APR_POLLSET_NOCOPY) &&
+        ((rv = apr_thread_mutex_create(&pollset->p->ring_lock,
+                                       APR_THREAD_MUTEX_DEFAULT,
+                                       p)) != APR_SUCCESS)) {
+        close(fd);
+        pollset->p = NULL;
+        return rv;
+    }
+#else
+    if (flags & APR_POLLSET_THREADSAFE) {
+        close(fd);
+        pollset->p = NULL;
+        return APR_ENOTIMPL;
+    }
+#endif
+    pollset->p->epoll_fd = fd;
+    pollset->p->pollset = apr_palloc(p, size * sizeof(struct epoll_event));
+    pollset->p->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
+
+    if (!(flags & APR_POLLSET_NOCOPY)) {
+        APR_RING_INIT(&pollset->p->query_ring, pfd_elem_t, link);
+        APR_RING_INIT(&pollset->p->free_ring, pfd_elem_t, link);
+        APR_RING_INIT(&pollset->p->dead_ring, pfd_elem_t, link);
+    }
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
+                                     const apr_pollfd_t *descriptor)
+{
+    struct epoll_event ev = {0};
+    int ret = -1;
+    pfd_elem_t *elem = NULL;
+    apr_status_t rv = APR_SUCCESS;
+
+    ev.events = get_epoll_event(descriptor->reqevents);
+
+    if (pollset->flags & APR_POLLSET_NOCOPY) {
+        ev.data.ptr = (void *)descriptor;
+    }
+    else {
+        pollset_lock_rings();
+
+        if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) {
+            elem = APR_RING_FIRST(&(pollset->p->free_ring));
+            APR_RING_REMOVE(elem, link);
+        }
+        else {
+            elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t));
+            APR_RING_ELEM_INIT(elem, link);
+        }
+        elem->pfd = *descriptor;
+        ev.data.ptr = elem;
+    }
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_ADD,
+                        descriptor->desc.s->socketdes, &ev);
+    }
+    else {
+        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_ADD,
+                        descriptor->desc.f->filedes, &ev);
+    }
+
+    if (0 != ret) {
+        rv = apr_get_netos_error();
+    }
+
+    if (!(pollset->flags & APR_POLLSET_NOCOPY)) {
+        if (rv != APR_SUCCESS) {
+            APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link);
+        }
+        else {
+            APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link);
+        }
+        pollset_unlock_rings();
+    }
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
+                                        const apr_pollfd_t *descriptor)
+{
+    pfd_elem_t *ep;
+    apr_status_t rv = APR_SUCCESS;
+    struct epoll_event ev = {0}; /* ignored, but must be passed with
+                                  * kernel < 2.6.9
+                                  */
+    int ret = -1;
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_DEL,
+                        descriptor->desc.s->socketdes, &ev);
+    }
+    else {
+        ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_DEL,
+                        descriptor->desc.f->filedes, &ev);
+    }
+    if (ret < 0) {
+        rv = APR_NOTFOUND;
+    }
+
+    if (!(pollset->flags & APR_POLLSET_NOCOPY)) {
+        pollset_lock_rings();
+
+        for (ep = APR_RING_FIRST(&(pollset->p->query_ring));
+             ep != APR_RING_SENTINEL(&(pollset->p->query_ring),
+                                     pfd_elem_t, link);
+             ep = APR_RING_NEXT(ep, link)) {
+                
+            if (descriptor->desc.s == ep->pfd.desc.s) {
+                APR_RING_REMOVE(ep, link);
+                APR_RING_INSERT_TAIL(&(pollset->p->dead_ring),
+                                     ep, pfd_elem_t, link);
+                break;
+            }
+        }
+
+        pollset_unlock_rings();
+    }
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
+                                           apr_interval_time_t timeout,
+                                           apr_int32_t *num,
+                                           const apr_pollfd_t **descriptors)
+{
+    int ret, i, j;
+    apr_status_t rv = APR_SUCCESS;
+    apr_pollfd_t *fdptr;
+
+    if (timeout > 0) {
+        timeout /= 1000;
+    }
+
+    ret = epoll_wait(pollset->p->epoll_fd, pollset->p->pollset, pollset->nalloc,
+                     timeout);
+    (*num) = ret;
+
+    if (ret < 0) {
+        rv = apr_get_netos_error();
+    }
+    else if (ret == 0) {
+        rv = APR_TIMEUP;
+    }
+    else {
+        for (i = 0, j = 0; i < ret; i++) {
+            if (pollset->flags & APR_POLLSET_NOCOPY) {
+                fdptr = (apr_pollfd_t *)(pollset->p->pollset[i].data.ptr);
+            }
+            else {
+                fdptr = &(((pfd_elem_t *) (pollset->p->pollset[i].data.ptr))->pfd);
+            }
+            /* Check if the polled descriptor is our
+             * wakeup pipe. In that case do not put it result set.
+             */
+            if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
+                fdptr->desc_type == APR_POLL_FILE &&
+                fdptr->desc.f == pollset->wakeup_pipe[0]) {
+                apr_pollset_drain_wakeup_pipe(pollset);
+                rv = APR_EINTR;
+            }
+            else {
+                pollset->p->result_set[j] = *fdptr;
+                pollset->p->result_set[j].rtnevents =
+                    get_epoll_revent(pollset->p->pollset[i].events);
+                j++;
+            }
+        }
+        if (((*num) = j)) { /* any event besides wakeup pipe? */
+            rv = APR_SUCCESS;
+
+            if (descriptors) {
+                *descriptors = pollset->p->result_set;
+            }
+        }
+    }
+
+    if (!(pollset->flags & APR_POLLSET_NOCOPY)) {
+        pollset_lock_rings();
+
+        /* Shift all PFDs in the Dead Ring to the Free Ring */
+        APR_RING_CONCAT(&(pollset->p->free_ring), &(pollset->p->dead_ring), pfd_elem_t, link);
+
+        pollset_unlock_rings();
+    }
+
+    return rv;
+}
+
+static apr_pollset_provider_t impl = {
+    impl_pollset_create,
+    impl_pollset_add,
+    impl_pollset_remove,
+    impl_pollset_poll,
+    impl_pollset_cleanup,
+    "epoll"
+};
+
+apr_pollset_provider_t *apr_pollset_provider_epoll = &impl;
+
+static apr_status_t cb_cleanup(void *p_)
+{
+    apr_pollcb_t *pollcb = (apr_pollcb_t *) p_;
+    close(pollcb->fd);
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
+                                       apr_uint32_t size,
+                                       apr_pool_t *p,
+                                       apr_uint32_t flags)
+{
+    int fd;
+    
+#ifdef HAVE_EPOLL_CREATE1
+    fd = epoll_create1(EPOLL_CLOEXEC);
+#else
+    fd = epoll_create(size);
+#endif
+    
+    if (fd < 0) {
+        return apr_get_netos_error();
+    }
+
+#ifndef HAVE_EPOLL_CREATE1
+    {
+        int fd_flags;
+        apr_status_t rv;
+
+        if ((fd_flags = fcntl(fd, F_GETFD)) == -1) {
+            rv = errno;
+            close(fd);
+            pollcb->fd = -1;
+            return rv;
+        }
+
+        fd_flags |= FD_CLOEXEC;
+        if (fcntl(fd, F_SETFD, fd_flags) == -1) {
+            rv = errno;
+            close(fd);
+            pollcb->fd = -1;
+            return rv;
+        }
+    }
+#endif
+    
+    pollcb->fd = fd;
+    pollcb->pollset.epoll = apr_palloc(p, size * sizeof(struct epoll_event));
+    apr_pool_cleanup_register(p, pollcb, cb_cleanup, apr_pool_cleanup_null);
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
+                                    apr_pollfd_t *descriptor)
+{
+    struct epoll_event ev;
+    int ret;
+    
+    ev.events = get_epoll_event(descriptor->reqevents);
+    ev.data.ptr = (void *)descriptor;
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_ADD,
+                        descriptor->desc.s->socketdes, &ev);
+    }
+    else {
+        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_ADD,
+                        descriptor->desc.f->filedes, &ev);
+    }
+    
+    if (ret == -1) {
+        return apr_get_netos_error();
+    }
+    
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
+                                       apr_pollfd_t *descriptor)
+{
+    apr_status_t rv = APR_SUCCESS;
+    struct epoll_event ev = {0}; /* ignored, but must be passed with
+                                  * kernel < 2.6.9
+                                  */
+    int ret = -1;
+    
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_DEL,
+                        descriptor->desc.s->socketdes, &ev);
+    }
+    else {
+        ret = epoll_ctl(pollcb->fd, EPOLL_CTL_DEL,
+                        descriptor->desc.f->filedes, &ev);
+    }
+    
+    if (ret < 0) {
+        rv = APR_NOTFOUND;
+    }
+    
+    return rv;
+}
+
+
+static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
+                                     apr_interval_time_t timeout,
+                                     apr_pollcb_cb_t func,
+                                     void *baton)
+{
+    int ret, i;
+    apr_status_t rv = APR_SUCCESS;
+    
+    if (timeout > 0) {
+        timeout /= 1000;
+    }
+    
+    ret = epoll_wait(pollcb->fd, pollcb->pollset.epoll, pollcb->nalloc,
+                     timeout);
+    if (ret < 0) {
+        rv = apr_get_netos_error();
+    }
+    else if (ret == 0) {
+        rv = APR_TIMEUP;
+    }
+    else {
+        for (i = 0; i < ret; i++) {
+            apr_pollfd_t *pollfd = (apr_pollfd_t *)(pollcb->pollset.epoll[i].data.ptr);
+            pollfd->rtnevents = get_epoll_revent(pollcb->pollset.epoll[i].events);
+
+            rv = func(baton, pollfd);
+            if (rv) {
+                return rv;
+            }
+        }
+    }
+    
+    return rv;
+}
+
+static apr_pollcb_provider_t impl_cb = {
+    impl_pollcb_create,
+    impl_pollcb_add,
+    impl_pollcb_remove,
+    impl_pollcb_poll,
+    "epoll"
+};
+
+apr_pollcb_provider_t *apr_pollcb_provider_epoll = &impl_cb;
+
+#endif /* HAVE_EPOLL */

Deleted: vendor/apache/apr/1.5.2/poll/unix/kqueue.c
===================================================================
--- vendor/apache/apr/dist/poll/unix/kqueue.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/poll/unix/kqueue.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,480 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_poll.h"
-#include "apr_time.h"
-#include "apr_portable.h"
-#include "apr_arch_file_io.h"
-#include "apr_arch_networkio.h"
-#include "apr_arch_poll_private.h"
-#include "apr_arch_inherit.h"
-
-#ifdef HAVE_KQUEUE
-
-static apr_int16_t get_kqueue_revent(apr_int16_t event, apr_int16_t flags)
-{
-    apr_int16_t rv = 0;
-
-    if (event == EVFILT_READ)
-        rv |= APR_POLLIN;
-    else if (event == EVFILT_WRITE)
-        rv |= APR_POLLOUT;
-    if (flags & EV_EOF)
-        rv |= APR_POLLHUP;
-    /* APR_POLLPRI, APR_POLLERR, and APR_POLLNVAL are not handled by this
-     * implementation.
-     * TODO: See if EV_ERROR + certain system errors in the returned data field
-     * should map to APR_POLLNVAL.
-     */
-    return rv;
-}
-
-struct apr_pollset_private_t
-{
-    int kqueue_fd;
-    struct kevent kevent;
-    apr_uint32_t setsize;
-    struct kevent *ke_set;
-    apr_pollfd_t *result_set;
-#if APR_HAS_THREADS
-    /* A thread mutex to protect operations on the rings */
-    apr_thread_mutex_t *ring_lock;
-#endif
-    /* A ring containing all of the pollfd_t that are active */
-    APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring;
-    /* A ring of pollfd_t that have been used, and then _remove'd */
-    APR_RING_HEAD(pfd_free_ring_t, pfd_elem_t) free_ring;
-    /* A ring of pollfd_t where rings that have been _remove'd but
-       might still be inside a _poll */
-    APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring;
-};
-
-static apr_status_t impl_pollset_cleanup(apr_pollset_t *pollset)
-{
-    close(pollset->p->kqueue_fd);
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
-                                        apr_uint32_t size,
-                                        apr_pool_t *p,
-                                        apr_uint32_t flags)
-{
-    apr_status_t rv;
-    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
-#if APR_HAS_THREADS
-    if (flags & APR_POLLSET_THREADSAFE &&
-        ((rv = apr_thread_mutex_create(&pollset->p->ring_lock,
-                                       APR_THREAD_MUTEX_DEFAULT,
-                                       p)) != APR_SUCCESS)) {
-        pollset->p = NULL;
-        return rv;
-    }
-#else
-    if (flags & APR_POLLSET_THREADSAFE) {
-        pollset->p = NULL;
-        return APR_ENOTIMPL;
-    }
-#endif
-
-    /* POLLIN and POLLOUT are represented in different returned
-     * events, so we need 2 entries per descriptor in the result set,
-     * both for what is returned by kevent() and what is returned to
-     * the caller of apr_pollset_poll() (since it doesn't spend the
-     * CPU to coalesce separate APR_POLLIN and APR_POLLOUT events
-     * for the same descriptor)
-     */
-    pollset->p->setsize = 2 * size;
-
-    pollset->p->ke_set =
-        (struct kevent *) apr_palloc(p, pollset->p->setsize * sizeof(struct kevent));
-
-    memset(pollset->p->ke_set, 0, pollset->p->setsize * sizeof(struct kevent));
-
-    pollset->p->kqueue_fd = kqueue();
-
-    if (pollset->p->kqueue_fd == -1) {
-        pollset->p = NULL;
-        return apr_get_netos_error();
-    }
-
-    {
-        int flags;
-
-        if ((flags = fcntl(pollset->p->kqueue_fd, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(pollset->p->kqueue_fd, F_SETFD, flags) == -1)
-            return errno;
-    }
-
-    pollset->p->result_set = apr_palloc(p, pollset->p->setsize * sizeof(apr_pollfd_t));
-
-    APR_RING_INIT(&pollset->p->query_ring, pfd_elem_t, link);
-    APR_RING_INIT(&pollset->p->free_ring, pfd_elem_t, link);
-    APR_RING_INIT(&pollset->p->dead_ring, pfd_elem_t, link);
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
-                                     const apr_pollfd_t *descriptor)
-{
-    apr_os_sock_t fd;
-    pfd_elem_t *elem;
-    apr_status_t rv = APR_SUCCESS;
-
-    pollset_lock_rings();
-
-    if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) {
-        elem = APR_RING_FIRST(&(pollset->p->free_ring));
-        APR_RING_REMOVE(elem, link);
-    }
-    else {
-        elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t));
-        APR_RING_ELEM_INIT(elem, link);
-    }
-    elem->pfd = *descriptor;
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-
-    if (descriptor->reqevents & APR_POLLIN) {
-        EV_SET(&pollset->p->kevent, fd, EVFILT_READ, EV_ADD, 0, 0, elem);
-
-        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
-                   NULL) == -1) {
-            rv = apr_get_netos_error();
-        }
-    }
-
-    if (descriptor->reqevents & APR_POLLOUT && rv == APR_SUCCESS) {
-        EV_SET(&pollset->p->kevent, fd, EVFILT_WRITE, EV_ADD, 0, 0, elem);
-
-        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
-                   NULL) == -1) {
-            rv = apr_get_netos_error();
-        }
-    }
-
-    if (rv == APR_SUCCESS) {
-        APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link);
-    }
-    else {
-        APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link);
-    }
-
-    pollset_unlock_rings();
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
-                                        const apr_pollfd_t *descriptor)
-{
-    pfd_elem_t *ep;
-    apr_status_t rv;
-    apr_os_sock_t fd;
-
-    pollset_lock_rings();
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-
-    rv = APR_NOTFOUND; /* unless at least one of the specified conditions is */
-    if (descriptor->reqevents & APR_POLLIN) {
-        EV_SET(&pollset->p->kevent, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
-
-        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
-                   NULL) != -1) {
-            rv = APR_SUCCESS;
-        }
-    }
-
-    if (descriptor->reqevents & APR_POLLOUT) {
-        EV_SET(&pollset->p->kevent, fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
-
-        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
-                   NULL) != -1) {
-            rv = APR_SUCCESS;
-        }
-    }
-
-    for (ep = APR_RING_FIRST(&(pollset->p->query_ring));
-         ep != APR_RING_SENTINEL(&(pollset->p->query_ring),
-                                 pfd_elem_t, link);
-         ep = APR_RING_NEXT(ep, link)) {
-
-        if (descriptor->desc.s == ep->pfd.desc.s) {
-            APR_RING_REMOVE(ep, link);
-            APR_RING_INSERT_TAIL(&(pollset->p->dead_ring),
-                                 ep, pfd_elem_t, link);
-            break;
-        }
-    }
-
-    pollset_unlock_rings();
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
-                                      apr_interval_time_t timeout,
-                                      apr_int32_t *num,
-                                      const apr_pollfd_t **descriptors)
-{
-    int ret, i, j;
-    struct timespec tv, *tvptr;
-    apr_status_t rv = APR_SUCCESS;
-    apr_pollfd_t fd;
-
-    if (timeout < 0) {
-        tvptr = NULL;
-    }
-    else {
-        tv.tv_sec = (long) apr_time_sec(timeout);
-        tv.tv_nsec = (long) apr_time_usec(timeout) * 1000;
-        tvptr = &tv;
-    }
-
-    ret = kevent(pollset->p->kqueue_fd, NULL, 0, pollset->p->ke_set,
-                 pollset->p->setsize, tvptr);
-    (*num) = ret;
-    if (ret < 0) {
-        rv = apr_get_netos_error();
-    }
-    else if (ret == 0) {
-        rv = APR_TIMEUP;
-    }
-    else {
-        for (i = 0, j = 0; i < ret; i++) {
-            fd = (((pfd_elem_t*)(pollset->p->ke_set[i].udata))->pfd);
-            if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
-                fd.desc_type == APR_POLL_FILE &&
-                fd.desc.f == pollset->wakeup_pipe[0]) {
-                apr_pollset_drain_wakeup_pipe(pollset);
-                rv = APR_EINTR;
-            }
-            else {
-                pollset->p->result_set[j] = fd;
-                pollset->p->result_set[j].rtnevents =
-                        get_kqueue_revent(pollset->p->ke_set[i].filter,
-                                          pollset->p->ke_set[i].flags);
-                j++;
-            }
-        }
-        if ((*num = j)) { /* any event besides wakeup pipe? */
-            rv = APR_SUCCESS;
-            if (descriptors) {
-                *descriptors = pollset->p->result_set;
-            }
-        }
-    }
-
-
-    pollset_lock_rings();
-
-    /* Shift all PFDs in the Dead Ring to the Free Ring */
-    APR_RING_CONCAT(&(pollset->p->free_ring), &(pollset->p->dead_ring),
-                    pfd_elem_t, link);
-
-    pollset_unlock_rings();
-
-    return rv;
-}
-
-static apr_pollset_provider_t impl = {
-    impl_pollset_create,
-    impl_pollset_add,
-    impl_pollset_remove,
-    impl_pollset_poll,
-    impl_pollset_cleanup,
-    "kqueue"
-};
-
-apr_pollset_provider_t *apr_pollset_provider_kqueue = &impl;
-
-static apr_status_t cb_cleanup(void *b_)
-{
-    apr_pollcb_t *pollcb = (apr_pollcb_t *) b_;
-    close(pollcb->fd);
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
-                                       apr_uint32_t size,
-                                       apr_pool_t *p,
-                                       apr_uint32_t flags)
-{
-    int fd;
-    
-    fd = kqueue();
-    if (fd < 0) {
-        return apr_get_netos_error();
-    }
-
-    {
-        int flags;
-
-        if ((flags = fcntl(fd, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(fd, F_SETFD, flags) == -1)
-            return errno;
-    }
- 
-    pollcb->fd = fd;
-    pollcb->pollset.ke = (struct kevent *)apr_pcalloc(p, 2 * size * sizeof(struct kevent));
-    apr_pool_cleanup_register(p, pollcb, cb_cleanup, apr_pool_cleanup_null);
-    
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
-                                    apr_pollfd_t *descriptor)
-{
-    apr_os_sock_t fd;
-    struct kevent ev;
-    apr_status_t rv = APR_SUCCESS;
-    
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-    
-    if (descriptor->reqevents & APR_POLLIN) {
-        EV_SET(&ev, fd, EVFILT_READ, EV_ADD, 0, 0, descriptor);
-        
-        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) == -1) {
-            rv = apr_get_netos_error();
-        }
-    }
-    
-    if (descriptor->reqevents & APR_POLLOUT && rv == APR_SUCCESS) {
-        EV_SET(&ev, fd, EVFILT_WRITE, EV_ADD, 0, 0, descriptor);
-        
-        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) == -1) {
-            rv = apr_get_netos_error();
-        }
-    }
-    
-    return rv;
-}
-
-static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
-                                       apr_pollfd_t *descriptor)
-{
-    apr_status_t rv;
-    struct kevent ev;
-    apr_os_sock_t fd;
-    
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-
-    rv = APR_NOTFOUND; /* unless at least one of the specified conditions is */
-    if (descriptor->reqevents & APR_POLLIN) {
-        EV_SET(&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
-        
-        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) != -1) {
-            rv = APR_SUCCESS;
-        }
-    }
-    
-    if (descriptor->reqevents & APR_POLLOUT) {
-        EV_SET(&ev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
-        
-        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) != -1) {
-            rv = APR_SUCCESS;
-        }
-    }
-    
-    return rv;
-}
-
-
-static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
-                                     apr_interval_time_t timeout,
-                                     apr_pollcb_cb_t func,
-                                     void *baton)
-{
-    int ret, i;
-    struct timespec tv, *tvptr;
-    apr_status_t rv = APR_SUCCESS;
-    
-    if (timeout < 0) {
-        tvptr = NULL;
-    }
-    else {
-        tv.tv_sec = (long) apr_time_sec(timeout);
-        tv.tv_nsec = (long) apr_time_usec(timeout) * 1000;
-        tvptr = &tv;
-    }
-    
-    ret = kevent(pollcb->fd, NULL, 0, pollcb->pollset.ke, 2 * pollcb->nalloc,
-                 tvptr);
-
-    if (ret < 0) {
-        rv = apr_get_netos_error();
-    }
-    else if (ret == 0) {
-        rv = APR_TIMEUP;
-    }
-    else {
-        for (i = 0; i < ret; i++) {
-            apr_pollfd_t *pollfd = (apr_pollfd_t *)(pollcb->pollset.ke[i].udata);
-            
-            pollfd->rtnevents = get_kqueue_revent(pollcb->pollset.ke[i].filter,
-                                                  pollcb->pollset.ke[i].flags);
-            
-            rv = func(baton, pollfd);
-            
-            if (rv) {
-                return rv;
-            }
-        }
-    }
-
-    return rv;
-}
-
-static apr_pollcb_provider_t impl_cb = {
-    impl_pollcb_create,
-    impl_pollcb_add,
-    impl_pollcb_remove,
-    impl_pollcb_poll,
-    "kqueue"
-};
-
-apr_pollcb_provider_t *apr_pollcb_provider_kqueue = &impl_cb;
-
-#endif /* HAVE_KQUEUE */

Copied: vendor/apache/apr/1.5.2/poll/unix/kqueue.c (from rev 9273, vendor/apache/apr/dist/poll/unix/kqueue.c)
===================================================================
--- vendor/apache/apr/1.5.2/poll/unix/kqueue.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/poll/unix/kqueue.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,497 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_poll.h"
+#include "apr_time.h"
+#include "apr_portable.h"
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_arch_poll_private.h"
+#include "apr_arch_inherit.h"
+
+#ifdef HAVE_KQUEUE
+
+static apr_int16_t get_kqueue_revent(apr_int16_t event, apr_int16_t flags)
+{
+    apr_int16_t rv = 0;
+
+    if (event == EVFILT_READ)
+        rv |= APR_POLLIN;
+    else if (event == EVFILT_WRITE)
+        rv |= APR_POLLOUT;
+    if (flags & EV_EOF)
+        rv |= APR_POLLHUP;
+    /* APR_POLLPRI, APR_POLLERR, and APR_POLLNVAL are not handled by this
+     * implementation.
+     * TODO: See if EV_ERROR + certain system errors in the returned data field
+     * should map to APR_POLLNVAL.
+     */
+    return rv;
+}
+
+struct apr_pollset_private_t
+{
+    int kqueue_fd;
+    struct kevent kevent;
+    apr_uint32_t setsize;
+    struct kevent *ke_set;
+    apr_pollfd_t *result_set;
+#if APR_HAS_THREADS
+    /* A thread mutex to protect operations on the rings */
+    apr_thread_mutex_t *ring_lock;
+#endif
+    /* A ring containing all of the pollfd_t that are active */
+    APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring;
+    /* A ring of pollfd_t that have been used, and then _remove'd */
+    APR_RING_HEAD(pfd_free_ring_t, pfd_elem_t) free_ring;
+    /* A ring of pollfd_t where rings that have been _remove'd but
+       might still be inside a _poll */
+    APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring;
+};
+
+static apr_status_t impl_pollset_cleanup(apr_pollset_t *pollset)
+{
+    close(pollset->p->kqueue_fd);
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
+                                        apr_uint32_t size,
+                                        apr_pool_t *p,
+                                        apr_uint32_t flags)
+{
+    apr_status_t rv;
+    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
+#if APR_HAS_THREADS
+    if (flags & APR_POLLSET_THREADSAFE &&
+        ((rv = apr_thread_mutex_create(&pollset->p->ring_lock,
+                                       APR_THREAD_MUTEX_DEFAULT,
+                                       p)) != APR_SUCCESS)) {
+        pollset->p = NULL;
+        return rv;
+    }
+#else
+    if (flags & APR_POLLSET_THREADSAFE) {
+        pollset->p = NULL;
+        return APR_ENOTIMPL;
+    }
+#endif
+
+    /* POLLIN and POLLOUT are represented in different returned
+     * events, so we need 2 entries per descriptor in the result set,
+     * both for what is returned by kevent() and what is returned to
+     * the caller of apr_pollset_poll() (since it doesn't spend the
+     * CPU to coalesce separate APR_POLLIN and APR_POLLOUT events
+     * for the same descriptor)
+     */
+    pollset->p->setsize = 2 * size;
+
+    pollset->p->ke_set =
+        (struct kevent *) apr_palloc(p, pollset->p->setsize * sizeof(struct kevent));
+
+    memset(pollset->p->ke_set, 0, pollset->p->setsize * sizeof(struct kevent));
+
+    pollset->p->kqueue_fd = kqueue();
+
+    if (pollset->p->kqueue_fd == -1) {
+        pollset->p = NULL;
+        return apr_get_netos_error();
+    }
+
+    {
+        int flags;
+
+        if ((flags = fcntl(pollset->p->kqueue_fd, F_GETFD)) == -1) {
+            rv = errno;
+            close(pollset->p->kqueue_fd);
+            pollset->p = NULL;
+            return rv;
+        }
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(pollset->p->kqueue_fd, F_SETFD, flags) == -1) {
+            rv = errno;
+            close(pollset->p->kqueue_fd);
+            pollset->p = NULL;
+            return rv;
+        }
+    }
+
+    pollset->p->result_set = apr_palloc(p, pollset->p->setsize * sizeof(apr_pollfd_t));
+
+    APR_RING_INIT(&pollset->p->query_ring, pfd_elem_t, link);
+    APR_RING_INIT(&pollset->p->free_ring, pfd_elem_t, link);
+    APR_RING_INIT(&pollset->p->dead_ring, pfd_elem_t, link);
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
+                                     const apr_pollfd_t *descriptor)
+{
+    apr_os_sock_t fd;
+    pfd_elem_t *elem;
+    apr_status_t rv = APR_SUCCESS;
+
+    pollset_lock_rings();
+
+    if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) {
+        elem = APR_RING_FIRST(&(pollset->p->free_ring));
+        APR_RING_REMOVE(elem, link);
+    }
+    else {
+        elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t));
+        APR_RING_ELEM_INIT(elem, link);
+    }
+    elem->pfd = *descriptor;
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    if (descriptor->reqevents & APR_POLLIN) {
+        EV_SET(&pollset->p->kevent, fd, EVFILT_READ, EV_ADD, 0, 0, elem);
+
+        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
+                   NULL) == -1) {
+            rv = apr_get_netos_error();
+        }
+    }
+
+    if (descriptor->reqevents & APR_POLLOUT && rv == APR_SUCCESS) {
+        EV_SET(&pollset->p->kevent, fd, EVFILT_WRITE, EV_ADD, 0, 0, elem);
+
+        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
+                   NULL) == -1) {
+            rv = apr_get_netos_error();
+        }
+    }
+
+    if (rv == APR_SUCCESS) {
+        APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link);
+    }
+    else {
+        APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link);
+    }
+
+    pollset_unlock_rings();
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
+                                        const apr_pollfd_t *descriptor)
+{
+    pfd_elem_t *ep;
+    apr_status_t rv;
+    apr_os_sock_t fd;
+
+    pollset_lock_rings();
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    rv = APR_NOTFOUND; /* unless at least one of the specified conditions is */
+    if (descriptor->reqevents & APR_POLLIN) {
+        EV_SET(&pollset->p->kevent, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
+
+        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
+                   NULL) != -1) {
+            rv = APR_SUCCESS;
+        }
+    }
+
+    if (descriptor->reqevents & APR_POLLOUT) {
+        EV_SET(&pollset->p->kevent, fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
+
+        if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0,
+                   NULL) != -1) {
+            rv = APR_SUCCESS;
+        }
+    }
+
+    for (ep = APR_RING_FIRST(&(pollset->p->query_ring));
+         ep != APR_RING_SENTINEL(&(pollset->p->query_ring),
+                                 pfd_elem_t, link);
+         ep = APR_RING_NEXT(ep, link)) {
+
+        if (descriptor->desc.s == ep->pfd.desc.s) {
+            APR_RING_REMOVE(ep, link);
+            APR_RING_INSERT_TAIL(&(pollset->p->dead_ring),
+                                 ep, pfd_elem_t, link);
+            break;
+        }
+    }
+
+    pollset_unlock_rings();
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
+                                      apr_interval_time_t timeout,
+                                      apr_int32_t *num,
+                                      const apr_pollfd_t **descriptors)
+{
+    int ret, i, j;
+    struct timespec tv, *tvptr;
+    apr_status_t rv = APR_SUCCESS;
+    apr_pollfd_t fd;
+
+    if (timeout < 0) {
+        tvptr = NULL;
+    }
+    else {
+        tv.tv_sec = (long) apr_time_sec(timeout);
+        tv.tv_nsec = (long) apr_time_usec(timeout) * 1000;
+        tvptr = &tv;
+    }
+
+    ret = kevent(pollset->p->kqueue_fd, NULL, 0, pollset->p->ke_set,
+                 pollset->p->setsize, tvptr);
+    (*num) = ret;
+    if (ret < 0) {
+        rv = apr_get_netos_error();
+    }
+    else if (ret == 0) {
+        rv = APR_TIMEUP;
+    }
+    else {
+        for (i = 0, j = 0; i < ret; i++) {
+            fd = (((pfd_elem_t*)(pollset->p->ke_set[i].udata))->pfd);
+            if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
+                fd.desc_type == APR_POLL_FILE &&
+                fd.desc.f == pollset->wakeup_pipe[0]) {
+                apr_pollset_drain_wakeup_pipe(pollset);
+                rv = APR_EINTR;
+            }
+            else {
+                pollset->p->result_set[j] = fd;
+                pollset->p->result_set[j].rtnevents =
+                        get_kqueue_revent(pollset->p->ke_set[i].filter,
+                                          pollset->p->ke_set[i].flags);
+                j++;
+            }
+        }
+        if ((*num = j)) { /* any event besides wakeup pipe? */
+            rv = APR_SUCCESS;
+            if (descriptors) {
+                *descriptors = pollset->p->result_set;
+            }
+        }
+    }
+
+
+    pollset_lock_rings();
+
+    /* Shift all PFDs in the Dead Ring to the Free Ring */
+    APR_RING_CONCAT(&(pollset->p->free_ring), &(pollset->p->dead_ring),
+                    pfd_elem_t, link);
+
+    pollset_unlock_rings();
+
+    return rv;
+}
+
+static apr_pollset_provider_t impl = {
+    impl_pollset_create,
+    impl_pollset_add,
+    impl_pollset_remove,
+    impl_pollset_poll,
+    impl_pollset_cleanup,
+    "kqueue"
+};
+
+apr_pollset_provider_t *apr_pollset_provider_kqueue = &impl;
+
+static apr_status_t cb_cleanup(void *b_)
+{
+    apr_pollcb_t *pollcb = (apr_pollcb_t *) b_;
+    close(pollcb->fd);
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
+                                       apr_uint32_t size,
+                                       apr_pool_t *p,
+                                       apr_uint32_t flags)
+{
+    int fd;
+    
+    fd = kqueue();
+    if (fd < 0) {
+        return apr_get_netos_error();
+    }
+
+    {
+        int flags;
+        apr_status_t rv;
+
+        if ((flags = fcntl(fd, F_GETFD)) == -1) {
+            rv = errno;
+            close(fd);
+            pollcb->fd = -1;
+            return rv;
+        }
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(fd, F_SETFD, flags) == -1) {
+            rv = errno;
+            close(fd);
+            pollcb->fd = -1;
+            return rv;
+        }
+    }
+ 
+    pollcb->fd = fd;
+    pollcb->pollset.ke = (struct kevent *)apr_pcalloc(p, 2 * size * sizeof(struct kevent));
+    apr_pool_cleanup_register(p, pollcb, cb_cleanup, apr_pool_cleanup_null);
+    
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
+                                    apr_pollfd_t *descriptor)
+{
+    apr_os_sock_t fd;
+    struct kevent ev;
+    apr_status_t rv = APR_SUCCESS;
+    
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+    
+    if (descriptor->reqevents & APR_POLLIN) {
+        EV_SET(&ev, fd, EVFILT_READ, EV_ADD, 0, 0, descriptor);
+        
+        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) == -1) {
+            rv = apr_get_netos_error();
+        }
+    }
+    
+    if (descriptor->reqevents & APR_POLLOUT && rv == APR_SUCCESS) {
+        EV_SET(&ev, fd, EVFILT_WRITE, EV_ADD, 0, 0, descriptor);
+        
+        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) == -1) {
+            rv = apr_get_netos_error();
+        }
+    }
+    
+    return rv;
+}
+
+static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
+                                       apr_pollfd_t *descriptor)
+{
+    apr_status_t rv;
+    struct kevent ev;
+    apr_os_sock_t fd;
+    
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    rv = APR_NOTFOUND; /* unless at least one of the specified conditions is */
+    if (descriptor->reqevents & APR_POLLIN) {
+        EV_SET(&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
+        
+        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) != -1) {
+            rv = APR_SUCCESS;
+        }
+    }
+    
+    if (descriptor->reqevents & APR_POLLOUT) {
+        EV_SET(&ev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
+        
+        if (kevent(pollcb->fd, &ev, 1, NULL, 0, NULL) != -1) {
+            rv = APR_SUCCESS;
+        }
+    }
+    
+    return rv;
+}
+
+
+static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
+                                     apr_interval_time_t timeout,
+                                     apr_pollcb_cb_t func,
+                                     void *baton)
+{
+    int ret, i;
+    struct timespec tv, *tvptr;
+    apr_status_t rv = APR_SUCCESS;
+    
+    if (timeout < 0) {
+        tvptr = NULL;
+    }
+    else {
+        tv.tv_sec = (long) apr_time_sec(timeout);
+        tv.tv_nsec = (long) apr_time_usec(timeout) * 1000;
+        tvptr = &tv;
+    }
+    
+    ret = kevent(pollcb->fd, NULL, 0, pollcb->pollset.ke, 2 * pollcb->nalloc,
+                 tvptr);
+
+    if (ret < 0) {
+        rv = apr_get_netos_error();
+    }
+    else if (ret == 0) {
+        rv = APR_TIMEUP;
+    }
+    else {
+        for (i = 0; i < ret; i++) {
+            apr_pollfd_t *pollfd = (apr_pollfd_t *)(pollcb->pollset.ke[i].udata);
+            
+            pollfd->rtnevents = get_kqueue_revent(pollcb->pollset.ke[i].filter,
+                                                  pollcb->pollset.ke[i].flags);
+            
+            rv = func(baton, pollfd);
+            
+            if (rv) {
+                return rv;
+            }
+        }
+    }
+
+    return rv;
+}
+
+static apr_pollcb_provider_t impl_cb = {
+    impl_pollcb_create,
+    impl_pollcb_add,
+    impl_pollcb_remove,
+    impl_pollcb_poll,
+    "kqueue"
+};
+
+apr_pollcb_provider_t *apr_pollcb_provider_kqueue = &impl_cb;
+
+#endif /* HAVE_KQUEUE */

Deleted: vendor/apache/apr/1.5.2/poll/unix/poll.c
===================================================================
--- vendor/apache/apr/dist/poll/unix/poll.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/poll/unix/poll.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,440 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_poll.h"
-#include "apr_time.h"
-#include "apr_portable.h"
-#include "apr_arch_file_io.h"
-#include "apr_arch_networkio.h"
-#include "apr_arch_misc.h"
-#include "apr_arch_poll_private.h"
-
-#if defined(HAVE_POLL)
-
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-
-static apr_int16_t get_event(apr_int16_t event)
-{
-    apr_int16_t rv = 0;
-
-    if (event & APR_POLLIN)
-        rv |= POLLIN;
-    if (event & APR_POLLPRI)
-        rv |= POLLPRI;
-    if (event & APR_POLLOUT)
-        rv |= POLLOUT;
-    /* POLLERR, POLLHUP, and POLLNVAL aren't valid as requested events */
-
-    return rv;
-}
-
-static apr_int16_t get_revent(apr_int16_t event)
-{
-    apr_int16_t rv = 0;
-
-    if (event & POLLIN)
-        rv |= APR_POLLIN;
-    if (event & POLLPRI)
-        rv |= APR_POLLPRI;
-    if (event & POLLOUT)
-        rv |= APR_POLLOUT;
-    if (event & POLLERR)
-        rv |= APR_POLLERR;
-    if (event & POLLHUP)
-        rv |= APR_POLLHUP;
-    if (event & POLLNVAL)
-        rv |= APR_POLLNVAL;
-
-    return rv;
-}
-
-#ifdef POLL_USES_POLL
-
-#define SMALL_POLLSET_LIMIT  8
-
-APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num,
-                                   apr_int32_t *nsds, 
-                                   apr_interval_time_t timeout)
-{
-    int i, num_to_poll;
-#ifdef HAVE_VLA
-    /* XXX: I trust that this is a segv when insufficient stack exists? */
-    struct pollfd pollset[num];
-#elif defined(HAVE_ALLOCA)
-    struct pollfd *pollset = alloca(sizeof(struct pollfd) * num);
-    if (!pollset)
-        return APR_ENOMEM;
-#else
-    struct pollfd tmp_pollset[SMALL_POLLSET_LIMIT];
-    struct pollfd *pollset;
-
-    if (num <= SMALL_POLLSET_LIMIT) {
-        pollset = tmp_pollset;
-    }
-    else {
-        /* This does require O(n) to copy the descriptors to the internal
-         * mapping.
-         */
-        pollset = malloc(sizeof(struct pollfd) * num);
-        /* The other option is adding an apr_pool_abort() fn to invoke
-         * the pool's out of memory handler
-         */
-        if (!pollset)
-            return APR_ENOMEM;
-    }
-#endif
-    for (i = 0; i < num; i++) {
-        if (aprset[i].desc_type == APR_POLL_SOCKET) {
-            pollset[i].fd = aprset[i].desc.s->socketdes;
-        }
-        else if (aprset[i].desc_type == APR_POLL_FILE) {
-            pollset[i].fd = aprset[i].desc.f->filedes;
-        }
-        else {
-            break;
-        }
-        pollset[i].events = get_event(aprset[i].reqevents);
-    }
-    num_to_poll = i;
-
-    if (timeout > 0) {
-        timeout /= 1000; /* convert microseconds to milliseconds */
-    }
-
-    i = poll(pollset, num_to_poll, timeout);
-    (*nsds) = i;
-
-    if (i > 0) { /* poll() sets revents only if an event was signalled;
-                  * we don't promise to set rtnevents unless an event
-                  * was signalled
-                  */
-        for (i = 0; i < num; i++) {
-            aprset[i].rtnevents = get_revent(pollset[i].revents);
-        }
-    }
-    
-#if !defined(HAVE_VLA) && !defined(HAVE_ALLOCA)
-    if (num > SMALL_POLLSET_LIMIT) {
-        free(pollset);
-    }
-#endif
-
-    if ((*nsds) < 0) {
-        return apr_get_netos_error();
-    }
-    if ((*nsds) == 0) {
-        return APR_TIMEUP;
-    }
-    return APR_SUCCESS;
-}
-
-
-#endif /* POLL_USES_POLL */
-
-struct apr_pollset_private_t
-{
-    struct pollfd *pollset;
-    apr_pollfd_t *query_set;
-    apr_pollfd_t *result_set;
-};
-
-static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
-                                        apr_uint32_t size,
-                                        apr_pool_t *p,
-                                        apr_uint32_t flags)
-{
-    if (flags & APR_POLLSET_THREADSAFE) {                
-        return APR_ENOTIMPL;
-    }
-#ifdef WIN32
-    if (!APR_HAVE_LATE_DLL_FUNC(WSAPoll)) {
-        return APR_ENOTIMPL;
-    }
-#endif
-    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
-    pollset->p->pollset = apr_palloc(p, size * sizeof(struct pollfd));
-    pollset->p->query_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
-    pollset->p->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
-                                     const apr_pollfd_t *descriptor)
-{
-    if (pollset->nelts == pollset->nalloc) {
-        return APR_ENOMEM;
-    }
-
-    pollset->p->query_set[pollset->nelts] = *descriptor;
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        pollset->p->pollset[pollset->nelts].fd = descriptor->desc.s->socketdes;
-    }
-    else {
-#if APR_FILES_AS_SOCKETS
-        pollset->p->pollset[pollset->nelts].fd = descriptor->desc.f->filedes;
-#else
-        if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
-            descriptor->desc.f == pollset->wakeup_pipe[0])
-            pollset->p->pollset[pollset->nelts].fd = (SOCKET)descriptor->desc.f->filedes;
-        else
-            return APR_EBADF;
-#endif
-    }
-    pollset->p->pollset[pollset->nelts].events =
-        get_event(descriptor->reqevents);
-    pollset->nelts++;
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
-                                        const apr_pollfd_t *descriptor)
-{
-    apr_uint32_t i;
-
-    for (i = 0; i < pollset->nelts; i++) {
-        if (descriptor->desc.s == pollset->p->query_set[i].desc.s) {
-            /* Found an instance of the fd: remove this and any other copies */
-            apr_uint32_t dst = i;
-            apr_uint32_t old_nelts = pollset->nelts;
-            pollset->nelts--;
-            for (i++; i < old_nelts; i++) {
-                if (descriptor->desc.s == pollset->p->query_set[i].desc.s) {
-                    pollset->nelts--;
-                }
-                else {
-                    pollset->p->pollset[dst] = pollset->p->pollset[i];
-                    pollset->p->query_set[dst] = pollset->p->query_set[i];
-                    dst++;
-                }
-            }
-            return APR_SUCCESS;
-        }
-    }
-
-    return APR_NOTFOUND;
-}
-
-static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
-                                      apr_interval_time_t timeout,
-                                      apr_int32_t *num,
-                                      const apr_pollfd_t **descriptors)
-{
-    int ret;
-    apr_status_t rv = APR_SUCCESS;
-#ifdef WIN32
-    apr_interval_time_t orig_timeout = timeout;
-#endif
-
-    if (timeout > 0) {
-        timeout /= 1000;
-    }
-#ifdef WIN32
-    /* WSAPoll() requires at least one socket. */
-    if (pollset->nelts == 0) {
-        *num = 0;
-        if (orig_timeout > 0) {
-            apr_sleep(orig_timeout);
-            return APR_TIMEUP;
-        }
-        return APR_SUCCESS;
-    }
-
-    ret = WSAPoll(pollset->p->pollset, pollset->nelts, (int)timeout);
-#else
-    ret = poll(pollset->p->pollset, pollset->nelts, timeout);
-#endif
-    (*num) = ret;
-    if (ret < 0) {
-        return apr_get_netos_error();
-    }
-    else if (ret == 0) {
-        return APR_TIMEUP;
-    }
-    else {
-        apr_uint32_t i, j;
-
-        for (i = 0, j = 0; i < pollset->nelts; i++) {
-            if (pollset->p->pollset[i].revents != 0) {
-                /* Check if the polled descriptor is our
-                 * wakeup pipe. In that case do not put it result set.
-                 */
-                if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
-                    pollset->p->query_set[i].desc_type == APR_POLL_FILE &&
-                    pollset->p->query_set[i].desc.f == pollset->wakeup_pipe[0]) {
-                        apr_pollset_drain_wakeup_pipe(pollset);
-                        rv = APR_EINTR;
-                }
-                else {
-                    pollset->p->result_set[j] = pollset->p->query_set[i];
-                    pollset->p->result_set[j].rtnevents =
-                        get_revent(pollset->p->pollset[i].revents);
-                    j++;
-                }
-            }
-        }
-        if (((*num) = j) > 0)
-            rv = APR_SUCCESS;
-    }
-    if (descriptors && (*num))
-        *descriptors = pollset->p->result_set;
-    return rv;
-}
-
-static apr_pollset_provider_t impl = {
-    impl_pollset_create,
-    impl_pollset_add,
-    impl_pollset_remove,
-    impl_pollset_poll,
-    NULL,
-    "poll"
-};
-
-apr_pollset_provider_t *apr_pollset_provider_poll = &impl;
-
-/* Poll method pollcb.
- * This is probably usable only for WIN32 having WSAPoll
- */
-static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
-                                       apr_uint32_t size,
-                                       apr_pool_t *p,
-                                       apr_uint32_t flags)
-{
-#if APR_HAS_THREADS
-    return APR_ENOTIMPL;
-#else
-    pollcb->fd = -1;
-#ifdef WIN32
-    if (!APR_HAVE_LATE_DLL_FUNC(WSAPoll)) {
-        return APR_ENOTIMPL;
-    }
-#endif
-
-    pollcb->pollset.ps = apr_palloc(p, size * sizeof(struct pollfd));
-    pollcb->copyset = apr_palloc(p, size * sizeof(apr_pollfd_t *));
-
-    return APR_SUCCESS;
-#endif
-}
-
-static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
-                                    apr_pollfd_t *descriptor)
-{
-    if (pollcb->nelts == pollcb->nalloc) {
-        return APR_ENOMEM;
-    }
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        pollcb->pollset.ps[pollcb->nelts].fd = descriptor->desc.s->socketdes;
-    }
-    else {
-#if APR_FILES_AS_SOCKETS
-        pollcb->pollset.ps[pollcb->nelts].fd = descriptor->desc.f->filedes;
-#else
-        return APR_EBADF;
-#endif
-    }
-
-    pollcb->pollset.ps[pollcb->nelts].events =
-        get_event(descriptor->reqevents);
-    pollcb->copyset[pollcb->nelts] = descriptor;
-    pollcb->nelts++;
-    
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
-                                       apr_pollfd_t *descriptor)
-{
-    apr_uint32_t i;
-
-    for (i = 0; i < pollcb->nelts; i++) {
-        if (descriptor->desc.s == pollcb->copyset[i]->desc.s) {
-            /* Found an instance of the fd: remove this and any other copies */
-            apr_uint32_t dst = i;
-            apr_uint32_t old_nelts = pollcb->nelts;
-            pollcb->nelts--;
-            for (i++; i < old_nelts; i++) {
-                if (descriptor->desc.s == pollcb->copyset[i]->desc.s) {
-                    pollcb->nelts--;
-                }
-                else {
-                    pollcb->pollset.ps[dst] = pollcb->pollset.ps[i];
-                    pollcb->copyset[dst] = pollcb->copyset[i];
-                    dst++;
-                }
-            }
-            return APR_SUCCESS;
-        }
-    }
-
-    return APR_NOTFOUND;
-}
-
-static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
-                                     apr_interval_time_t timeout,
-                                     apr_pollcb_cb_t func,
-                                     void *baton)
-{
-    int ret;
-    apr_status_t rv = APR_SUCCESS;
-    apr_uint32_t i;
-
-    if (timeout > 0) {
-        timeout /= 1000;
-    }
-#ifdef WIN32
-    ret = WSAPoll(pollcb->pollset.ps, pollcb->nelts, (int)timeout);
-#else
-    ret = poll(pollcb->pollset.ps, pollcb->nelts, timeout);
-#endif
-    if (ret < 0) {
-        return apr_get_netos_error();
-    }
-    else if (ret == 0) {
-        return APR_TIMEUP;
-    }
-    else {
-        for (i = 0; i < pollcb->nelts; i++) {
-            if (pollcb->pollset.ps[i].revents != 0) {
-                apr_pollfd_t *pollfd = pollcb->copyset[i];
-                pollfd->rtnevents = get_revent(pollcb->pollset.ps[i].revents);                    
-                rv = func(baton, pollfd);
-                if (rv) {
-                    return rv;
-                }
-            }
-        }
-    }
-    return rv;
-}
-
-static apr_pollcb_provider_t impl_cb = {
-    impl_pollcb_create,
-    impl_pollcb_add,
-    impl_pollcb_remove,
-    impl_pollcb_poll,
-    "poll"
-};
-
-apr_pollcb_provider_t *apr_pollcb_provider_poll = &impl_cb;
-
-#endif /* HAVE_POLL */

Copied: vendor/apache/apr/1.5.2/poll/unix/poll.c (from rev 9273, vendor/apache/apr/dist/poll/unix/poll.c)
===================================================================
--- vendor/apache/apr/1.5.2/poll/unix/poll.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/poll/unix/poll.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,450 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_poll.h"
+#include "apr_time.h"
+#include "apr_portable.h"
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_arch_misc.h"
+#include "apr_arch_poll_private.h"
+
+#if defined(HAVE_POLL)
+
+#ifdef HAVE_ALLOCA_H
+#include <alloca.h>
+#endif
+
+static apr_int16_t get_event(apr_int16_t event)
+{
+    apr_int16_t rv = 0;
+
+    if (event & APR_POLLIN)
+        rv |= POLLIN;
+    if (event & APR_POLLPRI)
+        rv |= POLLPRI;
+    if (event & APR_POLLOUT)
+        rv |= POLLOUT;
+    /* POLLERR, POLLHUP, and POLLNVAL aren't valid as requested events */
+
+    return rv;
+}
+
+static apr_int16_t get_revent(apr_int16_t event)
+{
+    apr_int16_t rv = 0;
+
+    if (event & POLLIN)
+        rv |= APR_POLLIN;
+    if (event & POLLPRI)
+        rv |= APR_POLLPRI;
+    if (event & POLLOUT)
+        rv |= APR_POLLOUT;
+    if (event & POLLERR)
+        rv |= APR_POLLERR;
+    if (event & POLLHUP)
+        rv |= APR_POLLHUP;
+    if (event & POLLNVAL)
+        rv |= APR_POLLNVAL;
+
+    return rv;
+}
+
+#ifdef POLL_USES_POLL
+
+#define SMALL_POLLSET_LIMIT  8
+
+APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num,
+                                   apr_int32_t *nsds, 
+                                   apr_interval_time_t timeout)
+{
+    int i, num_to_poll;
+#ifdef HAVE_VLA
+    /* XXX: I trust that this is a segv when insufficient stack exists? */
+    struct pollfd pollset[num];
+#elif defined(HAVE_ALLOCA)
+    struct pollfd *pollset = alloca(sizeof(struct pollfd) * num);
+    if (!pollset)
+        return APR_ENOMEM;
+#else
+    struct pollfd tmp_pollset[SMALL_POLLSET_LIMIT];
+    struct pollfd *pollset;
+
+    if (num <= SMALL_POLLSET_LIMIT) {
+        pollset = tmp_pollset;
+    }
+    else {
+        /* This does require O(n) to copy the descriptors to the internal
+         * mapping.
+         */
+        pollset = malloc(sizeof(struct pollfd) * num);
+        /* The other option is adding an apr_pool_abort() fn to invoke
+         * the pool's out of memory handler
+         */
+        if (!pollset)
+            return APR_ENOMEM;
+    }
+#endif
+    for (i = 0; i < num; i++) {
+        if (aprset[i].desc_type == APR_POLL_SOCKET) {
+            pollset[i].fd = aprset[i].desc.s->socketdes;
+        }
+        else if (aprset[i].desc_type == APR_POLL_FILE) {
+            pollset[i].fd = aprset[i].desc.f->filedes;
+        }
+        else {
+            break;
+        }
+        pollset[i].events = get_event(aprset[i].reqevents);
+    }
+    num_to_poll = i;
+
+    if (timeout > 0) {
+        timeout /= 1000; /* convert microseconds to milliseconds */
+    }
+
+    i = poll(pollset, num_to_poll, timeout);
+    (*nsds) = i;
+
+    if (i > 0) { /* poll() sets revents only if an event was signalled;
+                  * we don't promise to set rtnevents unless an event
+                  * was signalled
+                  */
+        for (i = 0; i < num; i++) {
+            aprset[i].rtnevents = get_revent(pollset[i].revents);
+        }
+    }
+    
+#if !defined(HAVE_VLA) && !defined(HAVE_ALLOCA)
+    if (num > SMALL_POLLSET_LIMIT) {
+        free(pollset);
+    }
+#endif
+
+    if ((*nsds) < 0) {
+        return apr_get_netos_error();
+    }
+    if ((*nsds) == 0) {
+        return APR_TIMEUP;
+    }
+    return APR_SUCCESS;
+}
+
+
+#endif /* POLL_USES_POLL */
+
+struct apr_pollset_private_t
+{
+    struct pollfd *pollset;
+    apr_pollfd_t *query_set;
+    apr_pollfd_t *result_set;
+};
+
+static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
+                                        apr_uint32_t size,
+                                        apr_pool_t *p,
+                                        apr_uint32_t flags)
+{
+    if (flags & APR_POLLSET_THREADSAFE) {                
+        return APR_ENOTIMPL;
+    }
+#ifdef WIN32
+    if (!APR_HAVE_LATE_DLL_FUNC(WSAPoll)) {
+        return APR_ENOTIMPL;
+    }
+#endif
+    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
+    pollset->p->pollset = apr_palloc(p, size * sizeof(struct pollfd));
+    pollset->p->query_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
+    pollset->p->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
+                                     const apr_pollfd_t *descriptor)
+{
+    if (pollset->nelts == pollset->nalloc) {
+        return APR_ENOMEM;
+    }
+
+    pollset->p->query_set[pollset->nelts] = *descriptor;
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        pollset->p->pollset[pollset->nelts].fd = descriptor->desc.s->socketdes;
+    }
+    else {
+#if APR_FILES_AS_SOCKETS
+        pollset->p->pollset[pollset->nelts].fd = descriptor->desc.f->filedes;
+#else
+        if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
+            descriptor->desc.f == pollset->wakeup_pipe[0])
+            pollset->p->pollset[pollset->nelts].fd = (SOCKET)descriptor->desc.f->filedes;
+        else
+            return APR_EBADF;
+#endif
+    }
+    pollset->p->pollset[pollset->nelts].events =
+        get_event(descriptor->reqevents);
+    pollset->nelts++;
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
+                                        const apr_pollfd_t *descriptor)
+{
+    apr_uint32_t i;
+
+    for (i = 0; i < pollset->nelts; i++) {
+        if (descriptor->desc.s == pollset->p->query_set[i].desc.s) {
+            /* Found an instance of the fd: remove this and any other copies */
+            apr_uint32_t dst = i;
+            apr_uint32_t old_nelts = pollset->nelts;
+            pollset->nelts--;
+            for (i++; i < old_nelts; i++) {
+                if (descriptor->desc.s == pollset->p->query_set[i].desc.s) {
+                    pollset->nelts--;
+                }
+                else {
+                    pollset->p->pollset[dst] = pollset->p->pollset[i];
+                    pollset->p->query_set[dst] = pollset->p->query_set[i];
+                    dst++;
+                }
+            }
+            return APR_SUCCESS;
+        }
+    }
+
+    return APR_NOTFOUND;
+}
+
+static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
+                                      apr_interval_time_t timeout,
+                                      apr_int32_t *num,
+                                      const apr_pollfd_t **descriptors)
+{
+    int ret;
+    apr_status_t rv = APR_SUCCESS;
+
+#ifdef WIN32
+    /* WSAPoll() requires at least one socket. */
+    if (pollset->nelts == 0) {
+        *num = 0;
+        if (timeout > 0) {
+            apr_sleep(timeout);
+            return APR_TIMEUP;
+        }
+        return APR_SUCCESS;
+    }
+    if (timeout > 0) {
+        timeout /= 1000;
+    }
+    ret = WSAPoll(pollset->p->pollset, pollset->nelts, (int)timeout);
+#else
+    if (timeout > 0) {
+        timeout /= 1000;
+    }
+    ret = poll(pollset->p->pollset, pollset->nelts, timeout);
+#endif
+    (*num) = ret;
+    if (ret < 0) {
+        return apr_get_netos_error();
+    }
+    else if (ret == 0) {
+        return APR_TIMEUP;
+    }
+    else {
+        apr_uint32_t i, j;
+
+        for (i = 0, j = 0; i < pollset->nelts; i++) {
+            if (pollset->p->pollset[i].revents != 0) {
+                /* Check if the polled descriptor is our
+                 * wakeup pipe. In that case do not put it result set.
+                 */
+                if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
+                    pollset->p->query_set[i].desc_type == APR_POLL_FILE &&
+                    pollset->p->query_set[i].desc.f == pollset->wakeup_pipe[0]) {
+                        apr_pollset_drain_wakeup_pipe(pollset);
+                        rv = APR_EINTR;
+                }
+                else {
+                    pollset->p->result_set[j] = pollset->p->query_set[i];
+                    pollset->p->result_set[j].rtnevents =
+                        get_revent(pollset->p->pollset[i].revents);
+                    j++;
+                }
+            }
+        }
+        if (((*num) = j) > 0)
+            rv = APR_SUCCESS;
+    }
+    if (descriptors && (*num))
+        *descriptors = pollset->p->result_set;
+    return rv;
+}
+
+static apr_pollset_provider_t impl = {
+    impl_pollset_create,
+    impl_pollset_add,
+    impl_pollset_remove,
+    impl_pollset_poll,
+    NULL,
+    "poll"
+};
+
+apr_pollset_provider_t *apr_pollset_provider_poll = &impl;
+
+/* Poll method pollcb.
+ * This is probably usable only for WIN32 having WSAPoll
+ */
+static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
+                                       apr_uint32_t size,
+                                       apr_pool_t *p,
+                                       apr_uint32_t flags)
+{
+#if APR_HAS_THREADS
+    return APR_ENOTIMPL;
+#else
+    pollcb->fd = -1;
+#ifdef WIN32
+    if (!APR_HAVE_LATE_DLL_FUNC(WSAPoll)) {
+        return APR_ENOTIMPL;
+    }
+#endif
+
+    pollcb->pollset.ps = apr_palloc(p, size * sizeof(struct pollfd));
+    pollcb->copyset = apr_palloc(p, size * sizeof(apr_pollfd_t *));
+
+    return APR_SUCCESS;
+#endif
+}
+
+static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
+                                    apr_pollfd_t *descriptor)
+{
+    if (pollcb->nelts == pollcb->nalloc) {
+        return APR_ENOMEM;
+    }
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        pollcb->pollset.ps[pollcb->nelts].fd = descriptor->desc.s->socketdes;
+    }
+    else {
+#if APR_FILES_AS_SOCKETS
+        pollcb->pollset.ps[pollcb->nelts].fd = descriptor->desc.f->filedes;
+#else
+        return APR_EBADF;
+#endif
+    }
+
+    pollcb->pollset.ps[pollcb->nelts].events =
+        get_event(descriptor->reqevents);
+    pollcb->copyset[pollcb->nelts] = descriptor;
+    pollcb->nelts++;
+    
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
+                                       apr_pollfd_t *descriptor)
+{
+    apr_uint32_t i;
+
+    for (i = 0; i < pollcb->nelts; i++) {
+        if (descriptor->desc.s == pollcb->copyset[i]->desc.s) {
+            /* Found an instance of the fd: remove this and any other copies */
+            apr_uint32_t dst = i;
+            apr_uint32_t old_nelts = pollcb->nelts;
+            pollcb->nelts--;
+            for (i++; i < old_nelts; i++) {
+                if (descriptor->desc.s == pollcb->copyset[i]->desc.s) {
+                    pollcb->nelts--;
+                }
+                else {
+                    pollcb->pollset.ps[dst] = pollcb->pollset.ps[i];
+                    pollcb->copyset[dst] = pollcb->copyset[i];
+                    dst++;
+                }
+            }
+            return APR_SUCCESS;
+        }
+    }
+
+    return APR_NOTFOUND;
+}
+
+static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
+                                     apr_interval_time_t timeout,
+                                     apr_pollcb_cb_t func,
+                                     void *baton)
+{
+    int ret;
+    apr_status_t rv = APR_SUCCESS;
+    apr_uint32_t i;
+
+#ifdef WIN32
+    /* WSAPoll() requires at least one socket. */
+    if (pollcb->nelts == 0) {
+        if (timeout > 0) {
+            apr_sleep(timeout);
+            return APR_TIMEUP;
+        }
+        return APR_SUCCESS;
+    }
+    if (timeout > 0) {
+        timeout /= 1000;
+    }
+    ret = WSAPoll(pollcb->pollset.ps, pollcb->nelts, (int)timeout);
+#else
+    if (timeout > 0) {
+        timeout /= 1000;
+    }
+    ret = poll(pollcb->pollset.ps, pollcb->nelts, timeout);
+#endif
+    if (ret < 0) {
+        return apr_get_netos_error();
+    }
+    else if (ret == 0) {
+        return APR_TIMEUP;
+    }
+    else {
+        for (i = 0; i < pollcb->nelts; i++) {
+            if (pollcb->pollset.ps[i].revents != 0) {
+                apr_pollfd_t *pollfd = pollcb->copyset[i];
+                pollfd->rtnevents = get_revent(pollcb->pollset.ps[i].revents);                    
+                rv = func(baton, pollfd);
+                if (rv) {
+                    return rv;
+                }
+            }
+        }
+    }
+    return rv;
+}
+
+static apr_pollcb_provider_t impl_cb = {
+    impl_pollcb_create,
+    impl_pollcb_add,
+    impl_pollcb_remove,
+    impl_pollcb_poll,
+    "poll"
+};
+
+apr_pollcb_provider_t *apr_pollcb_provider_poll = &impl_cb;
+
+#endif /* HAVE_POLL */

Deleted: vendor/apache/apr/1.5.2/poll/unix/pollcb.c
===================================================================
--- vendor/apache/apr/dist/poll/unix/pollcb.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/poll/unix/pollcb.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,171 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifdef WIN32
-/* POSIX defines 1024 for the FD_SETSIZE */
-#define FD_SETSIZE 1024
-#endif
-
-#include "apr.h"
-#include "apr_poll.h"
-#include "apr_time.h"
-#include "apr_portable.h"
-#include "apr_arch_file_io.h"
-#include "apr_arch_networkio.h"
-#include "apr_arch_poll_private.h"
-
-static apr_pollset_method_e pollset_default_method = POLLSET_DEFAULT_METHOD;
-#if defined(HAVE_KQUEUE)
-extern apr_pollcb_provider_t *apr_pollcb_provider_kqueue;
-#endif
-#if defined(HAVE_PORT_CREATE)
-extern apr_pollcb_provider_t *apr_pollcb_provider_port;
-#endif
-#if defined(HAVE_EPOLL)
-extern apr_pollcb_provider_t *apr_pollcb_provider_epoll;
-#endif
-#if defined(HAVE_POLL)
-extern apr_pollcb_provider_t *apr_pollcb_provider_poll;
-#endif
-
-static apr_pollcb_provider_t *pollcb_provider(apr_pollset_method_e method)
-{
-    apr_pollcb_provider_t *provider = NULL;
-    switch (method) {
-        case APR_POLLSET_KQUEUE:
-#if defined(HAVE_KQUEUE)
-            provider = apr_pollcb_provider_kqueue;
-#endif
-        break;
-        case APR_POLLSET_PORT:
-#if defined(HAVE_PORT_CREATE)
-            provider = apr_pollcb_provider_port;
-#endif
-        break;
-        case APR_POLLSET_EPOLL:
-#if defined(HAVE_EPOLL)
-            provider = apr_pollcb_provider_epoll;
-#endif
-        break;
-        case APR_POLLSET_POLL:
-#if defined(HAVE_POLL)
-            provider = apr_pollcb_provider_poll;
-#endif
-        break;
-        case APR_POLLSET_SELECT:
-        case APR_POLLSET_DEFAULT:
-        break;
-    }
-    return provider;
-}
-
-APR_DECLARE(apr_status_t) apr_pollcb_create_ex(apr_pollcb_t **ret_pollcb,
-                                               apr_uint32_t size,
-                                               apr_pool_t *p,
-                                               apr_uint32_t flags,
-                                               apr_pollset_method_e method)
-{
-    apr_status_t rv;
-    apr_pollcb_t *pollcb;
-    apr_pollcb_provider_t *provider = NULL;
-
-    *ret_pollcb = NULL;
-
- #ifdef WIN32
-    /* This will work only if ws2_32.dll has WSAPoll funtion.
-     * We could check the presence of the function here,
-     * but someone might implement other pollcb method in
-     * the future.
-     */
-    if (method == APR_POLLSET_DEFAULT) {
-        method = APR_POLLSET_POLL;
-    }
- #endif
-
-    if (method == APR_POLLSET_DEFAULT)
-        method = pollset_default_method;
-    while (provider == NULL) {
-        provider = pollcb_provider(method);
-        if (!provider) {
-            if ((flags & APR_POLLSET_NODEFAULT) == APR_POLLSET_NODEFAULT)
-                return APR_ENOTIMPL;
-            if (method == pollset_default_method)
-                return APR_ENOTIMPL;
-            method = pollset_default_method;
-        }
-    }
-
-    pollcb = apr_palloc(p, sizeof(*pollcb));
-    pollcb->nelts = 0;
-    pollcb->nalloc = size;
-    pollcb->pool = p;
-    pollcb->provider = provider;
-
-    rv = (*provider->create)(pollcb, size, p, flags);
-    if (rv == APR_ENOTIMPL) {
-        if (method == pollset_default_method) {
-            return rv;
-        }
-
-        if ((flags & APR_POLLSET_NODEFAULT) == APR_POLLSET_NODEFAULT) {
-            return rv;
-        }
-
-        /* Try with default provider */
-        provider = pollcb_provider(pollset_default_method);
-        if (!provider) {
-            return APR_ENOTIMPL;
-        }
-        rv = (*provider->create)(pollcb, size, p, flags);
-        if (rv != APR_SUCCESS) {
-            return rv;
-        }
-        pollcb->provider = provider;
-    }
-
-    *ret_pollcb = pollcb;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_pollcb_create(apr_pollcb_t **pollcb,
-                                            apr_uint32_t size,
-                                            apr_pool_t *p,
-                                            apr_uint32_t flags)
-{
-    apr_pollset_method_e method = APR_POLLSET_DEFAULT;
-    return apr_pollcb_create_ex(pollcb, size, p, flags, method);
-}
-
-APR_DECLARE(apr_status_t) apr_pollcb_add(apr_pollcb_t *pollcb,
-                                         apr_pollfd_t *descriptor)
-{
-    return (*pollcb->provider->add)(pollcb, descriptor);
-}
-
-APR_DECLARE(apr_status_t) apr_pollcb_remove(apr_pollcb_t *pollcb,
-                                            apr_pollfd_t *descriptor)
-{
-    return (*pollcb->provider->remove)(pollcb, descriptor);
-}
-
-
-APR_DECLARE(apr_status_t) apr_pollcb_poll(apr_pollcb_t *pollcb,
-                                          apr_interval_time_t timeout,
-                                          apr_pollcb_cb_t func,
-                                          void *baton)
-{
-    return (*pollcb->provider->poll)(pollcb, timeout, func, baton);
-}

Copied: vendor/apache/apr/1.5.2/poll/unix/pollcb.c (from rev 9273, vendor/apache/apr/dist/poll/unix/pollcb.c)
===================================================================
--- vendor/apache/apr/1.5.2/poll/unix/pollcb.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/poll/unix/pollcb.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,175 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifdef WIN32
+/* POSIX defines 1024 for the FD_SETSIZE */
+#define FD_SETSIZE 1024
+#endif
+
+#include "apr.h"
+#include "apr_poll.h"
+#include "apr_time.h"
+#include "apr_portable.h"
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_arch_poll_private.h"
+
+static apr_pollset_method_e pollset_default_method = POLLSET_DEFAULT_METHOD;
+#if defined(HAVE_KQUEUE)
+extern apr_pollcb_provider_t *apr_pollcb_provider_kqueue;
+#endif
+#if defined(HAVE_PORT_CREATE)
+extern apr_pollcb_provider_t *apr_pollcb_provider_port;
+#endif
+#if defined(HAVE_EPOLL)
+extern apr_pollcb_provider_t *apr_pollcb_provider_epoll;
+#endif
+#if defined(HAVE_POLL)
+extern apr_pollcb_provider_t *apr_pollcb_provider_poll;
+#endif
+
+static apr_pollcb_provider_t *pollcb_provider(apr_pollset_method_e method)
+{
+    apr_pollcb_provider_t *provider = NULL;
+    switch (method) {
+        case APR_POLLSET_KQUEUE:
+#if defined(HAVE_KQUEUE)
+            provider = apr_pollcb_provider_kqueue;
+#endif
+        break;
+        case APR_POLLSET_PORT:
+#if defined(HAVE_PORT_CREATE)
+            provider = apr_pollcb_provider_port;
+#endif
+        break;
+        case APR_POLLSET_EPOLL:
+#if defined(HAVE_EPOLL)
+            provider = apr_pollcb_provider_epoll;
+#endif
+        break;
+        case APR_POLLSET_POLL:
+#if defined(HAVE_POLL)
+            provider = apr_pollcb_provider_poll;
+#endif
+        break;
+        case APR_POLLSET_SELECT:
+        case APR_POLLSET_AIO_MSGQ:
+        case APR_POLLSET_DEFAULT:
+        break;
+    }
+    return provider;
+}
+
+APR_DECLARE(apr_status_t) apr_pollcb_create_ex(apr_pollcb_t **ret_pollcb,
+                                               apr_uint32_t size,
+                                               apr_pool_t *p,
+                                               apr_uint32_t flags,
+                                               apr_pollset_method_e method)
+{
+    apr_status_t rv;
+    apr_pollcb_t *pollcb;
+    apr_pollcb_provider_t *provider = NULL;
+
+    *ret_pollcb = NULL;
+
+ #ifdef WIN32
+    /* This will work only if ws2_32.dll has WSAPoll funtion.
+     * We could check the presence of the function here,
+     * but someone might implement other pollcb method in
+     * the future.
+     */
+    if (method == APR_POLLSET_DEFAULT) {
+        method = APR_POLLSET_POLL;
+    }
+ #endif
+
+    if (method == APR_POLLSET_DEFAULT)
+        method = pollset_default_method;
+    while (provider == NULL) {
+        provider = pollcb_provider(method);
+        if (!provider) {
+            if ((flags & APR_POLLSET_NODEFAULT) == APR_POLLSET_NODEFAULT)
+                return APR_ENOTIMPL;
+            if (method == pollset_default_method)
+                return APR_ENOTIMPL;
+            method = pollset_default_method;
+        }
+    }
+
+    pollcb = apr_palloc(p, sizeof(*pollcb));
+    pollcb->nelts = 0;
+    pollcb->nalloc = size;
+    pollcb->pool = p;
+    pollcb->provider = provider;
+
+    rv = (*provider->create)(pollcb, size, p, flags);
+    if (rv == APR_ENOTIMPL) {
+        if (method == pollset_default_method) {
+            return rv;
+        }
+
+        if ((flags & APR_POLLSET_NODEFAULT) == APR_POLLSET_NODEFAULT) {
+            return rv;
+        }
+
+        /* Try with default provider */
+        provider = pollcb_provider(pollset_default_method);
+        if (!provider) {
+            return APR_ENOTIMPL;
+        }
+        rv = (*provider->create)(pollcb, size, p, flags);
+        if (rv != APR_SUCCESS) {
+            return rv;
+        }
+        pollcb->provider = provider;
+    }
+    else if (rv != APR_SUCCESS) {
+        return rv;
+    }
+
+    *ret_pollcb = pollcb;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_pollcb_create(apr_pollcb_t **pollcb,
+                                            apr_uint32_t size,
+                                            apr_pool_t *p,
+                                            apr_uint32_t flags)
+{
+    apr_pollset_method_e method = APR_POLLSET_DEFAULT;
+    return apr_pollcb_create_ex(pollcb, size, p, flags, method);
+}
+
+APR_DECLARE(apr_status_t) apr_pollcb_add(apr_pollcb_t *pollcb,
+                                         apr_pollfd_t *descriptor)
+{
+    return (*pollcb->provider->add)(pollcb, descriptor);
+}
+
+APR_DECLARE(apr_status_t) apr_pollcb_remove(apr_pollcb_t *pollcb,
+                                            apr_pollfd_t *descriptor)
+{
+    return (*pollcb->provider->remove)(pollcb, descriptor);
+}
+
+
+APR_DECLARE(apr_status_t) apr_pollcb_poll(apr_pollcb_t *pollcb,
+                                          apr_interval_time_t timeout,
+                                          apr_pollcb_cb_t func,
+                                          void *baton)
+{
+    return (*pollcb->provider->poll)(pollcb, timeout, func, baton);
+}

Deleted: vendor/apache/apr/1.5.2/poll/unix/pollset.c
===================================================================
--- vendor/apache/apr/dist/poll/unix/pollset.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/poll/unix/pollset.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,344 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifdef WIN32
-/* POSIX defines 1024 for the FD_SETSIZE */
-#define FD_SETSIZE 1024
-#endif
-
-#include "apr.h"
-#include "apr_poll.h"
-#include "apr_time.h"
-#include "apr_portable.h"
-#include "apr_arch_file_io.h"
-#include "apr_arch_networkio.h"
-#include "apr_arch_poll_private.h"
-#include "apr_arch_inherit.h"
-
-static apr_pollset_method_e pollset_default_method = POLLSET_DEFAULT_METHOD;
-
-#if !APR_FILES_AS_SOCKETS
-#if defined (WIN32)
-
-/* Create a dummy wakeup socket pipe for interrupting the poller
- */
-static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
-{
-    apr_status_t rv;
-
-    if ((rv = apr_file_socket_pipe_create(&pollset->wakeup_pipe[0],
-                                          &pollset->wakeup_pipe[1],
-                                          pollset->pool)) != APR_SUCCESS)
-        return rv;
-
-    pollset->wakeup_pfd.p = pollset->pool;
-    pollset->wakeup_pfd.reqevents = APR_POLLIN;
-    pollset->wakeup_pfd.desc_type = APR_POLL_FILE;
-    pollset->wakeup_pfd.desc.f = pollset->wakeup_pipe[0];
-
-    return apr_pollset_add(pollset, &pollset->wakeup_pfd);
-}
-
-#else  /* !WIN32 */
-static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
-{
-    return APR_ENOTIMPL;
-}
-
-static apr_status_t apr_file_socket_pipe_close(apr_file_t *file)
-{
-    return APR_ENOTIMPL;
-}
-
-#endif /* WIN32 */
-#else  /* APR_FILES_AS_SOCKETS */
-
-/* Create a dummy wakeup pipe for interrupting the poller
- */
-static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
-{
-    apr_status_t rv;
-
-    if ((rv = apr_file_pipe_create(&pollset->wakeup_pipe[0],
-                                   &pollset->wakeup_pipe[1],
-                                   pollset->pool)) != APR_SUCCESS)
-        return rv;
-
-    pollset->wakeup_pfd.p = pollset->pool;
-    pollset->wakeup_pfd.reqevents = APR_POLLIN;
-    pollset->wakeup_pfd.desc_type = APR_POLL_FILE;
-    pollset->wakeup_pfd.desc.f = pollset->wakeup_pipe[0];
-
-    {
-        int flags;
-
-        if ((flags = fcntl(pollset->wakeup_pipe[0]->filedes, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(pollset->wakeup_pipe[0]->filedes, F_SETFD, flags) == -1)
-            return errno;
-    }
-    {
-        int flags;
-
-        if ((flags = fcntl(pollset->wakeup_pipe[1]->filedes, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(pollset->wakeup_pipe[1]->filedes, F_SETFD, flags) == -1)
-            return errno;
-    }
-
-    return apr_pollset_add(pollset, &pollset->wakeup_pfd);
-}
-#endif /* !APR_FILES_AS_SOCKETS */
-
-/* Read and discard what's ever in the wakeup pipe.
- */
-void apr_pollset_drain_wakeup_pipe(apr_pollset_t *pollset)
-{
-    char rb[512];
-    apr_size_t nr = sizeof(rb);
-
-    while (apr_file_read(pollset->wakeup_pipe[0], rb, &nr) == APR_SUCCESS) {
-        /* Although we write just one byte to the other end of the pipe
-         * during wakeup, multiple threads could call the wakeup.
-         * So simply drain out from the input side of the pipe all
-         * the data.
-         */
-        if (nr != sizeof(rb))
-            break;
-    }
-}
-
-static apr_status_t pollset_cleanup(void *p)
-{
-    apr_pollset_t *pollset = (apr_pollset_t *) p;
-    if (pollset->provider->cleanup) {
-        (*pollset->provider->cleanup)(pollset);
-    }
-    if (pollset->flags & APR_POLLSET_WAKEABLE) {
-        /* Close both sides of the wakeup pipe */
-        if (pollset->wakeup_pipe[0]) {
-#if APR_FILES_AS_SOCKETS
-            apr_file_close(pollset->wakeup_pipe[0]);
-#else
-            apr_file_socket_pipe_close(pollset->wakeup_pipe[0]);
-#endif
-            pollset->wakeup_pipe[0] = NULL;
-        }
-        if (pollset->wakeup_pipe[1]) {
-#if APR_FILES_AS_SOCKETS
-            apr_file_close(pollset->wakeup_pipe[1]);
-#else
-            apr_file_socket_pipe_close(pollset->wakeup_pipe[1]);
-#endif
-            pollset->wakeup_pipe[1] = NULL;
-        }
-    }
-
-    return APR_SUCCESS;
-}
-
-#if defined(HAVE_KQUEUE)
-extern apr_pollset_provider_t *apr_pollset_provider_kqueue;
-#endif
-#if defined(HAVE_PORT_CREATE)
-extern apr_pollset_provider_t *apr_pollset_provider_port;
-#endif
-#if defined(HAVE_EPOLL)
-extern apr_pollset_provider_t *apr_pollset_provider_epoll;
-#endif
-#if defined(HAVE_POLL)
-extern apr_pollset_provider_t *apr_pollset_provider_poll;
-#endif
-extern apr_pollset_provider_t *apr_pollset_provider_select;
-
-static apr_pollset_provider_t *pollset_provider(apr_pollset_method_e method)
-{
-    apr_pollset_provider_t *provider = NULL;
-    switch (method) {
-        case APR_POLLSET_KQUEUE:
-#if defined(HAVE_KQUEUE)
-            provider = apr_pollset_provider_kqueue;
-#endif
-        break;
-        case APR_POLLSET_PORT:
-#if defined(HAVE_PORT_CREATE)
-            provider = apr_pollset_provider_port;
-#endif
-        break;
-        case APR_POLLSET_EPOLL:
-#if defined(HAVE_EPOLL)
-            provider = apr_pollset_provider_epoll;
-#endif
-        break;
-        case APR_POLLSET_POLL:
-#if defined(HAVE_POLL)
-            provider = apr_pollset_provider_poll;
-#endif
-        break;
-        case APR_POLLSET_SELECT:
-            provider = apr_pollset_provider_select;
-        break;
-        case APR_POLLSET_DEFAULT:
-        break;
-    }
-    return provider;
-}
-
-APR_DECLARE(apr_status_t) apr_pollset_create_ex(apr_pollset_t **ret_pollset,
-                                                apr_uint32_t size,
-                                                apr_pool_t *p,
-                                                apr_uint32_t flags,
-                                                apr_pollset_method_e method)
-{
-    apr_status_t rv;
-    apr_pollset_t *pollset;
-    apr_pollset_provider_t *provider = NULL;
-
-    *ret_pollset = NULL;
-
- #ifdef WIN32
-    /* Favor WSAPoll if supported.
-     * This will work only if ws2_32.dll has WSAPoll funtion.
-     * In other cases it will fall back to select() method unless
-     * the APR_POLLSET_NODEFAULT is added to the flags.
-     */
-    if (method == APR_POLLSET_DEFAULT) {
-        method = APR_POLLSET_POLL;
-    }
- #endif
-
-    if (method == APR_POLLSET_DEFAULT)
-        method = pollset_default_method;
-    while (provider == NULL) {
-        provider = pollset_provider(method);
-        if (!provider) {
-            if ((flags & APR_POLLSET_NODEFAULT) == APR_POLLSET_NODEFAULT)
-                return APR_ENOTIMPL;
-            if (method == pollset_default_method)
-                return APR_ENOTIMPL;
-            method = pollset_default_method;
-        }
-    }
-    if (flags & APR_POLLSET_WAKEABLE) {
-        /* Add room for wakeup descriptor */
-        size++;
-    }
-
-    pollset = apr_palloc(p, sizeof(*pollset));
-    pollset->nelts = 0;
-    pollset->nalloc = size;
-    pollset->pool = p;
-    pollset->flags = flags;
-    pollset->provider = provider;
-
-    rv = (*provider->create)(pollset, size, p, flags);
-    if (rv == APR_ENOTIMPL) {
-        if (method == pollset_default_method) {
-            return rv;
-        }
-        provider = pollset_provider(pollset_default_method);
-        if (!provider) {
-            return APR_ENOTIMPL;
-        }
-        rv = (*provider->create)(pollset, size, p, flags);
-        if (rv != APR_SUCCESS) {
-            return rv;
-        }
-        pollset->provider = provider;
-    }
-    else if (rv != APR_SUCCESS) {
-        return rv;
-    }
-    if (flags & APR_POLLSET_WAKEABLE) {
-        /* Create wakeup pipe */
-        if ((rv = create_wakeup_pipe(pollset)) != APR_SUCCESS) {
-            return rv;
-        }
-    }
-    if ((flags & APR_POLLSET_WAKEABLE) || provider->cleanup)
-        apr_pool_cleanup_register(p, pollset, pollset_cleanup,
-                                  apr_pool_cleanup_null);
-
-    *ret_pollset = pollset;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(const char *) apr_pollset_method_name(apr_pollset_t *pollset)
-{
-    return pollset->provider->name;
-}
-
-APR_DECLARE(const char *) apr_poll_method_defname()
-{
-    apr_pollset_provider_t *provider = NULL;
-
-    provider = pollset_provider(pollset_default_method);
-    if (provider)
-        return provider->name;
-    else
-        return "unknown";
-}
-
-APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset,
-                                             apr_uint32_t size,
-                                             apr_pool_t *p,
-                                             apr_uint32_t flags)
-{
-    apr_pollset_method_e method = APR_POLLSET_DEFAULT;
-    return apr_pollset_create_ex(pollset, size, p, flags, method);
-}
-
-APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t * pollset)
-{
-    if (pollset->flags & APR_POLLSET_WAKEABLE ||
-        pollset->provider->cleanup)
-        return apr_pool_cleanup_run(pollset->pool, pollset,
-                                    pollset_cleanup);
-    else
-        return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_pollset_wakeup(apr_pollset_t *pollset)
-{
-    if (pollset->flags & APR_POLLSET_WAKEABLE)
-        return apr_file_putc(1, pollset->wakeup_pipe[1]);
-    else
-        return APR_EINIT;
-}
-
-APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset,
-                                          const apr_pollfd_t *descriptor)
-{
-    return (*pollset->provider->add)(pollset, descriptor);
-}
-
-APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset,
-                                             const apr_pollfd_t *descriptor)
-{
-    return (*pollset->provider->remove)(pollset, descriptor);
-}
-
-APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset,
-                                           apr_interval_time_t timeout,
-                                           apr_int32_t *num,
-                                           const apr_pollfd_t **descriptors)
-{
-    return (*pollset->provider->poll)(pollset, timeout, num, descriptors);
-}

Copied: vendor/apache/apr/1.5.2/poll/unix/pollset.c (from rev 9273, vendor/apache/apr/dist/poll/unix/pollset.c)
===================================================================
--- vendor/apache/apr/1.5.2/poll/unix/pollset.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/poll/unix/pollset.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,352 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifdef WIN32
+/* POSIX defines 1024 for the FD_SETSIZE */
+#define FD_SETSIZE 1024
+#endif
+
+#include "apr.h"
+#include "apr_poll.h"
+#include "apr_time.h"
+#include "apr_portable.h"
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_arch_poll_private.h"
+#include "apr_arch_inherit.h"
+
+static apr_pollset_method_e pollset_default_method = POLLSET_DEFAULT_METHOD;
+
+#if !APR_FILES_AS_SOCKETS
+#if defined (WIN32)
+
+/* Create a dummy wakeup socket pipe for interrupting the poller
+ */
+static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
+{
+    apr_status_t rv;
+
+    if ((rv = apr_file_socket_pipe_create(&pollset->wakeup_pipe[0],
+                                          &pollset->wakeup_pipe[1],
+                                          pollset->pool)) != APR_SUCCESS)
+        return rv;
+
+    pollset->wakeup_pfd.p = pollset->pool;
+    pollset->wakeup_pfd.reqevents = APR_POLLIN;
+    pollset->wakeup_pfd.desc_type = APR_POLL_FILE;
+    pollset->wakeup_pfd.desc.f = pollset->wakeup_pipe[0];
+
+    return apr_pollset_add(pollset, &pollset->wakeup_pfd);
+}
+
+#else  /* !WIN32 */
+static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
+{
+    return APR_ENOTIMPL;
+}
+
+static apr_status_t apr_file_socket_pipe_close(apr_file_t *file)
+{
+    return APR_ENOTIMPL;
+}
+
+#endif /* WIN32 */
+#else  /* APR_FILES_AS_SOCKETS */
+
+/* Create a dummy wakeup pipe for interrupting the poller
+ */
+static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
+{
+    apr_status_t rv;
+
+    if ((rv = apr_file_pipe_create(&pollset->wakeup_pipe[0],
+                                   &pollset->wakeup_pipe[1],
+                                   pollset->pool)) != APR_SUCCESS)
+        return rv;
+
+    pollset->wakeup_pfd.p = pollset->pool;
+    pollset->wakeup_pfd.reqevents = APR_POLLIN;
+    pollset->wakeup_pfd.desc_type = APR_POLL_FILE;
+    pollset->wakeup_pfd.desc.f = pollset->wakeup_pipe[0];
+
+    {
+        int flags;
+
+        if ((flags = fcntl(pollset->wakeup_pipe[0]->filedes, F_GETFD)) == -1)
+            return errno;
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(pollset->wakeup_pipe[0]->filedes, F_SETFD, flags) == -1)
+            return errno;
+    }
+    {
+        int flags;
+
+        if ((flags = fcntl(pollset->wakeup_pipe[1]->filedes, F_GETFD)) == -1)
+            return errno;
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(pollset->wakeup_pipe[1]->filedes, F_SETFD, flags) == -1)
+            return errno;
+    }
+
+    return apr_pollset_add(pollset, &pollset->wakeup_pfd);
+}
+#endif /* !APR_FILES_AS_SOCKETS */
+
+/* Read and discard what's ever in the wakeup pipe.
+ */
+void apr_pollset_drain_wakeup_pipe(apr_pollset_t *pollset)
+{
+    char rb[512];
+    apr_size_t nr = sizeof(rb);
+
+    while (apr_file_read(pollset->wakeup_pipe[0], rb, &nr) == APR_SUCCESS) {
+        /* Although we write just one byte to the other end of the pipe
+         * during wakeup, multiple threads could call the wakeup.
+         * So simply drain out from the input side of the pipe all
+         * the data.
+         */
+        if (nr != sizeof(rb))
+            break;
+    }
+}
+
+static apr_status_t pollset_cleanup(void *p)
+{
+    apr_pollset_t *pollset = (apr_pollset_t *) p;
+    if (pollset->provider->cleanup) {
+        (*pollset->provider->cleanup)(pollset);
+    }
+    if (pollset->flags & APR_POLLSET_WAKEABLE) {
+        /* Close both sides of the wakeup pipe */
+        if (pollset->wakeup_pipe[0]) {
+#if APR_FILES_AS_SOCKETS
+            apr_file_close(pollset->wakeup_pipe[0]);
+#else
+            apr_file_socket_pipe_close(pollset->wakeup_pipe[0]);
+#endif
+            pollset->wakeup_pipe[0] = NULL;
+        }
+        if (pollset->wakeup_pipe[1]) {
+#if APR_FILES_AS_SOCKETS
+            apr_file_close(pollset->wakeup_pipe[1]);
+#else
+            apr_file_socket_pipe_close(pollset->wakeup_pipe[1]);
+#endif
+            pollset->wakeup_pipe[1] = NULL;
+        }
+    }
+
+    return APR_SUCCESS;
+}
+
+#if defined(HAVE_KQUEUE)
+extern apr_pollset_provider_t *apr_pollset_provider_kqueue;
+#endif
+#if defined(HAVE_PORT_CREATE)
+extern apr_pollset_provider_t *apr_pollset_provider_port;
+#endif
+#if defined(HAVE_EPOLL)
+extern apr_pollset_provider_t *apr_pollset_provider_epoll;
+#endif
+#if defined(HAVE_AIO_MSGQ)
+extern apr_pollset_provider_t *apr_pollset_provider_aio_msgq;
+#endif
+#if defined(HAVE_POLL)
+extern apr_pollset_provider_t *apr_pollset_provider_poll;
+#endif
+extern apr_pollset_provider_t *apr_pollset_provider_select;
+
+static apr_pollset_provider_t *pollset_provider(apr_pollset_method_e method)
+{
+    apr_pollset_provider_t *provider = NULL;
+    switch (method) {
+        case APR_POLLSET_KQUEUE:
+#if defined(HAVE_KQUEUE)
+            provider = apr_pollset_provider_kqueue;
+#endif
+        break;
+        case APR_POLLSET_PORT:
+#if defined(HAVE_PORT_CREATE)
+            provider = apr_pollset_provider_port;
+#endif
+        break;
+        case APR_POLLSET_EPOLL:
+#if defined(HAVE_EPOLL)
+            provider = apr_pollset_provider_epoll;
+#endif
+        break;
+        case APR_POLLSET_AIO_MSGQ:
+#if defined(HAVE_AIO_MSGQ)
+            provider = apr_pollset_provider_aio_msgq;
+#endif
+        break;
+        case APR_POLLSET_POLL:
+#if defined(HAVE_POLL)
+            provider = apr_pollset_provider_poll;
+#endif
+        break;
+        case APR_POLLSET_SELECT:
+            provider = apr_pollset_provider_select;
+        break;
+        case APR_POLLSET_DEFAULT:
+        break;
+    }
+    return provider;
+}
+
+APR_DECLARE(apr_status_t) apr_pollset_create_ex(apr_pollset_t **ret_pollset,
+                                                apr_uint32_t size,
+                                                apr_pool_t *p,
+                                                apr_uint32_t flags,
+                                                apr_pollset_method_e method)
+{
+    apr_status_t rv;
+    apr_pollset_t *pollset;
+    apr_pollset_provider_t *provider = NULL;
+
+    *ret_pollset = NULL;
+
+ #ifdef WIN32
+    /* Favor WSAPoll if supported.
+     * This will work only if ws2_32.dll has WSAPoll funtion.
+     * In other cases it will fall back to select() method unless
+     * the APR_POLLSET_NODEFAULT is added to the flags.
+     */
+    if (method == APR_POLLSET_DEFAULT) {
+        method = APR_POLLSET_POLL;
+    }
+ #endif
+
+    if (method == APR_POLLSET_DEFAULT)
+        method = pollset_default_method;
+    while (provider == NULL) {
+        provider = pollset_provider(method);
+        if (!provider) {
+            if ((flags & APR_POLLSET_NODEFAULT) == APR_POLLSET_NODEFAULT)
+                return APR_ENOTIMPL;
+            if (method == pollset_default_method)
+                return APR_ENOTIMPL;
+            method = pollset_default_method;
+        }
+    }
+    if (flags & APR_POLLSET_WAKEABLE) {
+        /* Add room for wakeup descriptor */
+        size++;
+    }
+
+    pollset = apr_palloc(p, sizeof(*pollset));
+    pollset->nelts = 0;
+    pollset->nalloc = size;
+    pollset->pool = p;
+    pollset->flags = flags;
+    pollset->provider = provider;
+
+    rv = (*provider->create)(pollset, size, p, flags);
+    if (rv == APR_ENOTIMPL) {
+        if (method == pollset_default_method) {
+            return rv;
+        }
+        provider = pollset_provider(pollset_default_method);
+        if (!provider) {
+            return APR_ENOTIMPL;
+        }
+        rv = (*provider->create)(pollset, size, p, flags);
+        if (rv != APR_SUCCESS) {
+            return rv;
+        }
+        pollset->provider = provider;
+    }
+    else if (rv != APR_SUCCESS) {
+        return rv;
+    }
+    if (flags & APR_POLLSET_WAKEABLE) {
+        /* Create wakeup pipe */
+        if ((rv = create_wakeup_pipe(pollset)) != APR_SUCCESS) {
+            return rv;
+        }
+    }
+    if ((flags & APR_POLLSET_WAKEABLE) || provider->cleanup)
+        apr_pool_cleanup_register(p, pollset, pollset_cleanup,
+                                  apr_pool_cleanup_null);
+
+    *ret_pollset = pollset;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(const char *) apr_pollset_method_name(apr_pollset_t *pollset)
+{
+    return pollset->provider->name;
+}
+
+APR_DECLARE(const char *) apr_poll_method_defname()
+{
+    apr_pollset_provider_t *provider = NULL;
+
+    provider = pollset_provider(pollset_default_method);
+    if (provider)
+        return provider->name;
+    else
+        return "unknown";
+}
+
+APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset,
+                                             apr_uint32_t size,
+                                             apr_pool_t *p,
+                                             apr_uint32_t flags)
+{
+    apr_pollset_method_e method = APR_POLLSET_DEFAULT;
+    return apr_pollset_create_ex(pollset, size, p, flags, method);
+}
+
+APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t * pollset)
+{
+    if (pollset->flags & APR_POLLSET_WAKEABLE ||
+        pollset->provider->cleanup)
+        return apr_pool_cleanup_run(pollset->pool, pollset,
+                                    pollset_cleanup);
+    else
+        return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_pollset_wakeup(apr_pollset_t *pollset)
+{
+    if (pollset->flags & APR_POLLSET_WAKEABLE)
+        return apr_file_putc(1, pollset->wakeup_pipe[1]);
+    else
+        return APR_EINIT;
+}
+
+APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset,
+                                          const apr_pollfd_t *descriptor)
+{
+    return (*pollset->provider->add)(pollset, descriptor);
+}
+
+APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset,
+                                             const apr_pollfd_t *descriptor)
+{
+    return (*pollset->provider->remove)(pollset, descriptor);
+}
+
+APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset,
+                                           apr_interval_time_t timeout,
+                                           apr_int32_t *num,
+                                           const apr_pollfd_t **descriptors)
+{
+    return (*pollset->provider->poll)(pollset, timeout, num, descriptors);
+}

Deleted: vendor/apache/apr/1.5.2/poll/unix/port.c
===================================================================
--- vendor/apache/apr/dist/poll/unix/port.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/poll/unix/port.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,577 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_poll.h"
-#include "apr_time.h"
-#include "apr_portable.h"
-#include "apr_atomic.h"
-#include "apr_arch_file_io.h"
-#include "apr_arch_networkio.h"
-#include "apr_arch_poll_private.h"
-#include "apr_arch_inherit.h"
-
-#if defined(HAVE_PORT_CREATE)
-
-static apr_int16_t get_event(apr_int16_t event)
-{
-    apr_int16_t rv = 0;
-
-    if (event & APR_POLLIN)
-        rv |= POLLIN;
-    if (event & APR_POLLPRI)
-        rv |= POLLPRI;
-    if (event & APR_POLLOUT)
-        rv |= POLLOUT;
-    /* POLLERR, POLLHUP, and POLLNVAL aren't valid as requested events */
-
-    return rv;
-}
-
-static apr_int16_t get_revent(apr_int16_t event)
-{
-    apr_int16_t rv = 0;
-
-    if (event & POLLIN)
-        rv |= APR_POLLIN;
-    if (event & POLLPRI)
-        rv |= APR_POLLPRI;
-    if (event & POLLOUT)
-        rv |= APR_POLLOUT;
-    if (event & POLLERR)
-        rv |= APR_POLLERR;
-    if (event & POLLHUP)
-        rv |= APR_POLLHUP;
-    if (event & POLLNVAL)
-        rv |= APR_POLLNVAL;
-
-    return rv;
-}
-
-
-struct apr_pollset_private_t
-{
-    int port_fd;
-    port_event_t *port_set;
-    apr_pollfd_t *result_set;
-#if APR_HAS_THREADS
-    /* A thread mutex to protect operations on the rings */
-    apr_thread_mutex_t *ring_lock;
-#endif
-    /* A ring containing all of the pollfd_t that are active */
-    APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring;
-    /* A ring containing the pollfd_t that will be added on the
-     * next call to apr_pollset_poll().
-     */
-    APR_RING_HEAD(pfd_add_ring_t, pfd_elem_t) add_ring;
-    /* A ring of pollfd_t that have been used, and then _remove'd */
-    APR_RING_HEAD(pfd_free_ring_t, pfd_elem_t) free_ring;
-    /* A ring of pollfd_t where rings that have been _remove'd but
-       might still be inside a _poll */
-    APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring;
-    /* number of threads in poll */
-    volatile apr_uint32_t waiting;
-};
-
-static apr_status_t call_port_getn(int port, port_event_t list[], 
-                                   unsigned int max, unsigned int *nget,
-                                   apr_interval_time_t timeout)
-{
-    struct timespec tv, *tvptr;
-    int ret;
-    apr_status_t rv = APR_SUCCESS;
-
-    if (timeout < 0) {
-        tvptr = NULL;
-    }
-    else {
-        tv.tv_sec = (long) apr_time_sec(timeout);
-        tv.tv_nsec = (long) apr_time_usec(timeout) * 1000;
-        tvptr = &tv;
-    }
-
-    list[0].portev_user = (void *)-1; /* so we can double check that an
-                                       * event was returned
-                                       */
-
-    ret = port_getn(port, list, max, nget, tvptr);
-    /* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative 
-     * values instead of 0 when returning immediately.
-     */
-
-    if (ret == -1) {
-        rv = apr_get_netos_error();
-
-        switch(rv) {
-        case EINTR:
-        case ETIME:
-            if (*nget > 0 && list[0].portev_user != (void *)-1) {
-                /* This confusing API can return an event at the same time
-                 * that it reports EINTR or ETIME.  If that occurs, just
-                 * report the event.  With EINTR, nget can be > 0 without
-                 * any event, so check that portev_user was filled in.
-                 *
-                 * (Maybe it will be simplified; see thread
-                 *   http://mail.opensolaris.org
-                 *   /pipermail/networking-discuss/2009-August/011979.html
-                 *  This code will still work afterwards.)
-                 */
-                rv = APR_SUCCESS;
-                break;
-            }
-            if (rv == ETIME) {
-                rv = APR_TIMEUP;
-            }
-        /* fall-through */
-        default:
-            *nget = 0;
-        }
-    }
-    else if (*nget == 0) {
-        rv = APR_TIMEUP;
-    }
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_cleanup(apr_pollset_t *pollset)
-{
-    close(pollset->p->port_fd);
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
-                                             apr_uint32_t size,
-                                             apr_pool_t *p,
-                                             apr_uint32_t flags)
-{
-    apr_status_t rv = APR_SUCCESS;
-    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
-#if APR_HAS_THREADS
-    if (flags & APR_POLLSET_THREADSAFE &&
-        ((rv = apr_thread_mutex_create(&pollset->p->ring_lock,
-                                       APR_THREAD_MUTEX_DEFAULT,
-                                       p)) != APR_SUCCESS)) {
-        pollset->p = NULL;
-        return rv;
-    }
-#else
-    if (flags & APR_POLLSET_THREADSAFE) {
-        pollset->p = NULL;
-        return APR_ENOTIMPL;
-    }
-#endif
-    pollset->p->waiting = 0;
-
-    pollset->p->port_set = apr_palloc(p, size * sizeof(port_event_t));
-
-    pollset->p->port_fd = port_create();
-
-    if (pollset->p->port_fd < 0) {
-        pollset->p = NULL;
-        return apr_get_netos_error();
-    }
-
-    {
-        int flags;
-
-        if ((flags = fcntl(pollset->p->port_fd, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(pollset->p->port_fd, F_SETFD, flags) == -1)
-            return errno;
-    }
-
-    pollset->p->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
-
-    APR_RING_INIT(&pollset->p->query_ring, pfd_elem_t, link);
-    APR_RING_INIT(&pollset->p->add_ring, pfd_elem_t, link);
-    APR_RING_INIT(&pollset->p->free_ring, pfd_elem_t, link);
-    APR_RING_INIT(&pollset->p->dead_ring, pfd_elem_t, link);
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
-                                     const apr_pollfd_t *descriptor)
-{
-    apr_os_sock_t fd;
-    pfd_elem_t *elem;
-    int res;
-    apr_status_t rv = APR_SUCCESS;
-
-    pollset_lock_rings();
-
-    if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) {
-        elem = APR_RING_FIRST(&(pollset->p->free_ring));
-        APR_RING_REMOVE(elem, link);
-    }
-    else {
-        elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t));
-        APR_RING_ELEM_INIT(elem, link);
-        elem->on_query_ring = 0;
-    }
-    elem->pfd = *descriptor;
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-
-    /* If another thread is polling, notify the kernel immediately; otherwise,
-     * wait until the next call to apr_pollset_poll().
-     */
-    if (apr_atomic_read32(&pollset->p->waiting)) {
-        res = port_associate(pollset->p->port_fd, PORT_SOURCE_FD, fd, 
-                             get_event(descriptor->reqevents), (void *)elem);
-
-        if (res < 0) {
-            rv = apr_get_netos_error();
-            APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link);
-        }
-        else {
-            elem->on_query_ring = 1;
-            APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link);
-        }
-    } 
-    else {
-        APR_RING_INSERT_TAIL(&(pollset->p->add_ring), elem, pfd_elem_t, link);
-    }
-
-    pollset_unlock_rings();
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
-                                        const apr_pollfd_t *descriptor)
-{
-    apr_os_sock_t fd;
-    pfd_elem_t *ep;
-    apr_status_t rv = APR_SUCCESS;
-    int res;
-    int err = 0;
-    int found;
-
-    pollset_lock_rings();
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-
-    /* Search the add ring first.  This ring is often shorter,
-     * and it often contains the descriptor being removed.  
-     * (For the common scenario where apr_pollset_poll() 
-     * returns activity for the descriptor and the descriptor
-     * is then removed from the pollset, it will have just 
-     * been moved to the add ring by apr_pollset_poll().)
-     *
-     * If it is on the add ring, it isn't associated with the
-     * event port yet/anymore.
-     */
-    found = 0;
-    for (ep = APR_RING_FIRST(&(pollset->p->add_ring));
-         ep != APR_RING_SENTINEL(&(pollset->p->add_ring),
-                                 pfd_elem_t, link);
-         ep = APR_RING_NEXT(ep, link)) {
-
-        if (descriptor->desc.s == ep->pfd.desc.s) {
-            found = 1;
-            APR_RING_REMOVE(ep, link);
-            APR_RING_INSERT_TAIL(&(pollset->p->free_ring),
-                                 ep, pfd_elem_t, link);
-            break;
-        }
-    }
-
-    if (!found) {
-        res = port_dissociate(pollset->p->port_fd, PORT_SOURCE_FD, fd);
-
-        if (res < 0) {
-            /* The expected case for this failure is that another
-             * thread's call to port_getn() returned this fd and
-             * disassociated the fd from the event port, and 
-             * impl_pollset_poll() is blocked on the ring lock,
-             * which this thread holds.
-             */
-            err = errno;
-            rv = APR_NOTFOUND;
-        }
-
-        for (ep = APR_RING_FIRST(&(pollset->p->query_ring));
-             ep != APR_RING_SENTINEL(&(pollset->p->query_ring),
-                                     pfd_elem_t, link);
-             ep = APR_RING_NEXT(ep, link)) {
-
-            if (descriptor->desc.s == ep->pfd.desc.s) {
-                APR_RING_REMOVE(ep, link);
-                ep->on_query_ring = 0;
-                APR_RING_INSERT_TAIL(&(pollset->p->dead_ring),
-                                     ep, pfd_elem_t, link);
-                if (ENOENT == err) {
-                    rv = APR_SUCCESS;
-                }
-                break;
-            }
-        }
-    }
-
-    pollset_unlock_rings();
-
-    return rv;
-}
-
-static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
-                                      apr_interval_time_t timeout,
-                                      apr_int32_t *num,
-                                      const apr_pollfd_t **descriptors)
-{
-    apr_os_sock_t fd;
-    int ret, i, j;
-    unsigned int nget;
-    pfd_elem_t *ep;
-    apr_status_t rv = APR_SUCCESS;
-    apr_pollfd_t fp;
-
-    nget = 1;
-
-    pollset_lock_rings();
-
-    apr_atomic_inc32(&pollset->p->waiting);
-
-    while (!APR_RING_EMPTY(&(pollset->p->add_ring), pfd_elem_t, link)) {
-        ep = APR_RING_FIRST(&(pollset->p->add_ring));
-        APR_RING_REMOVE(ep, link);
-
-        if (ep->pfd.desc_type == APR_POLL_SOCKET) {
-            fd = ep->pfd.desc.s->socketdes;
-        }
-        else {
-            fd = ep->pfd.desc.f->filedes;
-        }
-
-        ret = port_associate(pollset->p->port_fd, PORT_SOURCE_FD, 
-                             fd, get_event(ep->pfd.reqevents), ep);
-        if (ret < 0) {
-            rv = apr_get_netos_error();
-            APR_RING_INSERT_TAIL(&(pollset->p->free_ring), ep, pfd_elem_t, link);
-            break;
-        }
-
-        ep->on_query_ring = 1;
-        APR_RING_INSERT_TAIL(&(pollset->p->query_ring), ep, pfd_elem_t, link);
-    }
-
-    pollset_unlock_rings();
-
-    if (rv != APR_SUCCESS) {
-        apr_atomic_dec32(&pollset->p->waiting);
-        return rv;
-    }
-
-    rv = call_port_getn(pollset->p->port_fd, pollset->p->port_set, 
-                        pollset->nalloc, &nget, timeout);
-
-    /* decrease the waiting ASAP to reduce the window for calling 
-       port_associate within apr_pollset_add() */
-    apr_atomic_dec32(&pollset->p->waiting);
-
-    (*num) = nget;
-    if (nget) {
-
-        pollset_lock_rings();
-
-        for (i = 0, j = 0; i < nget; i++) {
-            fp = (((pfd_elem_t*)(pollset->p->port_set[i].portev_user))->pfd);
-            if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
-                fp.desc_type == APR_POLL_FILE &&
-                fp.desc.f == pollset->wakeup_pipe[0]) {
-                apr_pollset_drain_wakeup_pipe(pollset);
-                rv = APR_EINTR;
-            }
-            else {
-                pollset->p->result_set[j] = fp;            
-                pollset->p->result_set[j].rtnevents =
-                    get_revent(pollset->p->port_set[i].portev_events);
-
-                /* If the ring element is still on the query ring, move it
-                 * to the add ring for re-association with the event port
-                 * later.  (It may have already been moved to the dead ring
-                 * by a call to pollset_remove on another thread.)
-                 */
-                ep = (pfd_elem_t *)pollset->p->port_set[i].portev_user;
-                if (ep->on_query_ring) {
-                    APR_RING_REMOVE(ep, link);
-                    ep->on_query_ring = 0;
-                    APR_RING_INSERT_TAIL(&(pollset->p->add_ring), ep,
-                                         pfd_elem_t, link);
-                }
-                j++;
-            }
-        }
-        pollset_unlock_rings();
-        if ((*num = j)) { /* any event besides wakeup pipe? */
-            rv = APR_SUCCESS;
-            if (descriptors) {
-                *descriptors = pollset->p->result_set;
-            }
-        }
-    }
-
-    pollset_lock_rings();
-
-    /* Shift all PFDs in the Dead Ring to the Free Ring */
-    APR_RING_CONCAT(&(pollset->p->free_ring), &(pollset->p->dead_ring), pfd_elem_t, link);
-
-    pollset_unlock_rings();
-
-    return rv;
-}
-
-static apr_pollset_provider_t impl = {
-    impl_pollset_create,
-    impl_pollset_add,
-    impl_pollset_remove,
-    impl_pollset_poll,
-    impl_pollset_cleanup,
-    "port"
-};
-
-apr_pollset_provider_t *apr_pollset_provider_port = &impl;
-
-static apr_status_t cb_cleanup(void *p_)
-{
-    apr_pollcb_t *pollcb = (apr_pollcb_t *) p_;
-    close(pollcb->fd);
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
-                                       apr_uint32_t size,
-                                       apr_pool_t *p,
-                                       apr_uint32_t flags)
-{
-    pollcb->fd = port_create();
-
-    if (pollcb->fd < 0) {
-        return apr_get_netos_error();
-    }
-
-    {
-        int flags;
-
-        if ((flags = fcntl(pollcb->fd, F_GETFD)) == -1)
-            return errno;
-
-        flags |= FD_CLOEXEC;
-        if (fcntl(pollcb->fd, F_SETFD, flags) == -1)
-            return errno;
-    }
-
-    pollcb->pollset.port = apr_palloc(p, size * sizeof(port_event_t));
-    apr_pool_cleanup_register(p, pollcb, cb_cleanup, apr_pool_cleanup_null);
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
-                                    apr_pollfd_t *descriptor)
-{
-    int ret, fd;
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-
-    ret = port_associate(pollcb->fd, PORT_SOURCE_FD, fd,
-                         get_event(descriptor->reqevents), descriptor);
-
-    if (ret == -1) {
-        return apr_get_netos_error();
-    }
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
-                                       apr_pollfd_t *descriptor)
-{
-    int fd, ret;
-
-    if (descriptor->desc_type == APR_POLL_SOCKET) {
-        fd = descriptor->desc.s->socketdes;
-    }
-    else {
-        fd = descriptor->desc.f->filedes;
-    }
-
-    ret = port_dissociate(pollcb->fd, PORT_SOURCE_FD, fd);
-
-    if (ret < 0) {
-        return APR_NOTFOUND;
-    }
-
-    return APR_SUCCESS;
-}
-
-static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
-                                     apr_interval_time_t timeout,
-                                     apr_pollcb_cb_t func,
-                                     void *baton)
-{
-    apr_pollfd_t *pollfd;
-    apr_status_t rv;
-    unsigned int i, nget = 1;
-
-    rv = call_port_getn(pollcb->fd, pollcb->pollset.port, pollcb->nalloc,
-                        &nget, timeout);
-
-    if (nget) {
-        for (i = 0; i < nget; i++) {
-            pollfd = (apr_pollfd_t *)(pollcb->pollset.port[i].portev_user);
-            pollfd->rtnevents = get_revent(pollcb->pollset.port[i].portev_events);
-
-            rv = func(baton, pollfd);
-            if (rv) {
-                return rv;
-            }
-            rv = apr_pollcb_add(pollcb, pollfd);
-        }
-    }
-
-    return rv;
-}
-
-static apr_pollcb_provider_t impl_cb = {
-    impl_pollcb_create,
-    impl_pollcb_add,
-    impl_pollcb_remove,
-    impl_pollcb_poll,
-    "port"
-};
-
-apr_pollcb_provider_t *apr_pollcb_provider_port = &impl_cb;
-
-#endif /* HAVE_PORT_CREATE */

Copied: vendor/apache/apr/1.5.2/poll/unix/port.c (from rev 9273, vendor/apache/apr/dist/poll/unix/port.c)
===================================================================
--- vendor/apache/apr/1.5.2/poll/unix/port.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/poll/unix/port.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,594 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_poll.h"
+#include "apr_time.h"
+#include "apr_portable.h"
+#include "apr_atomic.h"
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_arch_poll_private.h"
+#include "apr_arch_inherit.h"
+
+#if defined(HAVE_PORT_CREATE)
+
+static apr_int16_t get_event(apr_int16_t event)
+{
+    apr_int16_t rv = 0;
+
+    if (event & APR_POLLIN)
+        rv |= POLLIN;
+    if (event & APR_POLLPRI)
+        rv |= POLLPRI;
+    if (event & APR_POLLOUT)
+        rv |= POLLOUT;
+    /* POLLERR, POLLHUP, and POLLNVAL aren't valid as requested events */
+
+    return rv;
+}
+
+static apr_int16_t get_revent(apr_int16_t event)
+{
+    apr_int16_t rv = 0;
+
+    if (event & POLLIN)
+        rv |= APR_POLLIN;
+    if (event & POLLPRI)
+        rv |= APR_POLLPRI;
+    if (event & POLLOUT)
+        rv |= APR_POLLOUT;
+    if (event & POLLERR)
+        rv |= APR_POLLERR;
+    if (event & POLLHUP)
+        rv |= APR_POLLHUP;
+    if (event & POLLNVAL)
+        rv |= APR_POLLNVAL;
+
+    return rv;
+}
+
+
+struct apr_pollset_private_t
+{
+    int port_fd;
+    port_event_t *port_set;
+    apr_pollfd_t *result_set;
+#if APR_HAS_THREADS
+    /* A thread mutex to protect operations on the rings */
+    apr_thread_mutex_t *ring_lock;
+#endif
+    /* A ring containing all of the pollfd_t that are active */
+    APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring;
+    /* A ring containing the pollfd_t that will be added on the
+     * next call to apr_pollset_poll().
+     */
+    APR_RING_HEAD(pfd_add_ring_t, pfd_elem_t) add_ring;
+    /* A ring of pollfd_t that have been used, and then _remove'd */
+    APR_RING_HEAD(pfd_free_ring_t, pfd_elem_t) free_ring;
+    /* A ring of pollfd_t where rings that have been _remove'd but
+       might still be inside a _poll */
+    APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring;
+    /* number of threads in poll */
+    volatile apr_uint32_t waiting;
+};
+
+static apr_status_t call_port_getn(int port, port_event_t list[], 
+                                   unsigned int max, unsigned int *nget,
+                                   apr_interval_time_t timeout)
+{
+    struct timespec tv, *tvptr;
+    int ret;
+    apr_status_t rv = APR_SUCCESS;
+
+    if (timeout < 0) {
+        tvptr = NULL;
+    }
+    else {
+        tv.tv_sec = (long) apr_time_sec(timeout);
+        tv.tv_nsec = (long) apr_time_usec(timeout) * 1000;
+        tvptr = &tv;
+    }
+
+    list[0].portev_user = (void *)-1; /* so we can double check that an
+                                       * event was returned
+                                       */
+
+    ret = port_getn(port, list, max, nget, tvptr);
+    /* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative 
+     * values instead of 0 when returning immediately.
+     */
+
+    if (ret == -1) {
+        rv = apr_get_netos_error();
+
+        switch(rv) {
+        case EINTR:
+        case ETIME:
+            if (*nget > 0 && list[0].portev_user != (void *)-1) {
+                /* This confusing API can return an event at the same time
+                 * that it reports EINTR or ETIME.  If that occurs, just
+                 * report the event.  With EINTR, nget can be > 0 without
+                 * any event, so check that portev_user was filled in.
+                 *
+                 * (Maybe it will be simplified; see thread
+                 *   http://mail.opensolaris.org
+                 *   /pipermail/networking-discuss/2009-August/011979.html
+                 *  This code will still work afterwards.)
+                 */
+                rv = APR_SUCCESS;
+                break;
+            }
+            if (rv == ETIME) {
+                rv = APR_TIMEUP;
+            }
+        /* fall-through */
+        default:
+            *nget = 0;
+        }
+    }
+    else if (*nget == 0) {
+        rv = APR_TIMEUP;
+    }
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_cleanup(apr_pollset_t *pollset)
+{
+    close(pollset->p->port_fd);
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollset_create(apr_pollset_t *pollset,
+                                             apr_uint32_t size,
+                                             apr_pool_t *p,
+                                             apr_uint32_t flags)
+{
+    apr_status_t rv = APR_SUCCESS;
+    pollset->p = apr_palloc(p, sizeof(apr_pollset_private_t));
+#if APR_HAS_THREADS
+    if (flags & APR_POLLSET_THREADSAFE &&
+        ((rv = apr_thread_mutex_create(&pollset->p->ring_lock,
+                                       APR_THREAD_MUTEX_DEFAULT,
+                                       p)) != APR_SUCCESS)) {
+        pollset->p = NULL;
+        return rv;
+    }
+#else
+    if (flags & APR_POLLSET_THREADSAFE) {
+        pollset->p = NULL;
+        return APR_ENOTIMPL;
+    }
+#endif
+    pollset->p->waiting = 0;
+
+    pollset->p->port_set = apr_palloc(p, size * sizeof(port_event_t));
+
+    pollset->p->port_fd = port_create();
+
+    if (pollset->p->port_fd < 0) {
+        pollset->p = NULL;
+        return apr_get_netos_error();
+    }
+
+    {
+        int flags;
+
+        if ((flags = fcntl(pollset->p->port_fd, F_GETFD)) == -1) {
+            rv = errno;
+            close(pollset->p->port_fd);
+            pollset->p = NULL;
+            return rv;
+        }
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(pollset->p->port_fd, F_SETFD, flags) == -1) {
+            rv = errno;
+            close(pollset->p->port_fd);
+            pollset->p = NULL;
+            return rv;
+        }
+    }
+
+    pollset->p->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
+
+    APR_RING_INIT(&pollset->p->query_ring, pfd_elem_t, link);
+    APR_RING_INIT(&pollset->p->add_ring, pfd_elem_t, link);
+    APR_RING_INIT(&pollset->p->free_ring, pfd_elem_t, link);
+    APR_RING_INIT(&pollset->p->dead_ring, pfd_elem_t, link);
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_add(apr_pollset_t *pollset,
+                                     const apr_pollfd_t *descriptor)
+{
+    apr_os_sock_t fd;
+    pfd_elem_t *elem;
+    int res;
+    apr_status_t rv = APR_SUCCESS;
+
+    pollset_lock_rings();
+
+    if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) {
+        elem = APR_RING_FIRST(&(pollset->p->free_ring));
+        APR_RING_REMOVE(elem, link);
+    }
+    else {
+        elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t));
+        APR_RING_ELEM_INIT(elem, link);
+        elem->on_query_ring = 0;
+    }
+    elem->pfd = *descriptor;
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    /* If another thread is polling, notify the kernel immediately; otherwise,
+     * wait until the next call to apr_pollset_poll().
+     */
+    if (apr_atomic_read32(&pollset->p->waiting)) {
+        res = port_associate(pollset->p->port_fd, PORT_SOURCE_FD, fd, 
+                             get_event(descriptor->reqevents), (void *)elem);
+
+        if (res < 0) {
+            rv = apr_get_netos_error();
+            APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link);
+        }
+        else {
+            elem->on_query_ring = 1;
+            APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link);
+        }
+    } 
+    else {
+        APR_RING_INSERT_TAIL(&(pollset->p->add_ring), elem, pfd_elem_t, link);
+    }
+
+    pollset_unlock_rings();
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_remove(apr_pollset_t *pollset,
+                                        const apr_pollfd_t *descriptor)
+{
+    apr_os_sock_t fd;
+    pfd_elem_t *ep;
+    apr_status_t rv = APR_SUCCESS;
+    int res;
+    int err = 0;
+    int found;
+
+    pollset_lock_rings();
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    /* Search the add ring first.  This ring is often shorter,
+     * and it often contains the descriptor being removed.  
+     * (For the common scenario where apr_pollset_poll() 
+     * returns activity for the descriptor and the descriptor
+     * is then removed from the pollset, it will have just 
+     * been moved to the add ring by apr_pollset_poll().)
+     *
+     * If it is on the add ring, it isn't associated with the
+     * event port yet/anymore.
+     */
+    found = 0;
+    for (ep = APR_RING_FIRST(&(pollset->p->add_ring));
+         ep != APR_RING_SENTINEL(&(pollset->p->add_ring),
+                                 pfd_elem_t, link);
+         ep = APR_RING_NEXT(ep, link)) {
+
+        if (descriptor->desc.s == ep->pfd.desc.s) {
+            found = 1;
+            APR_RING_REMOVE(ep, link);
+            APR_RING_INSERT_TAIL(&(pollset->p->free_ring),
+                                 ep, pfd_elem_t, link);
+            break;
+        }
+    }
+
+    if (!found) {
+        res = port_dissociate(pollset->p->port_fd, PORT_SOURCE_FD, fd);
+
+        if (res < 0) {
+            /* The expected case for this failure is that another
+             * thread's call to port_getn() returned this fd and
+             * disassociated the fd from the event port, and 
+             * impl_pollset_poll() is blocked on the ring lock,
+             * which this thread holds.
+             */
+            err = errno;
+            rv = APR_NOTFOUND;
+        }
+
+        for (ep = APR_RING_FIRST(&(pollset->p->query_ring));
+             ep != APR_RING_SENTINEL(&(pollset->p->query_ring),
+                                     pfd_elem_t, link);
+             ep = APR_RING_NEXT(ep, link)) {
+
+            if (descriptor->desc.s == ep->pfd.desc.s) {
+                APR_RING_REMOVE(ep, link);
+                ep->on_query_ring = 0;
+                APR_RING_INSERT_TAIL(&(pollset->p->dead_ring),
+                                     ep, pfd_elem_t, link);
+                if (ENOENT == err) {
+                    rv = APR_SUCCESS;
+                }
+                break;
+            }
+        }
+    }
+
+    pollset_unlock_rings();
+
+    return rv;
+}
+
+static apr_status_t impl_pollset_poll(apr_pollset_t *pollset,
+                                      apr_interval_time_t timeout,
+                                      apr_int32_t *num,
+                                      const apr_pollfd_t **descriptors)
+{
+    apr_os_sock_t fd;
+    int ret, i, j;
+    unsigned int nget;
+    pfd_elem_t *ep;
+    apr_status_t rv = APR_SUCCESS;
+    apr_pollfd_t fp;
+
+    nget = 1;
+
+    pollset_lock_rings();
+
+    apr_atomic_inc32(&pollset->p->waiting);
+
+    while (!APR_RING_EMPTY(&(pollset->p->add_ring), pfd_elem_t, link)) {
+        ep = APR_RING_FIRST(&(pollset->p->add_ring));
+        APR_RING_REMOVE(ep, link);
+
+        if (ep->pfd.desc_type == APR_POLL_SOCKET) {
+            fd = ep->pfd.desc.s->socketdes;
+        }
+        else {
+            fd = ep->pfd.desc.f->filedes;
+        }
+
+        ret = port_associate(pollset->p->port_fd, PORT_SOURCE_FD, 
+                             fd, get_event(ep->pfd.reqevents), ep);
+        if (ret < 0) {
+            rv = apr_get_netos_error();
+            APR_RING_INSERT_TAIL(&(pollset->p->free_ring), ep, pfd_elem_t, link);
+            break;
+        }
+
+        ep->on_query_ring = 1;
+        APR_RING_INSERT_TAIL(&(pollset->p->query_ring), ep, pfd_elem_t, link);
+    }
+
+    pollset_unlock_rings();
+
+    if (rv != APR_SUCCESS) {
+        apr_atomic_dec32(&pollset->p->waiting);
+        return rv;
+    }
+
+    rv = call_port_getn(pollset->p->port_fd, pollset->p->port_set, 
+                        pollset->nalloc, &nget, timeout);
+
+    /* decrease the waiting ASAP to reduce the window for calling 
+       port_associate within apr_pollset_add() */
+    apr_atomic_dec32(&pollset->p->waiting);
+
+    (*num) = nget;
+    if (nget) {
+
+        pollset_lock_rings();
+
+        for (i = 0, j = 0; i < nget; i++) {
+            fp = (((pfd_elem_t*)(pollset->p->port_set[i].portev_user))->pfd);
+            if ((pollset->flags & APR_POLLSET_WAKEABLE) &&
+                fp.desc_type == APR_POLL_FILE &&
+                fp.desc.f == pollset->wakeup_pipe[0]) {
+                apr_pollset_drain_wakeup_pipe(pollset);
+                rv = APR_EINTR;
+            }
+            else {
+                pollset->p->result_set[j] = fp;            
+                pollset->p->result_set[j].rtnevents =
+                    get_revent(pollset->p->port_set[i].portev_events);
+
+                /* If the ring element is still on the query ring, move it
+                 * to the add ring for re-association with the event port
+                 * later.  (It may have already been moved to the dead ring
+                 * by a call to pollset_remove on another thread.)
+                 */
+                ep = (pfd_elem_t *)pollset->p->port_set[i].portev_user;
+                if (ep->on_query_ring) {
+                    APR_RING_REMOVE(ep, link);
+                    ep->on_query_ring = 0;
+                    APR_RING_INSERT_TAIL(&(pollset->p->add_ring), ep,
+                                         pfd_elem_t, link);
+                }
+                j++;
+            }
+        }
+        pollset_unlock_rings();
+        if ((*num = j)) { /* any event besides wakeup pipe? */
+            rv = APR_SUCCESS;
+            if (descriptors) {
+                *descriptors = pollset->p->result_set;
+            }
+        }
+    }
+
+    pollset_lock_rings();
+
+    /* Shift all PFDs in the Dead Ring to the Free Ring */
+    APR_RING_CONCAT(&(pollset->p->free_ring), &(pollset->p->dead_ring), pfd_elem_t, link);
+
+    pollset_unlock_rings();
+
+    return rv;
+}
+
+static apr_pollset_provider_t impl = {
+    impl_pollset_create,
+    impl_pollset_add,
+    impl_pollset_remove,
+    impl_pollset_poll,
+    impl_pollset_cleanup,
+    "port"
+};
+
+apr_pollset_provider_t *apr_pollset_provider_port = &impl;
+
+static apr_status_t cb_cleanup(void *p_)
+{
+    apr_pollcb_t *pollcb = (apr_pollcb_t *) p_;
+    close(pollcb->fd);
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
+                                       apr_uint32_t size,
+                                       apr_pool_t *p,
+                                       apr_uint32_t flags)
+{
+    pollcb->fd = port_create();
+
+    if (pollcb->fd < 0) {
+        return apr_get_netos_error();
+    }
+
+    {
+        int flags;
+        apr_status_t rv;
+
+        if ((flags = fcntl(pollcb->fd, F_GETFD)) == -1) {
+            rv = errno;
+            close(pollcb->fd);
+            pollcb->fd = -1;
+            return rv;
+        }
+
+        flags |= FD_CLOEXEC;
+        if (fcntl(pollcb->fd, F_SETFD, flags) == -1) {
+            rv = errno;
+            close(pollcb->fd);
+            pollcb->fd = -1;
+            return rv;
+        }
+    }
+
+    pollcb->pollset.port = apr_palloc(p, size * sizeof(port_event_t));
+    apr_pool_cleanup_register(p, pollcb, cb_cleanup, apr_pool_cleanup_null);
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
+                                    apr_pollfd_t *descriptor)
+{
+    int ret, fd;
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    ret = port_associate(pollcb->fd, PORT_SOURCE_FD, fd,
+                         get_event(descriptor->reqevents), descriptor);
+
+    if (ret == -1) {
+        return apr_get_netos_error();
+    }
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
+                                       apr_pollfd_t *descriptor)
+{
+    int fd, ret;
+
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    ret = port_dissociate(pollcb->fd, PORT_SOURCE_FD, fd);
+
+    if (ret < 0) {
+        return APR_NOTFOUND;
+    }
+
+    return APR_SUCCESS;
+}
+
+static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
+                                     apr_interval_time_t timeout,
+                                     apr_pollcb_cb_t func,
+                                     void *baton)
+{
+    apr_pollfd_t *pollfd;
+    apr_status_t rv;
+    unsigned int i, nget = 1;
+
+    rv = call_port_getn(pollcb->fd, pollcb->pollset.port, pollcb->nalloc,
+                        &nget, timeout);
+
+    if (nget) {
+        for (i = 0; i < nget; i++) {
+            pollfd = (apr_pollfd_t *)(pollcb->pollset.port[i].portev_user);
+            pollfd->rtnevents = get_revent(pollcb->pollset.port[i].portev_events);
+
+            rv = func(baton, pollfd);
+            if (rv) {
+                return rv;
+            }
+            rv = apr_pollcb_add(pollcb, pollfd);
+        }
+    }
+
+    return rv;
+}
+
+static apr_pollcb_provider_t impl_cb = {
+    impl_pollcb_create,
+    impl_pollcb_add,
+    impl_pollcb_remove,
+    impl_pollcb_poll,
+    "port"
+};
+
+apr_pollcb_provider_t *apr_pollcb_provider_port = &impl_cb;
+
+#endif /* HAVE_PORT_CREATE */

Copied: vendor/apache/apr/1.5.2/poll/unix/z_asio.c (from rev 9273, vendor/apache/apr/dist/poll/unix/z_asio.c)
===================================================================
--- vendor/apache/apr/1.5.2/poll/unix/z_asio.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/poll/unix/z_asio.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,779 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ ******************************************************************************
+ *
+ * This implementation is based on a design by John Brooks (IBM Pok) which uses
+ * the z/OS sockets async i/o facility.  When a
+ * socket is added to the pollset, an async poll is issued for that individual
+ * socket.  It specifies that the kernel should send an IPC message when the
+ * socket becomes ready.  The IPC messages are sent to a single message queue
+ * that is part of the pollset.  apr_pollset_poll waits on the arrival of IPC
+ * messages or the specified timeout.
+ *
+ * Since z/OS does not support async i/o for pipes or files at present, this
+ * implementation falls back to using ordinary poll() when
+ * APR_POLLSET_THREADSAFE is unset.
+ *
+ * Greg Ames
+ * April 2012
+ */
+
+#include "apr.h"
+#include "apr_hash.h"
+#include "apr_poll.h"
+#include "apr_time.h"
+#include "apr_portable.h"
+#include "apr_arch_inherit.h"
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_arch_poll_private.h"
+
+#ifdef HAVE_AIO_MSGQ
+
+#include <sys/msg.h>  	/* msgget etc   */
+#include <time.h>     	/* timestruct   */
+#include <poll.h>     	/* pollfd       */
+#include <limits.h>     /* MAX_INT      */
+
+struct apr_pollset_private_t
+{
+    int             msg_q;              /* IPC message queue. The z/OS kernel sends messages
+                                         * to this queue when our async polls on individual
+                                         * file descriptors complete
+                                         */
+    apr_pollfd_t    *result_set;
+    apr_uint32_t    size;
+
+#if APR_HAS_THREADS
+    /* A thread mutex to protect operations on the rings and the hash */
+    apr_thread_mutex_t *ring_lock;
+#endif
+
+    /* A hash of all active elements used for O(1) _remove operations */
+    apr_hash_t      *elems;
+
+    APR_RING_HEAD(ready_ring_t,       asio_elem_t)      ready_ring;
+    APR_RING_HEAD(prior_ready_ring_t, asio_elem_t)      prior_ready_ring;
+    APR_RING_HEAD(free_ring_t,        asio_elem_t)      free_ring;
+
+    /* for pipes etc with no asio */
+    struct pollfd   *pollset;
+    apr_pollfd_t    *query_set;
+};
+
+typedef enum {
+    ASIO_INIT = 0,
+    ASIO_REMOVED,
+    ASIO_COMPLETE
+} asio_state_e;
+
+typedef struct asio_elem_t asio_elem_t;
+
+struct asio_msgbuf_t {
+    long         msg_type;       /* must be > 0 */
+    asio_elem_t *msg_elem;
+};
+
+struct asio_elem_t
+{
+    APR_RING_ENTRY(asio_elem_t) link;
+    apr_pollfd_t                pfd;
+    struct pollfd               os_pfd;
+    struct aiocb                a;
+    asio_state_e                state;
+    struct asio_msgbuf_t        msg;
+};
+
+#define DEBUG 0
+
+/* DEBUG settings: 0 - no debug messages at all,
+ *                 1 - should not occur messages,
+ *                 2 - apr_pollset_* entry and exit messages,
+ *                 3 - state changes, memory usage,
+ *                 4 - z/OS, APR, and internal calls,
+ *                 5 - everything else except the timer pop path,
+ *                 6 - everything, including the Event 1 sec timer pop path
+ *
+ *  each DEBUG level includes all messages produced by lower numbered levels
+ */
+
+#if DEBUG
+
+#include <assert.h>
+#include <unistd.h>	/* getpid       */
+
+#define DBG_BUFF char dbg_msg_buff[256];
+
+#define DBG_TEST(lvl) if (lvl <= DEBUG) {
+
+#define DBG_CORE(msg)               sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
+                                        " "  msg, getpid()),                   \
+                                    fprintf(stderr, "%s", dbg_msg_buff);
+#define DBG_CORE1(msg, var1)        sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
+                                        " " msg, getpid(), var1),              \
+                                    fprintf(stderr, "%s", dbg_msg_buff);
+#define DBG_CORE2(msg, var1, var2)  sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
+                                        " " msg, getpid(), var1, var2),        \
+                                    fprintf(stderr, "%s", dbg_msg_buff);
+#define DBG_CORE3(msg, var1, var2, var3)                                       \
+                                    sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
+                                        " " msg, getpid(), var1, var2, var3),  \
+                                    fprintf(stderr, "%s", dbg_msg_buff);
+#define DBG_CORE4(msg, var1, var2, var3, var4)                                 \
+                                    sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
+                                        " " msg, getpid(), var1, var2, var3, var4),\
+                                    fprintf(stderr, "%s", dbg_msg_buff);
+
+#define DBG_END }
+
+#define DBG(lvl, msg)   DBG_TEST(lvl)   \
+                        DBG_CORE(msg)   \
+                        DBG_END
+
+#define DBG1(lvl, msg, var1)    DBG_TEST(lvl)           \
+                                DBG_CORE1(msg, var1)    \
+                                DBG_END
+
+#define DBG2(lvl, msg, var1, var2)      DBG_TEST(lvl)               \
+                                        DBG_CORE2(msg, var1, var2)  \
+                                        DBG_END
+
+#define DBG3(lvl, msg, var1, var2, var3)                        \
+                        DBG_TEST(lvl)                           \
+                        DBG_CORE3(msg, var1, var2, var3)        \
+                        DBG_END
+
+#define DBG4(lvl, msg, var1, var2, var3, var4)                  \
+                        DBG_TEST(lvl)                           \
+                        DBG_CORE4(msg, var1, var2, var3, var4)  \
+                        DBG_END
+
+#else  /* DEBUG is 0 */
+#define DBG_BUFF
+#define DBG(lvl, msg)                            ((void)0)
+#define DBG1(lvl, msg, var1)                     ((void)0)
+#define DBG2(lvl, msg, var1, var2)               ((void)0)
+#define DBG3(lvl, msg, var1, var2, var3)         ((void)0)
+#define DBG4(lvl, msg, var1, var2, var3, var4)   ((void)0)
+
+#endif /* DEBUG */
+
+static int asyncio(struct aiocb *a)
+{
+    DBG_BUFF
+    int rv;
+
+#ifdef _LP64
+#define AIO BPX4AIO
+#else
+#define AIO BPX1AIO
+#endif
+
+    AIO(sizeof(struct aiocb), a, &rv, &errno, __err2ad());
+    DBG2(4, "BPX4AIO aiocb %p rv %d\n",
+             a, rv);
+#ifdef DEBUG
+    if (rv < 0) {
+        DBG2(4, "errno %d errnojr %08x\n",
+                 errno, *__err2ad());
+    }
+#endif
+    return rv;
+}
+
+static apr_int16_t get_event(apr_int16_t event)
+{
+    DBG_BUFF
+    apr_int16_t rv = 0;
+    DBG(4, "entered\n");
+
+    if (event & APR_POLLIN)
+        rv |= POLLIN;
+    if (event & APR_POLLPRI)
+        rv |= POLLPRI;
+    if (event & APR_POLLOUT)
+        rv |= POLLOUT;
+    if (event & APR_POLLERR)
+        rv |= POLLERR;
+    if (event & APR_POLLHUP)
+        rv |= POLLHUP;
+    if (event & APR_POLLNVAL)
+        rv |= POLLNVAL;
+
+    DBG(4, "exiting\n");
+    return rv;
+}
+
+static apr_int16_t get_revent(apr_int16_t event)
+{
+    DBG_BUFF
+    apr_int16_t rv = 0;
+    DBG(4, "entered\n");
+
+    if (event & POLLIN)
+        rv |= APR_POLLIN;
+    if (event & POLLPRI)
+        rv |= APR_POLLPRI;
+    if (event & POLLOUT)
+        rv |= APR_POLLOUT;
+    if (event & POLLERR)
+        rv |= APR_POLLERR;
+    if (event & POLLHUP)
+        rv |= APR_POLLHUP;
+    if (event & POLLNVAL)
+        rv |= APR_POLLNVAL;
+
+    DBG(4, "exiting\n");
+    return rv;
+}
+
+static apr_status_t asio_pollset_cleanup(apr_pollset_t *pollset)
+{
+    DBG_BUFF
+    int rv;
+
+    DBG(4, "entered\n");
+    rv = msgctl(pollset->p->msg_q, IPC_RMID, NULL);
+
+    DBG1(4, "exiting, msgctl(IPC_RMID) returned %d\n", rv);
+    return rv;
+}
+
+static apr_status_t asio_pollset_create(apr_pollset_t *pollset,
+                                        apr_uint32_t size,
+                                        apr_pool_t *p,
+                                        apr_uint32_t flags)
+{
+    DBG_BUFF
+    apr_status_t rv;
+    apr_pollset_private_t *priv;
+
+    DBG1(2, "entered, flags: %x\n", flags);
+
+    priv = pollset->p = apr_palloc(p, sizeof(*priv));
+
+    if (flags & APR_POLLSET_THREADSAFE) {
+#if APR_HAS_THREADS
+        if (rv = apr_thread_mutex_create(&(priv->ring_lock),
+                                           APR_THREAD_MUTEX_DEFAULT,
+                                           p) != APR_SUCCESS) {
+            DBG1(1, "apr_thread_mutex_create returned %d\n", rv);
+            pollset->p = NULL;
+            return rv;
+        }
+        rv = msgget(IPC_PRIVATE, S_IWUSR+S_IRUSR); /* user r/w perms */
+        if (rv < 0) {
+#if DEBUG
+            perror(__FUNCTION__ " msgget returned < 0 ");
+#endif
+            pollset->p = NULL;
+            return rv;
+        }
+
+        DBG2(4, "pollset %p msgget was OK, rv=%d\n", pollset, rv);
+        priv->msg_q = rv;
+        priv->elems   = apr_hash_make(p);
+
+        APR_RING_INIT(&priv->free_ring, asio_elem_t, link);
+        APR_RING_INIT(&priv->prior_ready_ring, asio_elem_t, link);
+
+#else  /* APR doesn't have threads but caller wants a threadsafe pollset */
+        pollset->p = NULL;
+        return APR_ENOTIMPL;
+#endif
+
+    } else {  /* APR_POLLSET_THREADSAFE not set, i.e. no async i/o,
+               * init fields only needed in old style pollset
+               */
+
+        priv->pollset = apr_palloc(p, size * sizeof(struct pollfd));
+        priv->query_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
+
+        if ((!priv->pollset) || (!priv->query_set)) {
+            pollset->p = NULL;
+            return APR_ENOMEM;
+        }
+    }
+
+    pollset->nelts   = 0;
+    pollset->flags   = flags;
+    pollset->pool    = p;
+    priv->size    = size;
+    priv->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t));
+    if (!priv->result_set) {
+        if (flags & APR_POLLSET_THREADSAFE) {
+            msgctl(priv->msg_q, IPC_RMID, NULL);
+        }
+        pollset->p = NULL;
+        return APR_ENOMEM;
+    }
+
+    DBG2(2, "exiting, pollset: %p, type: %s\n",
+             pollset,
+             flags & APR_POLLSET_THREADSAFE ? "async" : "POSIX");
+
+
+    return APR_SUCCESS;
+
+} /* end of asio_pollset_create */
+
+static apr_status_t posix_add(apr_pollset_t      *pollset,
+                              const apr_pollfd_t *descriptor)
+{
+    DBG_BUFF
+    int fd;
+    apr_pool_t  *p = pollset->pool;
+    apr_pollset_private_t *priv = pollset->p;
+
+    DBG(4, "entered\n");
+
+    if (pollset->nelts == priv->size) {
+        return APR_ENOMEM;
+    }
+
+    priv->query_set[pollset->nelts] = *descriptor;
+    if (descriptor->desc_type == APR_POLL_SOCKET) {
+        fd = descriptor->desc.s->socketdes;
+    }
+    else {
+        fd = descriptor->desc.f->filedes;
+    }
+
+    priv->pollset[pollset->nelts].fd = fd;
+
+    priv->pollset[pollset->nelts].events =
+        get_event(descriptor->reqevents);
+
+    pollset->nelts++;
+
+    DBG2(4, "exiting, fd %d added to pollset %p\n", fd, pollset);
+
+    return APR_SUCCESS;
+}   /* end of posix_add */
+
+
+static apr_status_t asio_pollset_add(apr_pollset_t *pollset,
+                                     const apr_pollfd_t *descriptor)
+{
+    DBG_BUFF
+    asio_elem_t *elem;
+    apr_status_t rv = APR_SUCCESS;
+    apr_pollset_private_t *priv = pollset->p;
+
+    pollset_lock_rings();
+    DBG(2, "entered\n");
+
+    if (pollset->flags & APR_POLLSET_THREADSAFE) {
+
+        if (!APR_RING_EMPTY(&(priv->free_ring), asio_elem_t, link)) {
+            elem = APR_RING_FIRST(&(priv->free_ring));
+            APR_RING_REMOVE(elem, link);
+            DBG1(3, "used recycled memory at %08p\n", elem);
+            elem->state = ASIO_INIT;
+            elem->a.aio_cflags = 0;
+        }
+        else {
+            elem = (asio_elem_t *) apr_pcalloc(pollset->pool, sizeof(asio_elem_t));
+            DBG1(3, "alloced new memory at %08p\n", elem);
+
+            elem->a.aio_notifytype = AIO_MSGQ;
+            elem->a.aio_msgev_qid  = priv->msg_q;
+            DBG1(5, "aio_msgev_quid = %d \n", elem->a.aio_msgev_qid);
+            elem->a.aio_msgev_size = sizeof(asio_elem_t *);
+            elem->a.aio_msgev_flag = 0;     /* wait if queue is full */
+            elem->a.aio_msgev_addr = &(elem->msg);
+            elem->a.aio_buf        = &(elem->os_pfd);
+            elem->a.aio_nbytes     = 1;     /* number of pfds to poll */
+            elem->msg.msg_type     = 1;
+            elem->msg.msg_elem     = elem;
+        }
+
+        /* z/OS only supports async I/O for sockets for now */
+        elem->os_pfd.fd = descriptor->desc.s->socketdes;
+
+        APR_RING_ELEM_INIT(elem, link);
+        elem->a.aio_cmd       = AIO_SELPOLL;
+        elem->a.aio_cflags    &= ~AIO_OK2COMPIMD; /* not OK to complete inline*/
+        elem->pfd             = *descriptor;
+        elem->os_pfd.events   = get_event(descriptor->reqevents);
+
+        if (0 != asyncio(&elem->a)) {
+            rv = errno;
+            DBG3(4, "pollset %p asio failed fd %d, errno %p\n",
+                     pollset, elem->os_pfd.fd, rv);
+#if DEBUG
+            perror(__FUNCTION__ " asio failure");
+#endif
+        }
+        else {
+            DBG2(4, "good asio call, adding fd %d to pollset %p\n",
+                     elem->os_pfd.fd, pollset);
+
+            pollset->nelts++;
+            apr_hash_set(priv->elems, &(elem->os_pfd.fd), sizeof(int), elem);
+        }
+    }
+    else {
+        /* APR_POLLSET_THREADSAFE isn't set.  use POSIX poll in case
+         * pipes or files are used with this pollset
+         */
+
+        rv = posix_add(pollset, descriptor);
+    }
+
+    DBG1(2, "exiting, rv = %d\n", rv);
+
+    pollset_unlock_rings();
+    return rv;
+} /* end of asio_pollset_add */
+
+static posix_remove(apr_pollset_t *pollset, const apr_pollfd_t *descriptor)
+{
+    DBG_BUFF
+    apr_uint32_t i;
+    apr_pollset_private_t *priv = pollset->p;
+
+    DBG(4, "entered\n");
+    for (i = 0; i < pollset->nelts; i++) {
+        if (descriptor->desc.s == priv->query_set[i].desc.s) {
+            /* Found an instance of the fd: remove this and any other copies */
+            apr_uint32_t dst = i;
+            apr_uint32_t old_nelts = pollset->nelts;
+            pollset->nelts--;
+            for (i++; i < old_nelts; i++) {
+                if (descriptor->desc.s == priv->query_set[i].desc.s) {
+                    pollset->nelts--;
+                }
+                else {
+                    priv->pollset[dst] = priv->pollset[i];
+                    priv->query_set[dst] = priv->query_set[i];
+                    dst++;
+                }
+            }
+            DBG(4, "returning OK\n");
+            return APR_SUCCESS;
+        }
+    }
+
+    DBG(1, "returning APR_NOTFOUND\n");
+    return APR_NOTFOUND;
+
+}   /* end of posix_remove */
+
+static apr_status_t asio_pollset_remove(apr_pollset_t *pollset,
+                                        const apr_pollfd_t *descriptor)
+{
+    DBG_BUFF
+    asio_elem_t *elem;
+    apr_status_t rv = APR_SUCCESS;
+    apr_pollset_private_t *priv = pollset->p;
+    struct aiocb cancel_a;   /* AIO_CANCEL is synchronous, so autodata works fine */
+
+    int fd;
+
+    DBG(2, "entered\n");
+
+    if (!(pollset->flags & APR_POLLSET_THREADSAFE)) {
+        return posix_remove(pollset, descriptor);
+    }
+
+    pollset_lock_rings();
+
+#if DEBUG
+    assert(descriptor->desc_type == APR_POLL_SOCKET);
+#endif
+    /* zOS 1.12 doesn't support files for async i/o */
+    fd = descriptor->desc.s->socketdes;
+
+    elem = apr_hash_get(priv->elems, &(fd), sizeof(int));
+    if (elem == NULL) {
+        DBG1(1, "couldn't find fd %d\n", fd);
+        rv = APR_NOTFOUND;
+    } else {
+        DBG1(5, "hash found fd %d\n", fd);
+        /* delete this fd from the hash */
+        apr_hash_set(priv->elems, &(fd), sizeof(int), NULL);
+
+        if (elem->state == ASIO_INIT) {
+            /* asyncio call to cancel */
+            cancel_a.aio_cmd = AIO_CANCEL;
+            cancel_a.aio_buf = &elem->a;   /* point to original aiocb */
+
+            cancel_a.aio_cflags  = 0;
+            cancel_a.aio_cflags2 = 0;
+
+            /* we want the original aiocb to show up on the pollset message queue 
+             * before recycling its memory to eliminate race conditions
+             */
+
+            rv = asyncio(&cancel_a);
+            DBG1(4, "asyncio returned %d\n", rv);
+
+#if DEBUG
+            assert(rv == 1);
+#endif
+        }
+        elem->state = ASIO_REMOVED;
+        rv = APR_SUCCESS;
+    }
+
+    DBG1(2, "exiting, rv: %d\n", rv);
+
+    pollset_unlock_rings();
+
+    return rv;
+}   /* end of asio_pollset_remove */
+
+static posix_poll(apr_pollset_t *pollset,
+                  apr_interval_time_t timeout,
+                  apr_int32_t *num,
+                  const apr_pollfd_t **descriptors)
+{
+    DBG_BUFF
+    int rv;
+    apr_uint32_t i, j;
+    apr_pollset_private_t *priv = pollset->p;
+
+    DBG(4, "entered\n");
+
+    if (timeout > 0) {
+        timeout /= 1000;
+    }
+    rv = poll(priv->pollset, pollset->nelts, timeout);
+    (*num) = rv;
+    if (rv < 0) {
+        return apr_get_netos_error();
+    }
+    if (rv == 0) {
+        return APR_TIMEUP;
+    }
+    j = 0;
+    for (i = 0; i < pollset->nelts; i++) {
+        if (priv->pollset[i].revents != 0) {
+            priv->result_set[j] = priv->query_set[i];
+            priv->result_set[j].rtnevents =
+                get_revent(priv->pollset[i].revents);
+            j++;
+        }
+    }
+    if (descriptors)
+        *descriptors = priv->result_set;
+
+    DBG(4, "exiting ok\n");
+    return APR_SUCCESS;
+
+}   /* end of posix_poll */
+
+static process_msg(apr_pollset_t *pollset, struct asio_msgbuf_t *msg)
+{
+    DBG_BUFF
+    asio_elem_t *elem = msg->msg_elem;
+
+    switch(elem->state) {
+    case ASIO_REMOVED:
+        DBG2(5, "for cancelled elem, recycling memory - elem %08p, fd %d\n",
+                elem, elem->os_pfd.fd);
+        APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem,
+                             asio_elem_t, link);
+        break;
+    case ASIO_INIT:
+        DBG2(4, "adding to ready ring: elem %08p, fd %d\n",
+                elem, elem->os_pfd.fd);
+        elem->state = ASIO_COMPLETE;
+        APR_RING_INSERT_TAIL(&(pollset->p->ready_ring), elem,
+                             asio_elem_t, link);
+        break;
+    default:
+        DBG3(1, "unexpected state: elem %08p, fd %d, state %d\n",
+            elem, elem->os_pfd.fd, elem->state);
+#if DEBUG
+        assert(0);
+#endif
+    }
+}
+
+static apr_status_t asio_pollset_poll(apr_pollset_t *pollset,
+                                      apr_interval_time_t timeout,
+                                      apr_int32_t *num,
+                                      const apr_pollfd_t **descriptors)
+{
+    DBG_BUFF
+    int i, ret;
+    asio_elem_t *elem, *next_elem;
+    struct asio_msgbuf_t msg_buff;
+    struct timespec tv;
+    apr_status_t rv = APR_SUCCESS;
+    apr_pollset_private_t *priv = pollset->p;
+
+    DBG(6, "entered\n"); /* chatty - traces every second w/Event */
+
+    if ((pollset->flags & APR_POLLSET_THREADSAFE) == 0 ) {
+        return posix_poll(pollset, timeout, num, descriptors);
+    }
+
+    pollset_lock_rings();
+    APR_RING_INIT(&(priv->ready_ring), asio_elem_t, link);
+
+    while (!APR_RING_EMPTY(&(priv->prior_ready_ring), asio_elem_t, link)) {
+        elem = APR_RING_FIRST(&(priv->prior_ready_ring));
+        DBG3(5, "pollset %p elem %p fd %d on prior ready ring\n",
+                pollset,
+                elem,
+                elem->os_pfd.fd);
+
+        APR_RING_REMOVE(elem, link);
+
+        /*
+         * since USS does not remember what's in our pollset, we have
+         * to re-add fds which have not been apr_pollset_remove'd
+         *
+         * there may have been too many ready fd's to return in the
+         * result set last time. re-poll inline for both cases
+         */
+
+        if (elem->state == ASIO_REMOVED) {
+
+            /* 
+             * async i/o is done since it was found on prior_ready
+             * the state says the caller is done with it too 
+             * so recycle the elem 
+             */
+             
+            APR_RING_INSERT_TAIL(&(priv->free_ring), elem,
+                                 asio_elem_t, link);
+            continue;  /* do not re-add if it has been _removed */
+        }
+
+        elem->state = ASIO_INIT;
+        elem->a.aio_cflags     = AIO_OK2COMPIMD;
+
+        if (0 != (ret = asyncio(&elem->a))) {
+            if (ret == 1) {
+                DBG(4, "asyncio() completed inline\n");
+                /* it's ready now */
+                elem->state = ASIO_COMPLETE;
+                APR_RING_INSERT_TAIL(&(priv->ready_ring), elem, asio_elem_t,
+                                     link);
+            }
+            else {
+                DBG2(1, "asyncio() failed, ret: %d, errno: %d\n",
+                        ret, errno);
+                pollset_unlock_rings();
+                return errno;
+            }
+        }
+        DBG1(4, "asyncio() completed rc %d\n", ret);
+    }
+
+    DBG(6, "after prior ready loop\n"); /* chatty w/timeouts, hence 6 */
+
+    /* Gather async poll completions that have occurred since the last call */
+    while (0 < msgrcv(priv->msg_q, &msg_buff, sizeof(asio_elem_t *), 0,
+                      IPC_NOWAIT)) {
+        process_msg(pollset, &msg_buff);
+    }
+
+    /* Suspend if nothing is ready yet. */
+    if (APR_RING_EMPTY(&(priv->ready_ring), asio_elem_t, link)) {
+
+        if (timeout >= 0) {
+            tv.tv_sec  = apr_time_sec(timeout);
+            tv.tv_nsec = apr_time_usec(timeout) * 1000;
+        } else {
+            tv.tv_sec = INT_MAX;  /* block until something is ready */
+        }
+
+        DBG2(6, "nothing on the ready ring "
+                "- blocking for %d seconds %d ns\n",
+                tv.tv_sec, tv.tv_nsec);
+
+        pollset_unlock_rings();   /* allow other apr_pollset_* calls while blocked */
+
+        if (0 >= (ret = __msgrcv_timed(priv->msg_q, &msg_buff,
+                                       sizeof(asio_elem_t *), 0, NULL, &tv))) {
+#if DEBUG
+            if (errno == EAGAIN) {
+                DBG(6, "__msgrcv_timed timed out\n"); /* timeout path, so 6 */
+            }
+            else {
+                DBG(1, "__msgrcv_timed failed!\n");
+            }
+#endif
+            return (errno == EAGAIN) ? APR_TIMEUP : errno;
+        }
+
+        pollset_lock_rings();
+
+        process_msg(pollset, &msg_buff);
+    }
+
+    APR_RING_INIT(&priv->prior_ready_ring, asio_elem_t, link);
+
+    (*num) = 0;
+    elem = APR_RING_FIRST(&(priv->ready_ring));
+
+    for (i = 0;
+
+        i < priv->size
+                && elem != APR_RING_SENTINEL(&(priv->ready_ring), asio_elem_t, link);
+        i++) {
+             DBG2(5, "ready ring: elem %08p, fd %d\n", elem, elem->os_pfd.fd);
+
+             priv->result_set[i] = elem->pfd;
+             priv->result_set[i].rtnevents
+                                    = get_revent(elem->os_pfd.revents);
+             (*num)++;
+
+             elem = APR_RING_NEXT(elem, link);
+
+#if DEBUG
+             if (elem == APR_RING_SENTINEL(&(priv->ready_ring), asio_elem_t, link)) {
+                 DBG(5, "end of ready ring reached\n");
+             }
+#endif
+    }
+
+    if (descriptors) {
+        *descriptors = priv->result_set;
+    }
+
+    /* if the result size is too small, remember which descriptors
+     * haven't had results reported yet.  we will look
+     * at these descriptors on the next apr_pollset_poll call
+     */
+
+    APR_RING_CONCAT(&priv->prior_ready_ring, &(priv->ready_ring), asio_elem_t, link);
+
+    DBG1(2, "exiting, rv = %d\n", rv);
+
+    pollset_unlock_rings();
+
+    return rv;
+}  /* end of asio_pollset_poll */
+
+static apr_pollset_provider_t impl = {
+    asio_pollset_create,
+    asio_pollset_add,
+    asio_pollset_remove,
+    asio_pollset_poll,
+    asio_pollset_cleanup,
+    "asio"
+};
+
+apr_pollset_provider_t *apr_pollset_provider_aio_msgq = &impl;
+
+#endif /* HAVE_AIO_MSGQ */

Deleted: vendor/apache/apr/1.5.2/shmem/beos/shm.c
===================================================================
--- vendor/apache/apr/dist/shmem/beos/shm.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/shmem/beos/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,166 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_general.h"
-#include "apr_shm.h"
-#include "apr_errno.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <kernel/OS.h>
-#include "apr_portable.h"
-
-struct apr_shm_t {
-    apr_pool_t *pool;
-    void *memblock;
-    void *ptr;
-    apr_size_t reqsize;
-    apr_size_t avail;
-    area_id aid;
-};
-
-APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, 
-                                         apr_size_t reqsize, 
-                                         const char *filename, 
-                                         apr_pool_t *p)
-{
-    apr_size_t pagesize;
-    area_id newid;
-    char *addr;
-    char shname[B_OS_NAME_LENGTH];
-    
-    (*m) = (apr_shm_t *)apr_pcalloc(p, sizeof(apr_shm_t));
-    /* we MUST allocate in pages, so calculate how big an area we need... */
-    pagesize = ((reqsize + B_PAGE_SIZE - 1) / B_PAGE_SIZE) * B_PAGE_SIZE;
-     
-    if (!filename) {
-        int num = 0;
-        snprintf(shname, B_OS_NAME_LENGTH, "apr_shmem_%ld", find_thread(NULL));
-        while (find_area(shname) >= 0)
-            snprintf(shname, B_OS_NAME_LENGTH, "apr_shmem_%ld_%d",
-                     find_thread(NULL), num++);
-    }
-    newid = create_area(filename ? filename : shname, 
-                        (void*)&addr, B_ANY_ADDRESS,
-                        pagesize, B_LAZY_LOCK, B_READ_AREA|B_WRITE_AREA);
-
-    if (newid < 0)
-        return errno;
-
-    (*m)->pool = p;
-    (*m)->aid = newid;
-    (*m)->memblock = addr;
-    (*m)->ptr = (void*)addr;
-    (*m)->avail = pagesize; /* record how big an area we actually created... */
-    (*m)->reqsize = reqsize;
-
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m)
-{
-    delete_area(m->aid);
-    m->avail = 0;
-    m->memblock = NULL;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
-                                         apr_pool_t *pool)
-{
-    area_id deleteme = find_area(filename);
-    
-    if (deleteme == B_NAME_NOT_FOUND)
-        return APR_EINVAL;
-
-    delete_area(deleteme);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
-                                         const char *filename,
-                                         apr_pool_t *pool)
-{
-    area_info ai;
-    thread_info ti;
-    apr_shm_t *new_m;
-    area_id deleteme = find_area(filename);
-
-    if (deleteme == B_NAME_NOT_FOUND)
-        return APR_EINVAL;
-
-    new_m = (apr_shm_t*)apr_palloc(pool, sizeof(apr_shm_t*));
-    if (new_m == NULL)
-        return APR_ENOMEM;
-    new_m->pool = pool;
-
-    get_area_info(deleteme, &ai);
-    get_thread_info(find_thread(NULL), &ti);
-
-    if (ti.team != ai.team) {
-        area_id narea;
-        
-        narea = clone_area(ai.name, &(ai.address), B_CLONE_ADDRESS,
-                           B_READ_AREA|B_WRITE_AREA, ai.area);
-
-        if (narea < B_OK)
-            return narea;
-            
-        get_area_info(narea, &ai);
-        new_m->aid = narea;
-        new_m->memblock = ai.address;
-        new_m->ptr = (void*)ai.address;
-        new_m->avail = ai.size;
-        new_m->reqsize = ai.size;
-    }
-
-    (*m) = new_m;
-    
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
-{
-    delete_area(m->aid);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
-{
-    return m->memblock;
-}
-
-APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
-{
-    return m->reqsize;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(shm)
-
-APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
-                                         apr_shm_t *shm)
-{
-    return APR_ENOTIMPL;
-}
-
-APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
-                                         apr_os_shm_t *osshm,
-                                         apr_pool_t *pool)
-{
-    return APR_ENOTIMPL;
-}    
-

Copied: vendor/apache/apr/1.5.2/shmem/beos/shm.c (from rev 9273, vendor/apache/apr/dist/shmem/beos/shm.c)
===================================================================
--- vendor/apache/apr/1.5.2/shmem/beos/shm.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/shmem/beos/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,183 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_general.h"
+#include "apr_shm.h"
+#include "apr_errno.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <kernel/OS.h>
+#include "apr_portable.h"
+
+struct apr_shm_t {
+    apr_pool_t *pool;
+    void *memblock;
+    void *ptr;
+    apr_size_t reqsize;
+    apr_size_t avail;
+    area_id aid;
+};
+
+APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, 
+                                         apr_size_t reqsize, 
+                                         const char *filename, 
+                                         apr_pool_t *p)
+{
+    apr_size_t pagesize;
+    area_id newid;
+    char *addr;
+    char shname[B_OS_NAME_LENGTH];
+    
+    (*m) = (apr_shm_t *)apr_pcalloc(p, sizeof(apr_shm_t));
+    /* we MUST allocate in pages, so calculate how big an area we need... */
+    pagesize = ((reqsize + B_PAGE_SIZE - 1) / B_PAGE_SIZE) * B_PAGE_SIZE;
+     
+    if (!filename) {
+        int num = 0;
+        snprintf(shname, B_OS_NAME_LENGTH, "apr_shmem_%ld", find_thread(NULL));
+        while (find_area(shname) >= 0)
+            snprintf(shname, B_OS_NAME_LENGTH, "apr_shmem_%ld_%d",
+                     find_thread(NULL), num++);
+    }
+    newid = create_area(filename ? filename : shname, 
+                        (void*)&addr, B_ANY_ADDRESS,
+                        pagesize, B_LAZY_LOCK, B_READ_AREA|B_WRITE_AREA);
+
+    if (newid < 0)
+        return errno;
+
+    (*m)->pool = p;
+    (*m)->aid = newid;
+    (*m)->memblock = addr;
+    (*m)->ptr = (void*)addr;
+    (*m)->avail = pagesize; /* record how big an area we actually created... */
+    (*m)->reqsize = reqsize;
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_create_ex(apr_shm_t **m, 
+                                            apr_size_t reqsize, 
+                                            const char *filename, 
+                                            apr_pool_t *p,
+                                            apr_int32_t flags)
+{
+    return apr_shm_create(m, reqsize, filename, p);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m)
+{
+    delete_area(m->aid);
+    m->avail = 0;
+    m->memblock = NULL;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
+                                         apr_pool_t *pool)
+{
+    area_id deleteme = find_area(filename);
+    
+    if (deleteme == B_NAME_NOT_FOUND)
+        return APR_EINVAL;
+
+    delete_area(deleteme);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
+                                         const char *filename,
+                                         apr_pool_t *pool)
+{
+    area_info ai;
+    thread_info ti;
+    apr_shm_t *new_m;
+    area_id deleteme = find_area(filename);
+
+    if (deleteme == B_NAME_NOT_FOUND)
+        return APR_EINVAL;
+
+    new_m = (apr_shm_t*)apr_palloc(pool, sizeof(apr_shm_t*));
+    if (new_m == NULL)
+        return APR_ENOMEM;
+    new_m->pool = pool;
+
+    get_area_info(deleteme, &ai);
+    get_thread_info(find_thread(NULL), &ti);
+
+    if (ti.team != ai.team) {
+        area_id narea;
+        
+        narea = clone_area(ai.name, &(ai.address), B_CLONE_ADDRESS,
+                           B_READ_AREA|B_WRITE_AREA, ai.area);
+
+        if (narea < B_OK)
+            return narea;
+            
+        get_area_info(narea, &ai);
+        new_m->aid = narea;
+        new_m->memblock = ai.address;
+        new_m->ptr = (void*)ai.address;
+        new_m->avail = ai.size;
+        new_m->reqsize = ai.size;
+    }
+
+    (*m) = new_m;
+    
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach_ex(apr_shm_t **m,
+                                            const char *filename,
+                                            apr_pool_t *pool,
+                                            apr_int32_t flags)
+{
+    return apr_shm_attach(m, filename, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
+{
+    delete_area(m->aid);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
+{
+    return m->memblock;
+}
+
+APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
+{
+    return m->reqsize;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(shm)
+
+APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
+                                         apr_shm_t *shm)
+{
+    return APR_ENOTIMPL;
+}
+
+APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
+                                         apr_os_shm_t *osshm,
+                                         apr_pool_t *pool)
+{
+    return APR_ENOTIMPL;
+}    
+

Deleted: vendor/apache/apr/1.5.2/shmem/os2/shm.c
===================================================================
--- vendor/apache/apr/dist/shmem/os2/shm.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/shmem/os2/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,144 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_general.h"
-#include "apr_shm.h"
-#include "apr_errno.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-
-struct apr_shm_t {
-    apr_pool_t *pool;
-    void *memblock;
-};
-
-APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
-                                         apr_size_t reqsize,
-                                         const char *filename,
-                                         apr_pool_t *pool)
-{
-    int rc;
-    apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t));
-    char *name = NULL;
-    ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE;
-
-    newm->pool = pool;
-
-    if (filename) {
-        name = apr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL);
-    }
-
-    if (name == NULL) {
-        flags |= OBJ_GETTABLE;
-    }
-
-    rc = DosAllocSharedMem(&(newm->memblock), name, reqsize, flags);
-
-    if (rc) {
-        return APR_OS2_STATUS(rc);
-    }
-
-    *m = newm;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m)
-{
-    DosFreeMem(m->memblock);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
-                                         apr_pool_t *pool)
-{
-    return APR_ENOTIMPL;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
-                                         const char *filename,
-                                         apr_pool_t *pool)
-{
-    int rc;
-    apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t));
-    char *name = NULL;
-    ULONG flags = PAG_READ|PAG_WRITE;
-
-    newm->pool = pool;
-    name = apr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL);
-
-    rc = DosGetNamedSharedMem(&(newm->memblock), name, flags);
-
-    if (rc) {
-        return APR_FROM_OS_ERROR(rc);
-    }
-
-    *m = newm;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
-{
-    int rc = 0;
-
-    if (m->memblock) {
-        rc = DosFreeMem(m->memblock);
-    }
-
-    return APR_FROM_OS_ERROR(rc);
-}
-
-APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
-{
-    return m->memblock;
-}
-
-APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
-{
-    ULONG flags, size = 0x1000000;
-    DosQueryMem(m->memblock, &size, &flags);
-    return size;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(shm)
-
-APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
-                                         apr_shm_t *shm)
-{
-    *osshm = shm->memblock;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
-                                         apr_os_shm_t *osshm,
-                                         apr_pool_t *pool)
-{
-    int rc;
-    apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t));
-    ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE;
-
-    newm->pool = pool;
-
-    rc = DosGetSharedMem(&(newm->memblock), flags);
-
-    if (rc) {
-        return APR_FROM_OS_ERROR(rc);
-    }
-
-    *m = newm;
-    return APR_SUCCESS;
-}    
-

Copied: vendor/apache/apr/1.5.2/shmem/os2/shm.c (from rev 9273, vendor/apache/apr/dist/shmem/os2/shm.c)
===================================================================
--- vendor/apache/apr/1.5.2/shmem/os2/shm.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/shmem/os2/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,161 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_general.h"
+#include "apr_shm.h"
+#include "apr_errno.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+
+struct apr_shm_t {
+    apr_pool_t *pool;
+    void *memblock;
+};
+
+APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
+                                         apr_size_t reqsize,
+                                         const char *filename,
+                                         apr_pool_t *pool)
+{
+    int rc;
+    apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t));
+    char *name = NULL;
+    ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE;
+
+    newm->pool = pool;
+
+    if (filename) {
+        name = apr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL);
+    }
+
+    if (name == NULL) {
+        flags |= OBJ_GETTABLE;
+    }
+
+    rc = DosAllocSharedMem(&(newm->memblock), name, reqsize, flags);
+
+    if (rc) {
+        return APR_OS2_STATUS(rc);
+    }
+
+    *m = newm;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_create_ex(apr_shm_t **m, 
+                                            apr_size_t reqsize, 
+                                            const char *filename, 
+                                            apr_pool_t *p,
+                                            apr_int32_t flags)
+{
+    return apr_shm_create(m, reqsize, filename, p);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m)
+{
+    DosFreeMem(m->memblock);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
+                                         apr_pool_t *pool)
+{
+    return APR_ENOTIMPL;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
+                                         const char *filename,
+                                         apr_pool_t *pool)
+{
+    int rc;
+    apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t));
+    char *name = NULL;
+    ULONG flags = PAG_READ|PAG_WRITE;
+
+    newm->pool = pool;
+    name = apr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL);
+
+    rc = DosGetNamedSharedMem(&(newm->memblock), name, flags);
+
+    if (rc) {
+        return APR_FROM_OS_ERROR(rc);
+    }
+
+    *m = newm;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach_ex(apr_shm_t **m,
+                                            const char *filename,
+                                            apr_pool_t *pool,
+                                            apr_int32_t flags)
+{
+    return apr_shm_attach(m, filename, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
+{
+    int rc = 0;
+
+    if (m->memblock) {
+        rc = DosFreeMem(m->memblock);
+    }
+
+    return APR_FROM_OS_ERROR(rc);
+}
+
+APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
+{
+    return m->memblock;
+}
+
+APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
+{
+    ULONG flags, size = 0x1000000;
+    DosQueryMem(m->memblock, &size, &flags);
+    return size;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(shm)
+
+APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
+                                         apr_shm_t *shm)
+{
+    *osshm = shm->memblock;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
+                                         apr_os_shm_t *osshm,
+                                         apr_pool_t *pool)
+{
+    int rc;
+    apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t));
+    ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE;
+
+    newm->pool = pool;
+
+    rc = DosGetSharedMem(&(newm->memblock), flags);
+
+    if (rc) {
+        return APR_FROM_OS_ERROR(rc);
+    }
+
+    *m = newm;
+    return APR_SUCCESS;
+}    
+

Deleted: vendor/apache/apr/1.5.2/shmem/unix/shm.c
===================================================================
--- vendor/apache/apr/dist/shmem/unix/shm.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/shmem/unix/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,598 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_shm.h"
-
-#include "apr_general.h"
-#include "apr_errno.h"
-#include "apr_user.h"
-#include "apr_strings.h"
-
-static apr_status_t shm_cleanup_owner(void *m_)
-{
-    apr_shm_t *m = (apr_shm_t *)m_;
-
-    /* anonymous shared memory */
-    if (m->filename == NULL) {
-#if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_MMAP_ANON
-        if (munmap(m->base, m->realsize) == -1) {
-            return errno;
-        }
-        return APR_SUCCESS;
-#elif APR_USE_SHMEM_SHMGET_ANON
-        if (shmdt(m->base) == -1) {
-            return errno;
-        }
-        /* This segment will automatically remove itself after all
-         * references have detached. */
-        return APR_SUCCESS;
-#endif
-    }
-
-    /* name-based shared memory */
-    else {
-#if APR_USE_SHMEM_MMAP_TMP
-        if (munmap(m->base, m->realsize) == -1) {
-            return errno;
-        }
-        if (access(m->filename, F_OK)) {
-            return APR_SUCCESS;
-        }
-        else {
-            return apr_file_remove(m->filename, m->pool);
-        }
-#elif APR_USE_SHMEM_MMAP_SHM
-        if (munmap(m->base, m->realsize) == -1) {
-            return errno;
-        }
-        if (shm_unlink(m->filename) == -1) {
-            return errno;
-        }
-        return APR_SUCCESS;
-#elif APR_USE_SHMEM_SHMGET
-        /* Indicate that the segment is to be destroyed as soon
-         * as all processes have detached. This also disallows any
-         * new attachments to the segment. */
-        if (shmctl(m->shmid, IPC_RMID, NULL) == -1 && errno != EINVAL) {
-            return errno;
-        }
-        if (shmdt(m->base) == -1) {
-            return errno;
-        }
-        if (access(m->filename, F_OK)) {
-            return APR_SUCCESS;
-        }
-        else {
-            return apr_file_remove(m->filename, m->pool);
-        }
-#else
-        return APR_ENOTIMPL;
-#endif
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
-                                         apr_size_t reqsize, 
-                                         const char *filename,
-                                         apr_pool_t *pool)
-{
-    apr_shm_t *new_m;
-    apr_status_t status;
-#if APR_USE_SHMEM_SHMGET || APR_USE_SHMEM_SHMGET_ANON
-    struct shmid_ds shmbuf;
-    apr_uid_t uid;
-    apr_gid_t gid;
-#endif
-#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM || \
-    APR_USE_SHMEM_MMAP_ZERO
-    int tmpfd;
-#endif
-#if APR_USE_SHMEM_SHMGET
-    apr_size_t nbytes;
-    key_t shmkey;
-#endif
-#if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_SHMGET || \
-    APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
-    apr_file_t *file;   /* file where metadata is stored */
-#endif
-
-    /* Check if they want anonymous or name-based shared memory */
-    if (filename == NULL) {
-#if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_MMAP_ANON
-        new_m = apr_palloc(pool, sizeof(apr_shm_t));
-        new_m->pool = pool;
-        new_m->reqsize = reqsize;
-        new_m->realsize = reqsize + 
-            APR_ALIGN_DEFAULT(sizeof(apr_size_t)); /* room for metadata */
-        new_m->filename = NULL;
-    
-#if APR_USE_SHMEM_MMAP_ZERO
-        status = apr_file_open(&file, "/dev/zero", APR_READ | APR_WRITE, 
-                               APR_OS_DEFAULT, pool);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-        status = apr_os_file_get(&tmpfd, file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        new_m->base = mmap(NULL, new_m->realsize, PROT_READ|PROT_WRITE,
-                           MAP_SHARED, tmpfd, 0);
-        if (new_m->base == (void *)MAP_FAILED) {
-            return errno;
-        }
-
-        status = apr_file_close(file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        /* store the real size in the metadata */
-        *(apr_size_t*)(new_m->base) = new_m->realsize;
-        /* metadata isn't usable */
-        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
-
-        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
-                                  apr_pool_cleanup_null);
-        *m = new_m;
-        return APR_SUCCESS;
-
-#elif APR_USE_SHMEM_MMAP_ANON
-        new_m->base = mmap(NULL, new_m->realsize, PROT_READ|PROT_WRITE,
-                           MAP_ANON|MAP_SHARED, -1, 0);
-        if (new_m->base == (void *)MAP_FAILED) {
-            return errno;
-        }
-
-        /* store the real size in the metadata */
-        *(apr_size_t*)(new_m->base) = new_m->realsize;
-        /* metadata isn't usable */
-        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
-
-        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
-                                  apr_pool_cleanup_null);
-        *m = new_m;
-        return APR_SUCCESS;
-
-#endif /* APR_USE_SHMEM_MMAP_ZERO */
-#elif APR_USE_SHMEM_SHMGET_ANON
-        new_m = apr_palloc(pool, sizeof(apr_shm_t));
-        new_m->pool = pool;
-        new_m->reqsize = reqsize;
-        new_m->realsize = reqsize;
-        new_m->filename = NULL;
-
-        if ((new_m->shmid = shmget(IPC_PRIVATE, new_m->realsize,
-                                   SHM_R | SHM_W | IPC_CREAT)) < 0) {
-            return errno;
-        }
-
-        if ((new_m->base = shmat(new_m->shmid, NULL, 0)) == (void *)-1) {
-            return errno;
-        }
-        new_m->usable = new_m->base;
-
-        if (shmctl(new_m->shmid, IPC_STAT, &shmbuf) == -1) {
-            return errno;
-        }
-        apr_uid_current(&uid, &gid, pool);
-        shmbuf.shm_perm.uid = uid;
-        shmbuf.shm_perm.gid = gid;
-        if (shmctl(new_m->shmid, IPC_SET, &shmbuf) == -1) {
-            return errno;
-        }
-
-        /* Remove the segment once use count hits zero.
-         * We will not attach to this segment again, since it is
-         * anonymous memory, so it is ok to mark it for deletion.
-         */
-        if (shmctl(new_m->shmid, IPC_RMID, NULL) == -1) {
-            return errno;
-        }
-
-        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
-                                  apr_pool_cleanup_null);
-        *m = new_m;
-        return APR_SUCCESS;
-#else
-        /* It is an error if they want anonymous memory but we don't have it. */
-        return APR_ENOTIMPL; /* requested anonymous but we don't have it */
-#endif
-    }
-
-    /* Name-based shared memory */
-    else {
-        new_m = apr_palloc(pool, sizeof(apr_shm_t));
-        new_m->pool = pool;
-        new_m->reqsize = reqsize;
-        new_m->filename = apr_pstrdup(pool, filename);
-
-#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
-        new_m->realsize = reqsize + 
-            APR_ALIGN_DEFAULT(sizeof(apr_size_t)); /* room for metadata */
-        /* FIXME: Ignore error for now. *
-         * status = apr_file_remove(file, pool);*/
-        status = APR_SUCCESS;
-    
-#if APR_USE_SHMEM_MMAP_TMP
-        /* FIXME: Is APR_OS_DEFAULT sufficient? */
-        status = apr_file_open(&file, filename, 
-                               APR_READ | APR_WRITE | APR_CREATE | APR_EXCL,
-                               APR_OS_DEFAULT, pool);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        status = apr_os_file_get(&tmpfd, file);
-        if (status != APR_SUCCESS) {
-            apr_file_close(file); /* ignore errors, we're failing */
-            apr_file_remove(new_m->filename, new_m->pool);
-            return status;
-        }
-
-        status = apr_file_trunc(file, new_m->realsize);
-        if (status != APR_SUCCESS) {
-            apr_file_close(file); /* ignore errors, we're failing */
-            apr_file_remove(new_m->filename, new_m->pool);
-            return status;
-        }
-
-        new_m->base = mmap(NULL, new_m->realsize, PROT_READ | PROT_WRITE,
-                           MAP_SHARED, tmpfd, 0);
-        /* FIXME: check for errors */
-
-        status = apr_file_close(file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-#endif /* APR_USE_SHMEM_MMAP_TMP */
-#if APR_USE_SHMEM_MMAP_SHM
-        tmpfd = shm_open(filename, O_RDWR | O_CREAT | O_EXCL, 0644);
-        if (tmpfd == -1) {
-            return errno;
-        }
-
-        status = apr_os_file_put(&file, &tmpfd,
-                                 APR_READ | APR_WRITE | APR_CREATE | APR_EXCL,
-                                 pool); 
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        status = apr_file_trunc(file, new_m->realsize);
-        if (status != APR_SUCCESS) {
-            shm_unlink(filename); /* we're failing, remove the object */
-            return status;
-        }
-        new_m->base = mmap(NULL, reqsize, PROT_READ | PROT_WRITE,
-                           MAP_SHARED, tmpfd, 0);
-
-        /* FIXME: check for errors */
-
-        status = apr_file_close(file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-#endif /* APR_USE_SHMEM_MMAP_SHM */
-
-        /* store the real size in the metadata */
-        *(apr_size_t*)(new_m->base) = new_m->realsize;
-        /* metadata isn't usable */
-        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
-
-        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
-                                  apr_pool_cleanup_null);
-        *m = new_m;
-        return APR_SUCCESS;
-
-#elif APR_USE_SHMEM_SHMGET
-        new_m->realsize = reqsize;
-
-        /* FIXME: APR_OS_DEFAULT is too permissive, switch to 600 I think. */
-        status = apr_file_open(&file, filename, 
-                               APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
-                               APR_OS_DEFAULT, pool);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        /* ftok() (on solaris at least) requires that the file actually
-         * exist before calling ftok(). */
-        shmkey = ftok(filename, 1);
-        if (shmkey == (key_t)-1) {
-            return errno;
-        }
-
-        if ((new_m->shmid = shmget(shmkey, new_m->realsize,
-                                   SHM_R | SHM_W | IPC_CREAT | IPC_EXCL)) < 0) {
-            return errno;
-        }
-
-        if ((new_m->base = shmat(new_m->shmid, NULL, 0)) == (void *)-1) {
-            return errno;
-        }
-        new_m->usable = new_m->base;
-
-        if (shmctl(new_m->shmid, IPC_STAT, &shmbuf) == -1) {
-            return errno;
-        }
-        apr_uid_current(&uid, &gid, pool);
-        shmbuf.shm_perm.uid = uid;
-        shmbuf.shm_perm.gid = gid;
-        if (shmctl(new_m->shmid, IPC_SET, &shmbuf) == -1) {
-            return errno;
-        }
-
-        nbytes = sizeof(reqsize);
-        status = apr_file_write(file, (const void *)&reqsize,
-                                &nbytes);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-        status = apr_file_close(file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
-                                  apr_pool_cleanup_null);
-        *m = new_m; 
-        return APR_SUCCESS;
-
-#else
-        return APR_ENOTIMPL;
-#endif
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
-                                         apr_pool_t *pool)
-{
-#if APR_USE_SHMEM_SHMGET
-    apr_status_t status;
-    apr_file_t *file;  
-    key_t shmkey;
-    int shmid;
-#endif
-
-#if APR_USE_SHMEM_MMAP_TMP
-    return apr_file_remove(filename, pool);
-#elif APR_USE_SHMEM_MMAP_SHM
-    if (shm_unlink(filename) == -1) {
-        return errno;
-    }
-    return APR_SUCCESS;
-#elif APR_USE_SHMEM_SHMGET
-    /* Presume that the file already exists; just open for writing */    
-    status = apr_file_open(&file, filename, APR_FOPEN_WRITE,
-                           APR_OS_DEFAULT, pool);
-    if (status) {
-        return status;
-    }
-
-    /* ftok() (on solaris at least) requires that the file actually
-     * exist before calling ftok(). */
-    shmkey = ftok(filename, 1);
-    if (shmkey == (key_t)-1) {
-        goto shm_remove_failed;
-    }
-
-    apr_file_close(file);
-
-    if ((shmid = shmget(shmkey, 0, SHM_R | SHM_W)) < 0) {
-        goto shm_remove_failed;
-    }
-
-    /* Indicate that the segment is to be destroyed as soon
-     * as all processes have detached. This also disallows any
-     * new attachments to the segment. */
-    if (shmctl(shmid, IPC_RMID, NULL) == -1) {
-        goto shm_remove_failed;
-    }
-    return apr_file_remove(filename, pool);
-
-shm_remove_failed:
-    status = errno;
-    /* ensure the file has been removed anyway. */
-    apr_file_remove(filename, pool);
-    return status;
-#else
-
-    /* No support for anonymous shm */
-    return APR_ENOTIMPL;
-#endif
-} 
-
-APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m)
-{
-    return apr_pool_cleanup_run(m->pool, m, shm_cleanup_owner);
-}
-
-static apr_status_t shm_cleanup_attach(void *m_)
-{
-    apr_shm_t *m = (apr_shm_t *)m_;
-
-    if (m->filename == NULL) {
-        /* It doesn't make sense to detach from an anonymous memory segment. */
-        return APR_EINVAL;
-    }
-    else {
-#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
-        if (munmap(m->base, m->realsize) == -1) {
-            return errno;
-        }
-        return APR_SUCCESS;
-#elif APR_USE_SHMEM_SHMGET
-        if (shmdt(m->base) == -1) {
-            return errno;
-        }
-        return APR_SUCCESS;
-#else
-        return APR_ENOTIMPL;
-#endif
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
-                                         const char *filename,
-                                         apr_pool_t *pool)
-{
-    if (filename == NULL) {
-        /* It doesn't make sense to attach to a segment if you don't know
-         * the filename. */
-        return APR_EINVAL;
-    }
-    else {
-#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
-        apr_shm_t *new_m;
-        apr_status_t status;
-        int tmpfd;
-        apr_file_t *file;   /* file where metadata is stored */
-        apr_size_t nbytes;
-
-        new_m = apr_palloc(pool, sizeof(apr_shm_t));
-        new_m->pool = pool;
-        new_m->filename = apr_pstrdup(pool, filename);
-
-        status = apr_file_open(&file, filename, 
-                               APR_READ | APR_WRITE,
-                               APR_OS_DEFAULT, pool);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-        status = apr_os_file_get(&tmpfd, file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        nbytes = sizeof(new_m->realsize);
-        status = apr_file_read(file, (void *)&(new_m->realsize),
-                               &nbytes);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        status = apr_os_file_get(&tmpfd, file);
-        if (status != APR_SUCCESS) {
-            apr_file_close(file); /* ignore errors, we're failing */
-            apr_file_remove(new_m->filename, new_m->pool);
-            return status;
-        }
-
-        new_m->reqsize = new_m->realsize - sizeof(apr_size_t);
-
-        new_m->base = mmap(NULL, new_m->realsize, PROT_READ | PROT_WRITE,
-                           MAP_SHARED, tmpfd, 0);
-        /* FIXME: check for errors */
-        
-        status = apr_file_close(file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        /* metadata isn't part of the usable segment */
-        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
-
-        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach,
-                                  apr_pool_cleanup_null);
-        *m = new_m;
-        return APR_SUCCESS;
-
-#elif APR_USE_SHMEM_SHMGET
-        apr_shm_t *new_m;
-        apr_status_t status;
-        apr_file_t *file;   /* file where metadata is stored */
-        apr_size_t nbytes;
-        key_t shmkey;
-
-        new_m = apr_palloc(pool, sizeof(apr_shm_t));
-
-        status = apr_file_open(&file, filename, 
-                               APR_FOPEN_READ, APR_OS_DEFAULT, pool);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        nbytes = sizeof(new_m->reqsize);
-        status = apr_file_read(file, (void *)&(new_m->reqsize),
-                               &nbytes);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-        status = apr_file_close(file);
-        if (status != APR_SUCCESS) {
-            return status;
-        }
-
-        new_m->filename = apr_pstrdup(pool, filename);
-        new_m->pool = pool;
-        shmkey = ftok(filename, 1);
-        if (shmkey == (key_t)-1) {
-            return errno;
-        }
-        if ((new_m->shmid = shmget(shmkey, 0, SHM_R | SHM_W)) == -1) {
-            return errno;
-        }
-        if ((new_m->base = shmat(new_m->shmid, NULL, 0)) == (void *)-1) {
-            return errno;
-        }
-        new_m->usable = new_m->base;
-        new_m->realsize = new_m->reqsize;
-
-        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach,
-                                  apr_pool_cleanup_null);
-        *m = new_m;
-        return APR_SUCCESS;
-
-#else
-        return APR_ENOTIMPL;
-#endif
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
-{
-    apr_status_t rv = shm_cleanup_attach(m);
-    apr_pool_cleanup_kill(m->pool, m, shm_cleanup_attach);
-    return rv;
-}
-
-APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
-{
-    return m->usable;
-}
-
-APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
-{
-    return m->reqsize;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(shm)
-
-APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
-                                         apr_shm_t *shm)
-{
-    return APR_ENOTIMPL;
-}
-
-APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
-                                         apr_os_shm_t *osshm,
-                                         apr_pool_t *pool)
-{
-    return APR_ENOTIMPL;
-}    
-

Copied: vendor/apache/apr/1.5.2/shmem/unix/shm.c (from rev 9273, vendor/apache/apr/dist/shmem/unix/shm.c)
===================================================================
--- vendor/apache/apr/1.5.2/shmem/unix/shm.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/shmem/unix/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,700 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_shm.h"
+
+#include "apr_general.h"
+#include "apr_errno.h"
+#include "apr_user.h"
+#include "apr_strings.h"
+#include "apr_hash.h"
+
+#if APR_USE_SHMEM_MMAP_SHM
+/* 
+ *   For portable use, a shared memory object should be identified by a name of
+ *   the form /somename; that is, a null-terminated string of up to NAME_MAX
+ *   (i.e., 255) characters consisting of an initial slash, followed by one or
+ *   more characters, none of which are slashes.
+ */
+#ifndef NAME_MAX
+#define NAME_MAX 255
+#endif
+
+/* See proc_mutex.c and sem_open for the reason for all this! */
+static unsigned int rshash (const char *p) {
+    /* hash function from Robert Sedgwicks 'Algorithms in C' book */
+    unsigned int b    = 378551;
+    unsigned int a    = 63689;
+    unsigned int retval = 0;
+
+    for( ; *p; p++) {
+        retval = retval * a + (*p);
+        a *= b;
+    }
+
+    return retval;
+}
+
+static const char *make_shm_open_safe_name(const char *filename,
+                                           apr_pool_t *pool)
+{
+    apr_ssize_t flen;
+    unsigned int h1, h2;
+
+    if (filename == NULL) {
+        return NULL;
+    }
+
+    flen = strlen(filename);
+    h1 = (apr_hashfunc_default(filename, &flen) & 0xffffffff);
+    h2 = (rshash(filename) & 0xffffffff);
+    return apr_psprintf(pool, "/ShM.%xH%x", h1, h2);
+
+}
+#endif
+
+#if APR_USE_SHMEM_SHMGET
+static key_t our_ftok(const char *filename)
+{
+    /* to help avoid collisions while still using
+     * an easily recreated proj_id */
+    apr_ssize_t slen = strlen(filename);
+    return ftok(filename,
+                (int)apr_hashfunc_default(filename, &slen));
+}
+#endif
+
+static apr_status_t shm_cleanup_owner(void *m_)
+{
+    apr_shm_t *m = (apr_shm_t *)m_;
+
+    /* anonymous shared memory */
+    if (m->filename == NULL) {
+#if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_MMAP_ANON
+        if (munmap(m->base, m->realsize) == -1) {
+            return errno;
+        }
+        return APR_SUCCESS;
+#elif APR_USE_SHMEM_SHMGET_ANON
+        if (shmdt(m->base) == -1) {
+            return errno;
+        }
+        /* This segment will automatically remove itself after all
+         * references have detached. */
+        return APR_SUCCESS;
+#endif
+    }
+
+    /* name-based shared memory */
+    else {
+#if APR_USE_SHMEM_MMAP_TMP
+        if (munmap(m->base, m->realsize) == -1) {
+            return errno;
+        }
+        if (access(m->filename, F_OK)) {
+            return APR_SUCCESS;
+        }
+        else {
+            return apr_file_remove(m->filename, m->pool);
+        }
+#elif APR_USE_SHMEM_MMAP_SHM
+        if (munmap(m->base, m->realsize) == -1) {
+            return errno;
+        }
+        if (shm_unlink(make_shm_open_safe_name(m->filename, m->pool)) == -1 && errno != ENOENT) {
+            return errno;
+        }
+        return APR_SUCCESS;
+#elif APR_USE_SHMEM_SHMGET
+        /* Indicate that the segment is to be destroyed as soon
+         * as all processes have detached. This also disallows any
+         * new attachments to the segment. */
+        if (shmctl(m->shmid, IPC_RMID, NULL) == -1 && errno != EINVAL) {
+            return errno;
+        }
+        if (shmdt(m->base) == -1) {
+            return errno;
+        }
+        if (access(m->filename, F_OK)) {
+            return APR_SUCCESS;
+        }
+        else {
+            return apr_file_remove(m->filename, m->pool);
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
+                                         apr_size_t reqsize, 
+                                         const char *filename,
+                                         apr_pool_t *pool)
+{
+    apr_shm_t *new_m;
+    apr_status_t status;
+#if APR_USE_SHMEM_SHMGET || APR_USE_SHMEM_SHMGET_ANON
+    struct shmid_ds shmbuf;
+    apr_uid_t uid;
+    apr_gid_t gid;
+#endif
+#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM || \
+    APR_USE_SHMEM_MMAP_ZERO
+    int tmpfd;
+#endif
+#if APR_USE_SHMEM_SHMGET
+    apr_size_t nbytes;
+    key_t shmkey;
+#endif
+#if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_SHMGET || \
+    APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
+    apr_file_t *file;   /* file where metadata is stored */
+#endif
+
+    /* Check if they want anonymous or name-based shared memory */
+    if (filename == NULL) {
+#if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_MMAP_ANON
+        new_m = apr_palloc(pool, sizeof(apr_shm_t));
+        new_m->pool = pool;
+        new_m->reqsize = reqsize;
+        new_m->realsize = reqsize + 
+            APR_ALIGN_DEFAULT(sizeof(apr_size_t)); /* room for metadata */
+        new_m->filename = NULL;
+    
+#if APR_USE_SHMEM_MMAP_ZERO
+        status = apr_file_open(&file, "/dev/zero", APR_READ | APR_WRITE, 
+                               APR_OS_DEFAULT, pool);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+        status = apr_os_file_get(&tmpfd, file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        new_m->base = mmap(NULL, new_m->realsize, PROT_READ|PROT_WRITE,
+                           MAP_SHARED, tmpfd, 0);
+        if (new_m->base == (void *)MAP_FAILED) {
+            return errno;
+        }
+
+        status = apr_file_close(file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        /* store the real size in the metadata */
+        *(apr_size_t*)(new_m->base) = new_m->realsize;
+        /* metadata isn't usable */
+        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
+
+        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
+                                  apr_pool_cleanup_null);
+        *m = new_m;
+        return APR_SUCCESS;
+
+#elif APR_USE_SHMEM_MMAP_ANON
+        new_m->base = mmap(NULL, new_m->realsize, PROT_READ|PROT_WRITE,
+                           MAP_ANON|MAP_SHARED, -1, 0);
+        if (new_m->base == (void *)MAP_FAILED) {
+            return errno;
+        }
+
+        /* store the real size in the metadata */
+        *(apr_size_t*)(new_m->base) = new_m->realsize;
+        /* metadata isn't usable */
+        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
+
+        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
+                                  apr_pool_cleanup_null);
+        *m = new_m;
+        return APR_SUCCESS;
+
+#endif /* APR_USE_SHMEM_MMAP_ZERO */
+#elif APR_USE_SHMEM_SHMGET_ANON
+        new_m = apr_palloc(pool, sizeof(apr_shm_t));
+        new_m->pool = pool;
+        new_m->reqsize = reqsize;
+        new_m->realsize = reqsize;
+        new_m->filename = NULL;
+
+        if ((new_m->shmid = shmget(IPC_PRIVATE, new_m->realsize,
+                                   SHM_R | SHM_W | IPC_CREAT)) < 0) {
+            return errno;
+        }
+
+        if ((new_m->base = shmat(new_m->shmid, NULL, 0)) == (void *)-1) {
+            return errno;
+        }
+        new_m->usable = new_m->base;
+
+        if (shmctl(new_m->shmid, IPC_STAT, &shmbuf) == -1) {
+            return errno;
+        }
+        apr_uid_current(&uid, &gid, pool);
+        shmbuf.shm_perm.uid = uid;
+        shmbuf.shm_perm.gid = gid;
+        if (shmctl(new_m->shmid, IPC_SET, &shmbuf) == -1) {
+            return errno;
+        }
+
+        /* Remove the segment once use count hits zero.
+         * We will not attach to this segment again, since it is
+         * anonymous memory, so it is ok to mark it for deletion.
+         */
+        if (shmctl(new_m->shmid, IPC_RMID, NULL) == -1) {
+            return errno;
+        }
+
+        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
+                                  apr_pool_cleanup_null);
+        *m = new_m;
+        return APR_SUCCESS;
+#else
+        /* It is an error if they want anonymous memory but we don't have it. */
+        return APR_ENOTIMPL; /* requested anonymous but we don't have it */
+#endif
+    }
+
+    /* Name-based shared memory */
+    else {
+        new_m = apr_palloc(pool, sizeof(apr_shm_t));
+        new_m->pool = pool;
+        new_m->reqsize = reqsize;
+        new_m->filename = apr_pstrdup(pool, filename);
+#if APR_USE_SHMEM_MMAP_SHM
+        const char *shm_name = make_shm_open_safe_name(filename, pool);
+#endif
+#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
+        new_m->realsize = reqsize + 
+            APR_ALIGN_DEFAULT(sizeof(apr_size_t)); /* room for metadata */
+        /* FIXME: Ignore error for now. *
+         * status = apr_file_remove(file, pool);*/
+        status = APR_SUCCESS;
+    
+#if APR_USE_SHMEM_MMAP_TMP
+        /* FIXME: Is APR_OS_DEFAULT sufficient? */
+        status = apr_file_open(&file, filename, 
+                               APR_READ | APR_WRITE | APR_CREATE | APR_EXCL,
+                               APR_OS_DEFAULT, pool);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        status = apr_os_file_get(&tmpfd, file);
+        if (status != APR_SUCCESS) {
+            apr_file_close(file); /* ignore errors, we're failing */
+            apr_file_remove(new_m->filename, new_m->pool);
+            return status;
+        }
+
+        status = apr_file_trunc(file, new_m->realsize);
+        if (status != APR_SUCCESS && status != APR_ESPIPE) {
+            apr_file_close(file); /* ignore errors, we're failing */
+            apr_file_remove(new_m->filename, new_m->pool);
+            return status;
+        }
+
+        new_m->base = mmap(NULL, new_m->realsize, PROT_READ | PROT_WRITE,
+                           MAP_SHARED, tmpfd, 0);
+        /* FIXME: check for errors */
+
+        status = apr_file_close(file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+#endif /* APR_USE_SHMEM_MMAP_TMP */
+#if APR_USE_SHMEM_MMAP_SHM
+        /* FIXME: SysV uses 0600... should we? */
+        tmpfd = shm_open(shm_name, O_RDWR | O_CREAT | O_EXCL, 0644);
+        if (tmpfd == -1) {
+            return errno;
+        }
+
+        status = apr_os_file_put(&file, &tmpfd,
+                                 APR_READ | APR_WRITE | APR_CREATE | APR_EXCL,
+                                 pool); 
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        status = apr_file_trunc(file, new_m->realsize);
+        if (status != APR_SUCCESS && status != APR_ESPIPE) {
+            shm_unlink(shm_name); /* we're failing, remove the object */
+            return status;
+        }
+        new_m->base = mmap(NULL, new_m->realsize, PROT_READ | PROT_WRITE,
+                           MAP_SHARED, tmpfd, 0);
+
+        /* FIXME: check for errors */
+
+        status = apr_file_close(file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+#endif /* APR_USE_SHMEM_MMAP_SHM */
+
+        /* store the real size in the metadata */
+        *(apr_size_t*)(new_m->base) = new_m->realsize;
+        /* metadata isn't usable */
+        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
+
+        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
+                                  apr_pool_cleanup_null);
+        *m = new_m;
+        return APR_SUCCESS;
+
+#elif APR_USE_SHMEM_SHMGET
+        new_m->realsize = reqsize;
+
+        /* FIXME: APR_OS_DEFAULT is too permissive, switch to 600 I think. */
+        status = apr_file_open(&file, filename, 
+                               APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
+                               APR_OS_DEFAULT, pool);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        /* ftok() (on solaris at least) requires that the file actually
+         * exist before calling ftok(). */
+        shmkey = our_ftok(filename);
+        if (shmkey == (key_t)-1) {
+            apr_file_close(file);
+            return errno;
+        }
+
+        if ((new_m->shmid = shmget(shmkey, new_m->realsize,
+                                   SHM_R | SHM_W | IPC_CREAT | IPC_EXCL)) < 0) {
+            apr_file_close(file);
+            return errno;
+        }
+
+        if ((new_m->base = shmat(new_m->shmid, NULL, 0)) == (void *)-1) {
+            apr_file_close(file);
+            return errno;
+        }
+        new_m->usable = new_m->base;
+
+        if (shmctl(new_m->shmid, IPC_STAT, &shmbuf) == -1) {
+            apr_file_close(file);
+            return errno;
+        }
+        apr_uid_current(&uid, &gid, pool);
+        shmbuf.shm_perm.uid = uid;
+        shmbuf.shm_perm.gid = gid;
+        if (shmctl(new_m->shmid, IPC_SET, &shmbuf) == -1) {
+            apr_file_close(file);
+            return errno;
+        }
+
+        nbytes = sizeof(reqsize);
+        status = apr_file_write(file, (const void *)&reqsize,
+                                &nbytes);
+        if (status != APR_SUCCESS) {
+            apr_file_close(file);
+            return status;
+        }
+        status = apr_file_close(file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner,
+                                  apr_pool_cleanup_null);
+        *m = new_m; 
+        return APR_SUCCESS;
+
+#else
+        return APR_ENOTIMPL;
+#endif
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_shm_create_ex(apr_shm_t **m, 
+                                            apr_size_t reqsize, 
+                                            const char *filename, 
+                                            apr_pool_t *p,
+                                            apr_int32_t flags)
+{
+    return apr_shm_create(m, reqsize, filename, p);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
+                                         apr_pool_t *pool)
+{
+#if APR_USE_SHMEM_SHMGET
+    apr_status_t status;
+    apr_file_t *file;  
+    key_t shmkey;
+    int shmid;
+#endif
+
+#if APR_USE_SHMEM_MMAP_TMP
+    return apr_file_remove(filename, pool);
+#elif APR_USE_SHMEM_MMAP_SHM
+    const char *shm_name = make_shm_open_safe_name(filename, pool);
+    if (shm_unlink(shm_name) == -1) {
+        return errno;
+    }
+    return APR_SUCCESS;
+#elif APR_USE_SHMEM_SHMGET
+    /* Presume that the file already exists; just open for writing */    
+    status = apr_file_open(&file, filename, APR_FOPEN_WRITE,
+                           APR_OS_DEFAULT, pool);
+    if (status) {
+        return status;
+    }
+
+    /* ftok() (on solaris at least) requires that the file actually
+     * exist before calling ftok(). */
+    shmkey = our_ftok(filename);
+    if (shmkey == (key_t)-1) {
+        goto shm_remove_failed;
+    }
+
+    apr_file_close(file);
+
+    if ((shmid = shmget(shmkey, 0, SHM_R | SHM_W)) < 0) {
+        goto shm_remove_failed;
+    }
+
+    /* Indicate that the segment is to be destroyed as soon
+     * as all processes have detached. This also disallows any
+     * new attachments to the segment. */
+    if (shmctl(shmid, IPC_RMID, NULL) == -1) {
+        goto shm_remove_failed;
+    }
+    return apr_file_remove(filename, pool);
+
+shm_remove_failed:
+    status = errno;
+    /* ensure the file has been removed anyway. */
+    apr_file_remove(filename, pool);
+    return status;
+#else
+
+    /* No support for anonymous shm */
+    return APR_ENOTIMPL;
+#endif
+} 
+
+APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m)
+{
+    return apr_pool_cleanup_run(m->pool, m, shm_cleanup_owner);
+}
+
+static apr_status_t shm_cleanup_attach(void *m_)
+{
+    apr_shm_t *m = (apr_shm_t *)m_;
+
+    if (m->filename == NULL) {
+        /* It doesn't make sense to detach from an anonymous memory segment. */
+        return APR_EINVAL;
+    }
+    else {
+#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
+        if (munmap(m->base, m->realsize) == -1) {
+            return errno;
+        }
+        return APR_SUCCESS;
+#elif APR_USE_SHMEM_SHMGET
+        if (shmdt(m->base) == -1) {
+            return errno;
+        }
+        return APR_SUCCESS;
+#else
+        return APR_ENOTIMPL;
+#endif
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
+                                         const char *filename,
+                                         apr_pool_t *pool)
+{
+    if (filename == NULL) {
+        /* It doesn't make sense to attach to a segment if you don't know
+         * the filename. */
+        return APR_EINVAL;
+    }
+    else {
+#if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM
+        apr_shm_t *new_m;
+        apr_status_t status;
+        int tmpfd;
+        apr_file_t *file;   /* file where metadata is stored */
+        apr_size_t nbytes;
+
+        new_m = apr_palloc(pool, sizeof(apr_shm_t));
+        new_m->pool = pool;
+        new_m->filename = apr_pstrdup(pool, filename);
+#if APR_USE_SHMEM_MMAP_SHM
+        const char *shm_name = make_shm_open_safe_name(filename, pool);
+
+        /* FIXME: SysV uses 0600... should we? */
+        tmpfd = shm_open(shm_name, O_RDWR, 0644);
+        if (tmpfd == -1) {
+            return errno;
+        }
+
+        status = apr_os_file_put(&file, &tmpfd,
+                                 APR_READ | APR_WRITE,
+                                 pool); 
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+#elif APR_USE_SHMEM_MMAP_TMP
+        status = apr_file_open(&file, filename, 
+                               APR_READ | APR_WRITE,
+                               APR_OS_DEFAULT, pool);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+        status = apr_os_file_get(&tmpfd, file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+#else
+        return APR_ENOTIMPL;
+#endif
+
+        nbytes = sizeof(new_m->realsize);
+        status = apr_file_read(file, (void *)&(new_m->realsize),
+                               &nbytes);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        status = apr_os_file_get(&tmpfd, file);
+        if (status != APR_SUCCESS) {
+            apr_file_close(file); /* ignore errors, we're failing */
+            apr_file_remove(new_m->filename, new_m->pool);
+            return status;
+        }
+
+        new_m->reqsize = new_m->realsize - sizeof(apr_size_t);
+
+        new_m->base = mmap(NULL, new_m->realsize, PROT_READ | PROT_WRITE,
+                           MAP_SHARED, tmpfd, 0);
+        /* FIXME: check for errors */
+        
+        status = apr_file_close(file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        /* metadata isn't part of the usable segment */
+        new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t));
+
+        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach,
+                                  apr_pool_cleanup_null);
+        *m = new_m;
+        return APR_SUCCESS;
+
+#elif APR_USE_SHMEM_SHMGET
+        apr_shm_t *new_m;
+        apr_status_t status;
+        apr_file_t *file;   /* file where metadata is stored */
+        apr_size_t nbytes;
+        key_t shmkey;
+
+        new_m = apr_palloc(pool, sizeof(apr_shm_t));
+
+        status = apr_file_open(&file, filename, 
+                               APR_FOPEN_READ, APR_OS_DEFAULT, pool);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        nbytes = sizeof(new_m->reqsize);
+        status = apr_file_read(file, (void *)&(new_m->reqsize),
+                               &nbytes);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+        status = apr_file_close(file);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+
+        new_m->filename = apr_pstrdup(pool, filename);
+        new_m->pool = pool;
+        shmkey = our_ftok(filename);
+        if (shmkey == (key_t)-1) {
+            return errno;
+        }
+        if ((new_m->shmid = shmget(shmkey, 0, SHM_R | SHM_W)) == -1) {
+            return errno;
+        }
+        if ((new_m->base = shmat(new_m->shmid, NULL, 0)) == (void *)-1) {
+            return errno;
+        }
+        new_m->usable = new_m->base;
+        new_m->realsize = new_m->reqsize;
+
+        apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach,
+                                  apr_pool_cleanup_null);
+        *m = new_m;
+        return APR_SUCCESS;
+
+#else
+        return APR_ENOTIMPL;
+#endif
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach_ex(apr_shm_t **m,
+                                            const char *filename,
+                                            apr_pool_t *pool,
+                                            apr_int32_t flags)
+{
+    return apr_shm_attach(m, filename, pool);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
+{
+    apr_status_t rv = shm_cleanup_attach(m);
+    apr_pool_cleanup_kill(m->pool, m, shm_cleanup_attach);
+    return rv;
+}
+
+APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
+{
+    return m->usable;
+}
+
+APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
+{
+    return m->reqsize;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(shm)
+
+APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
+                                         apr_shm_t *shm)
+{
+    return APR_ENOTIMPL;
+}
+
+APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
+                                         apr_os_shm_t *osshm,
+                                         apr_pool_t *pool)
+{
+    return APR_ENOTIMPL;
+}    
+

Deleted: vendor/apache/apr/1.5.2/shmem/win32/shm.c
===================================================================
--- vendor/apache/apr/dist/shmem/win32/shm.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/shmem/win32/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,317 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_general.h"
-#include "apr_errno.h"
-#include "apr_file_io.h"
-#include "apr_shm.h"
-#include "apr_strings.h"
-#include "apr_arch_file_io.h"
-#include "limits.h"
-
-typedef struct memblock_t {
-    apr_size_t size;
-    apr_size_t length;
-} memblock_t;
-
-struct apr_shm_t {
-    apr_pool_t *pool;
-    memblock_t *memblk;
-    void       *usrmem;
-    apr_size_t  size;
-    apr_size_t  length;
-    HANDLE      hMap;
-    const char *filename;
-};
-
-static apr_status_t shm_cleanup(void* shm)
-{
-    apr_status_t rv = APR_SUCCESS;
-    apr_shm_t *m = shm;
-    
-    if (!UnmapViewOfFile(m->memblk)) {
-        rv = apr_get_os_error();
-    }
-    if (!CloseHandle(m->hMap)) {
-        rv = rv != APR_SUCCESS ? rv : apr_get_os_error();
-    }
-    if (m->filename) {
-        /* Remove file if file backed */
-        apr_status_t rc = apr_file_remove(m->filename, m->pool);
-        rv = rv != APR_SUCCESS ? rv : rc;
-    }
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
-                                         apr_size_t reqsize,
-                                         const char *file,
-                                         apr_pool_t *pool)
-{
-    static apr_size_t memblock = 0;
-    HANDLE hMap, hFile;
-    apr_status_t rv;
-    apr_size_t size;
-    apr_file_t *f;
-    void *base;
-    void *mapkey;
-    DWORD err, sizelo, sizehi;
-
-    reqsize += sizeof(memblock_t);
-
-    if (!memblock)
-    {
-        SYSTEM_INFO si;
-        GetSystemInfo(&si);
-        memblock = si.dwAllocationGranularity;
-    }   
-
-    /* Compute the granualar multiple of the pagesize */
-    size = memblock * (1 + (reqsize - 1) / memblock);
-    sizelo = (DWORD)size;
-#ifdef _WIN64
-    sizehi = (DWORD)(size >> 32);
-#else
-    sizehi = 0;
-#endif
-
-    if (!file) {
-        /* Do Anonymous, which must be passed as a duplicated handle */
-#ifndef _WIN32_WCE
-        hFile = INVALID_HANDLE_VALUE;
-#endif
-        mapkey = NULL;
-    }
-    else {
-        /* Do file backed, which is not an inherited handle 
-         * While we could open APR_EXCL, it doesn't seem that Unix
-         * ever did.  Ignore that error here, but fail later when
-         * we discover we aren't the creator of the file map object.
-         */
-        rv = apr_file_open(&f, file,
-                           APR_READ | APR_WRITE | APR_BINARY | APR_CREATE,
-                           APR_UREAD | APR_UWRITE, pool);
-        if ((rv != APR_SUCCESS)
-                || ((rv = apr_os_file_get(&hFile, f)) != APR_SUCCESS)) {
-            return rv;
-        }
-        rv = apr_file_trunc(f, size);
-
-        /* res_name_from_filename turns file into a pseudo-name
-         * without slashes or backslashes, and prepends the \global
-         * prefix on Win2K and later
-         */
-        mapkey = res_name_from_filename(file, 1, pool);
-    }
-
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        hMap = CreateFileMappingW(hFile, NULL, PAGE_READWRITE, 
-                                  sizehi, sizelo, mapkey);
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-    {
-        hMap = CreateFileMappingA(hFile, NULL, PAGE_READWRITE, 
-                                  sizehi, sizelo, mapkey);
-    }
-#endif
-    err = apr_get_os_error();
-
-    if (file) {
-        apr_file_close(f);
-    }
-
-    if (hMap && APR_STATUS_IS_EEXIST(err)) {
-        CloseHandle(hMap);
-        return APR_EEXIST;
-    }
-    if (!hMap) {
-        return err;
-    }
-    
-    base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE,
-                         0, 0, size);
-    if (!base) {
-        CloseHandle(hMap);
-        return apr_get_os_error();
-    }
-    
-    *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t));
-    (*m)->pool = pool;
-    (*m)->hMap = hMap;
-    (*m)->memblk = base;
-    (*m)->size = size;
-
-    (*m)->usrmem = (char*)base + sizeof(memblock_t);
-    (*m)->length = reqsize - sizeof(memblock_t);;
-    
-    (*m)->memblk->length = (*m)->length;
-    (*m)->memblk->size = (*m)->size;
-    (*m)->filename = file ? apr_pstrdup(pool, file) : NULL;
-
-    apr_pool_cleanup_register((*m)->pool, *m, 
-                              shm_cleanup, apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m) 
-{
-    apr_status_t rv = shm_cleanup(m);
-    apr_pool_cleanup_kill(m->pool, m, shm_cleanup);
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
-                                         apr_pool_t *pool)
-{
-    return apr_file_remove(filename, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
-                                         const char *file,
-                                         apr_pool_t *pool)
-{
-    HANDLE hMap;
-    void *mapkey;
-    void *base;
-
-    if (!file) {
-        return APR_EINVAL;
-    }
-    else {
-        /* res_name_from_filename turns file into a pseudo-name
-         * without slashes or backslashes, and prepends the \global
-         * prefix on Win2K and later
-         */
-        mapkey = res_name_from_filename(file, 1, pool);
-    }
-
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-#ifndef _WIN32_WCE
-        hMap = OpenFileMappingW(FILE_MAP_READ | FILE_MAP_WRITE, FALSE, mapkey);
-#else
-        /* The WCE 3.0 lacks OpenFileMapping. So we emulate one with
-         * opening the existing shmem and reading its size from the header 
-         */
-        hMap = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, 
-                                  PAGE_READWRITE, 0, sizeof(apr_shm_t), mapkey);
-#endif
-    }
-#endif
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-    {
-        hMap = OpenFileMappingA(FILE_MAP_READ | FILE_MAP_WRITE, FALSE, mapkey);
-    }
-#endif
-
-    if (!hMap) {
-        return apr_get_os_error();
-    }
-    
-    base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
-    if (!base) {
-        CloseHandle(hMap);
-        return apr_get_os_error();
-    }
-    
-    *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t));
-    (*m)->pool = pool;
-    (*m)->memblk = base;
-    /* Real (*m)->mem->size could be recovered with VirtualQuery */
-    (*m)->size = (*m)->memblk->size;
-#if _WIN32_WCE
-    /* Reopen with real size  */
-    UnmapViewOfFile(base);
-    CloseHandle(hMap);
-
-    hMap = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, 
-                              PAGE_READWRITE, 0, (*m)->size, mapkey);
-    if (!hMap) {
-        return apr_get_os_error();
-    }
-    base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
-    if (!base) {
-        CloseHandle(hMap);
-        return apr_get_os_error();
-    }    
-#endif
-    (*m)->hMap = hMap;
-    (*m)->length = (*m)->memblk->length;
-    (*m)->usrmem = (char*)base + sizeof(memblock_t);
-    (*m)->filename = NULL;
-
-    apr_pool_cleanup_register((*m)->pool, *m, 
-                              shm_cleanup, apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
-{
-    apr_status_t rv = shm_cleanup(m);
-    apr_pool_cleanup_kill(m->pool, m, shm_cleanup);
-    return rv;
-}
-
-APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
-{
-    return m->usrmem;
-}
-
-APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
-{
-    return m->length;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(shm)
-
-APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
-                                         apr_shm_t *shm)
-{
-    *osshm = shm->hMap;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
-                                         apr_os_shm_t *osshm,
-                                         apr_pool_t *pool)
-{
-    void* base;
-    base = MapViewOfFile(*osshm, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
-    if (!base) {
-        return apr_get_os_error();
-    }
-    
-    *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t));
-    (*m)->pool = pool;
-    (*m)->hMap = *osshm;
-    (*m)->memblk = base;
-    (*m)->usrmem = (char*)base + sizeof(memblock_t);
-    /* Real (*m)->mem->size could be recovered with VirtualQuery */
-    (*m)->size = (*m)->memblk->size;
-    (*m)->length = (*m)->memblk->length;
-    (*m)->filename = NULL;
-
-    apr_pool_cleanup_register((*m)->pool, *m, 
-                              shm_cleanup, apr_pool_cleanup_null);
-    return APR_SUCCESS;
-}    
-

Copied: vendor/apache/apr/1.5.2/shmem/win32/shm.c (from rev 9273, vendor/apache/apr/dist/shmem/win32/shm.c)
===================================================================
--- vendor/apache/apr/1.5.2/shmem/win32/shm.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/shmem/win32/shm.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,440 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_general.h"
+#include "apr_errno.h"
+#include "apr_file_io.h"
+#include "apr_shm.h"
+#include "apr_strings.h"
+#include "apr_arch_file_io.h"
+#include "limits.h"
+
+typedef struct memblock_t {
+    apr_size_t size;
+    apr_size_t length;
+} memblock_t;
+
+struct apr_shm_t {
+    apr_pool_t *pool;
+    memblock_t *memblk;
+    void       *usrmem;
+    apr_size_t  size;
+    apr_size_t  length;
+    HANDLE      hMap;
+    const char *filename;
+};
+
+static apr_status_t shm_cleanup(void* shm)
+{
+    apr_status_t rv = APR_SUCCESS;
+    apr_shm_t *m = shm;
+    
+    if (!UnmapViewOfFile(m->memblk)) {
+        rv = apr_get_os_error();
+    }
+    if (!CloseHandle(m->hMap)) {
+        rv = rv != APR_SUCCESS ? rv : apr_get_os_error();
+    }
+    if (m->filename) {
+        /* Remove file if file backed */
+        apr_status_t rc = apr_file_remove(m->filename, m->pool);
+        rv = rv != APR_SUCCESS ? rv : rc;
+    }
+    return rv;
+}
+
+/* See if the caller is able to create a map in the global namespace by
+ * checking if the SE_CREATE_GLOBAL_NAME privilege is enabled.
+ *
+ * Prior to APR 1.5.0, named shared memory segments were always created
+ * in the global segment.  However, with recent versions of Windows this
+ * fails for unprivileged processes.  Thus, with older APR, named shared
+ * memory segments can't be created by unprivileged processes on newer
+ * Windows.
+ *
+ * By checking if the caller has the privilege, shm APIs can decide
+ * whether to use the Global or Local namespace.
+ *
+ * If running on an SDK without the required API definitions *OR*
+ * some processing failure occurs trying to check the privilege, fall
+ * back to earlier behavior -- always try to use the Global namespace.
+ */
+#ifdef SE_CREATE_GLOBAL_NAME
+static int can_create_global_maps(void)
+{
+    BOOL ok, has_priv;
+    LUID priv_id;
+    PRIVILEGE_SET privs;
+    HANDLE hToken;
+
+    ok = OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, TRUE, &hToken);
+    if (!ok && GetLastError() == ERROR_NO_TOKEN) {
+        /* no thread-specific access token, so try to get process access token
+         */
+        ok = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken);
+    }
+
+    if (ok) {
+        ok = LookupPrivilegeValue(NULL, SE_CREATE_GLOBAL_NAME, &priv_id);
+    }
+
+    if (ok) {
+        privs.PrivilegeCount = 1;
+        privs.Control = PRIVILEGE_SET_ALL_NECESSARY;
+        privs.Privilege[0].Luid = priv_id;
+        privs.Privilege[0].Attributes = SE_PRIVILEGE_ENABLED;
+        ok = PrivilegeCheck(hToken, &privs, &has_priv);
+    }
+
+    if (ok && !has_priv) {
+        return 0;
+    }
+    else {
+        return 1;
+    }
+}
+#else /* SE_CREATE_GLOBAL_NAME */
+/* SDK definitions missing */
+static int can_create_global_maps(void)
+{
+    return 1;
+}
+#endif /* SE_CREATE_GLOBAL_NAME */
+
+APR_DECLARE(apr_status_t) apr_shm_create_ex(apr_shm_t **m,
+                                            apr_size_t reqsize,
+                                            const char *file,
+                                            apr_pool_t *pool,
+                                            apr_int32_t flags)
+{
+    static apr_size_t memblock = 0;
+    HANDLE hMap, hFile;
+    apr_status_t rv;
+    apr_size_t size;
+    apr_file_t *f;
+    void *base;
+    void *mapkey;
+    DWORD err, sizelo, sizehi;
+
+    reqsize += sizeof(memblock_t);
+
+    if (!memblock)
+    {
+        SYSTEM_INFO si;
+        GetSystemInfo(&si);
+        memblock = si.dwAllocationGranularity;
+    }   
+
+    /* Compute the granualar multiple of the pagesize */
+    size = memblock * (1 + (reqsize - 1) / memblock);
+    sizelo = (DWORD)size;
+#ifdef _WIN64
+    sizehi = (DWORD)(size >> 32);
+#else
+    sizehi = 0;
+#endif
+
+    if (!file) {
+        /* Do Anonymous, which must be passed as a duplicated handle */
+#ifndef _WIN32_WCE
+        hFile = INVALID_HANDLE_VALUE;
+#endif
+        mapkey = NULL;
+    }
+    else {
+        int global;
+
+        /* Do file backed, which is not an inherited handle 
+         * While we could open APR_EXCL, it doesn't seem that Unix
+         * ever did.  Ignore that error here, but fail later when
+         * we discover we aren't the creator of the file map object.
+         */
+        rv = apr_file_open(&f, file,
+                           APR_READ | APR_WRITE | APR_BINARY | APR_CREATE,
+                           APR_UREAD | APR_UWRITE, pool);
+        if ((rv != APR_SUCCESS)
+                || ((rv = apr_os_file_get(&hFile, f)) != APR_SUCCESS)) {
+            return rv;
+        }
+        rv = apr_file_trunc(f, size);
+
+        /* res_name_from_filename turns file into a pseudo-name
+         * without slashes or backslashes, and prepends the \global
+         * or \local prefix on Win2K and later
+         */
+        if (flags & APR_SHM_NS_GLOBAL) {
+            global = 1;
+        }
+        else if (flags & APR_SHM_NS_LOCAL) {
+            global = 0;
+        }
+        else {
+            global = can_create_global_maps();
+        }
+        mapkey = res_name_from_filename(file, global, pool);
+    }
+
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        hMap = CreateFileMappingW(hFile, NULL, PAGE_READWRITE, 
+                                  sizehi, sizelo, mapkey);
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+    {
+        hMap = CreateFileMappingA(hFile, NULL, PAGE_READWRITE, 
+                                  sizehi, sizelo, mapkey);
+    }
+#endif
+    err = apr_get_os_error();
+
+    if (file) {
+        apr_file_close(f);
+    }
+
+    if (hMap && APR_STATUS_IS_EEXIST(err)) {
+        CloseHandle(hMap);
+        return APR_EEXIST;
+    }
+    if (!hMap) {
+        return err;
+    }
+    
+    base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE,
+                         0, 0, size);
+    if (!base) {
+        CloseHandle(hMap);
+        return apr_get_os_error();
+    }
+    
+    *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t));
+    (*m)->pool = pool;
+    (*m)->hMap = hMap;
+    (*m)->memblk = base;
+    (*m)->size = size;
+
+    (*m)->usrmem = (char*)base + sizeof(memblock_t);
+    (*m)->length = reqsize - sizeof(memblock_t);;
+    
+    (*m)->memblk->length = (*m)->length;
+    (*m)->memblk->size = (*m)->size;
+    (*m)->filename = file ? apr_pstrdup(pool, file) : NULL;
+
+    apr_pool_cleanup_register((*m)->pool, *m, 
+                              shm_cleanup, apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m,
+                                         apr_size_t reqsize,
+                                         const char *file,
+                                         apr_pool_t *pool)
+{
+    return apr_shm_create_ex(m, reqsize, file, pool, 0);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m) 
+{
+    apr_status_t rv = shm_cleanup(m);
+    apr_pool_cleanup_kill(m->pool, m, shm_cleanup);
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename,
+                                         apr_pool_t *pool)
+{
+    return apr_file_remove(filename, pool);
+}
+
+static apr_status_t shm_attach_internal(apr_shm_t **m,
+                                        const char *file,
+                                        apr_pool_t *pool,
+                                        int global)
+{
+    HANDLE hMap;
+    void *mapkey;
+    void *base;
+
+    /* res_name_from_filename turns file into a pseudo-name
+     * without slashes or backslashes, and prepends the \global
+     * or local prefix on Win2K and later
+     */
+    mapkey = res_name_from_filename(file, global, pool);
+
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+#ifndef _WIN32_WCE
+        hMap = OpenFileMappingW(FILE_MAP_READ | FILE_MAP_WRITE, FALSE, mapkey);
+#else
+        /* The WCE 3.0 lacks OpenFileMapping. So we emulate one with
+         * opening the existing shmem and reading its size from the header 
+         */
+        hMap = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, 
+                                  PAGE_READWRITE, 0, sizeof(apr_shm_t), mapkey);
+#endif
+    }
+#endif
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+    {
+        hMap = OpenFileMappingA(FILE_MAP_READ | FILE_MAP_WRITE, FALSE, mapkey);
+    }
+#endif
+
+    if (!hMap) {
+        return apr_get_os_error();
+    }
+    
+    base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
+    if (!base) {
+        CloseHandle(hMap);
+        return apr_get_os_error();
+    }
+    
+    *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t));
+    (*m)->pool = pool;
+    (*m)->memblk = base;
+    /* Real (*m)->mem->size could be recovered with VirtualQuery */
+    (*m)->size = (*m)->memblk->size;
+#if _WIN32_WCE
+    /* Reopen with real size  */
+    UnmapViewOfFile(base);
+    CloseHandle(hMap);
+
+    hMap = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, 
+                              PAGE_READWRITE, 0, (*m)->size, mapkey);
+    if (!hMap) {
+        return apr_get_os_error();
+    }
+    base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
+    if (!base) {
+        CloseHandle(hMap);
+        return apr_get_os_error();
+    }    
+#endif
+    (*m)->hMap = hMap;
+    (*m)->length = (*m)->memblk->length;
+    (*m)->usrmem = (char*)base + sizeof(memblock_t);
+    (*m)->filename = NULL;
+
+    apr_pool_cleanup_register((*m)->pool, *m, 
+                              shm_cleanup, apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach_ex(apr_shm_t **m,
+                                            const char *file,
+                                            apr_pool_t *pool,
+                                            apr_int32_t flags)
+{
+    apr_status_t rv;
+    int can_create_global;
+    int try_global_local[3] = {-1, -1, -1};
+    int cur;
+
+    if (!file) {
+        return APR_EINVAL;
+    }
+
+    if (flags & APR_SHM_NS_LOCAL) {
+        try_global_local[0] = 0; /* only search local */
+    }
+    else if (flags & APR_SHM_NS_GLOBAL) {
+        try_global_local[0] = 1; /* only search global */
+    }
+    else {
+        can_create_global = can_create_global_maps();
+        if (!can_create_global) { /* unprivileged process */
+            try_global_local[0] = 0; /* search local before global */
+            try_global_local[1] = 1;
+        }
+        else {
+            try_global_local[0] = 1; /* search global before local */
+            try_global_local[1] = 0;
+        }
+    }
+
+    for (cur = 0; try_global_local[cur] != -1; cur++) {
+        rv = shm_attach_internal(m, file, pool, try_global_local[cur]);
+        if (!APR_STATUS_IS_ENOENT(rv)) {
+            break;
+        }
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m,
+                                         const char *file,
+                                         apr_pool_t *pool)
+{
+    return apr_shm_attach_ex(m, file, pool, 0);
+}
+
+APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m)
+{
+    apr_status_t rv = shm_cleanup(m);
+    apr_pool_cleanup_kill(m->pool, m, shm_cleanup);
+    return rv;
+}
+
+APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m)
+{
+    return m->usrmem;
+}
+
+APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m)
+{
+    return m->length;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(shm)
+
+APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm,
+                                         apr_shm_t *shm)
+{
+    *osshm = shm->hMap;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m,
+                                         apr_os_shm_t *osshm,
+                                         apr_pool_t *pool)
+{
+    void* base;
+    base = MapViewOfFile(*osshm, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
+    if (!base) {
+        return apr_get_os_error();
+    }
+    
+    *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t));
+    (*m)->pool = pool;
+    (*m)->hMap = *osshm;
+    (*m)->memblk = base;
+    (*m)->usrmem = (char*)base + sizeof(memblock_t);
+    /* Real (*m)->mem->size could be recovered with VirtualQuery */
+    (*m)->size = (*m)->memblk->size;
+    (*m)->length = (*m)->memblk->length;
+    (*m)->filename = NULL;
+
+    apr_pool_cleanup_register((*m)->pool, *m, 
+                              shm_cleanup, apr_pool_cleanup_null);
+    return APR_SUCCESS;
+}    
+

Deleted: vendor/apache/apr/1.5.2/strings/apr_cpystrn.c
===================================================================
--- vendor/apache/apr/dist/strings/apr_cpystrn.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/strings/apr_cpystrn.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,311 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_strings.h"
-#include "apr_private.h"
-#include "apr_lib.h"
-
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#if APR_HAVE_CTYPE_H
-#include <ctype.h>
-#endif
-
-/*
- * Apache's "replacement" for the strncpy() function. We roll our
- * own to implement these specific changes:
- *   (1) strncpy() doesn't always null terminate and we want it to.
- *   (2) strncpy() null fills, which is bogus, esp. when copy 8byte
- *       strings into 8k blocks.
- *   (3) Instead of returning the pointer to the beginning of
- *       the destination string, we return a pointer to the
- *       terminating '\0' to allow us to "check" for truncation
- *
- * apr_cpystrn() follows the same call structure as strncpy().
- */
-
-APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, apr_size_t dst_size)
-{
-
-    char *d, *end;
-
-    if (dst_size == 0) {
-        return (dst);
-    }
-
-    d = dst;
-    end = dst + dst_size - 1;
-
-    for (; d < end; ++d, ++src) {
-	if (!(*d = *src)) {
-	    return (d);
-	}
-    }
-
-    *d = '\0';	/* always null terminate */
-
-    return (d);
-}
-
-
-/*
- * This function provides a way to parse a generic argument string
- * into a standard argv[] form of argument list. It respects the 
- * usual "whitespace" and quoteing rules. In the future this could
- * be expanded to include support for the apr_call_exec command line
- * string processing (including converting '+' to ' ' and doing the 
- * url processing. It does not currently support this function.
- *
- *    token_context: Context from which pool allocations will occur.
- *    arg_str:       Input argument string for conversion to argv[].
- *    argv_out:      Output location. This is a pointer to an array
- *                   of pointers to strings (ie. &(char *argv[]).
- *                   This value will be allocated from the contexts
- *                   pool and filled in with copies of the tokens
- *                   found during parsing of the arg_str. 
- */
-APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, 
-                                            char ***argv_out,
-                                            apr_pool_t *token_context)
-{
-    const char *cp;
-    const char *ct;
-    char *cleaned, *dirty;
-    int escaped;
-    int isquoted, numargs = 0, argnum;
-
-#define SKIP_WHITESPACE(cp) \
-    for ( ; *cp == ' ' || *cp == '\t'; ) { \
-        cp++; \
-    };
-
-#define CHECK_QUOTATION(cp,isquoted) \
-    isquoted = 0; \
-    if (*cp == '"') { \
-        isquoted = 1; \
-        cp++; \
-    } \
-    else if (*cp == '\'') { \
-        isquoted = 2; \
-        cp++; \
-    }
-
-/* DETERMINE_NEXTSTRING:
- * At exit, cp will point to one of the following:  NULL, SPACE, TAB or QUOTE.
- * NULL implies the argument string has been fully traversed.
- */
-#define DETERMINE_NEXTSTRING(cp,isquoted) \
-    for ( ; *cp != '\0'; cp++) { \
-        if (   (*cp == '\\' && (*(cp+1) == ' ' || *(cp+1) == '\t' || \
-                                *(cp+1) == '"' || *(cp+1) == '\''))) { \
-            cp++; \
-            continue; \
-        } \
-        if (   (!isquoted && (*cp == ' ' || *cp == '\t')) \
-            || (isquoted == 1 && *cp == '"') \
-            || (isquoted == 2 && *cp == '\'')                 ) { \
-            break; \
-        } \
-    }
- 
-/* REMOVE_ESCAPE_CHARS:
- * Compresses the arg string to remove all of the '\' escape chars.
- * The final argv strings should not have any extra escape chars in it.
- */
-#define REMOVE_ESCAPE_CHARS(cleaned, dirty, escaped) \
-    escaped = 0; \
-    while(*dirty) { \
-        if (!escaped && *dirty == '\\') { \
-            escaped = 1; \
-        } \
-        else { \
-            escaped = 0; \
-            *cleaned++ = *dirty; \
-        } \
-        ++dirty; \
-    } \
-    *cleaned = 0;        /* last line of macro... */
-
-    cp = arg_str;
-    SKIP_WHITESPACE(cp);
-    ct = cp;
-
-    /* This is ugly and expensive, but if anyone wants to figure a
-     * way to support any number of args without counting and 
-     * allocating, please go ahead and change the code.
-     *
-     * Must account for the trailing NULL arg.
-     */
-    numargs = 1;
-    while (*ct != '\0') {
-        CHECK_QUOTATION(ct, isquoted);
-        DETERMINE_NEXTSTRING(ct, isquoted);
-        if (*ct != '\0') {
-            ct++;
-        }
-        numargs++;
-        SKIP_WHITESPACE(ct);
-    }
-    *argv_out = apr_palloc(token_context, numargs * sizeof(char*));
-
-    /*  determine first argument */
-    for (argnum = 0; argnum < (numargs-1); argnum++) {
-        SKIP_WHITESPACE(cp);
-        CHECK_QUOTATION(cp, isquoted);
-        ct = cp;
-        DETERMINE_NEXTSTRING(cp, isquoted);
-        cp++;
-        (*argv_out)[argnum] = apr_palloc(token_context, cp - ct);
-        apr_cpystrn((*argv_out)[argnum], ct, cp - ct);
-        cleaned = dirty = (*argv_out)[argnum];
-        REMOVE_ESCAPE_CHARS(cleaned, dirty, escaped);
-    }
-    (*argv_out)[argnum] = NULL;
-
-    return APR_SUCCESS;
-}
-
-/* Filepath_name_get returns the final element of the pathname.
- * Using the current platform's filename syntax.
- *   "/foo/bar/gum" -> "gum"
- *   "/foo/bar/gum/" -> ""
- *   "gum" -> "gum"
- *   "wi\\n32\\stuff" -> "stuff
- *
- * Corrected Win32 to accept "a/b\\stuff", "a:stuff"
- */
-
-APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname)
-{
-    const char path_separator = '/';
-    const char *s = strrchr(pathname, path_separator);
-
-#ifdef WIN32
-    const char path_separator_win = '\\';
-    const char drive_separator_win = ':';
-    const char *s2 = strrchr(pathname, path_separator_win);
-
-    if (s2 > s) s = s2;
-
-    if (!s) s = strrchr(pathname, drive_separator_win);
-#endif
-
-    return s ? ++s : pathname;
-}
-
-/* length of dest assumed >= length of src
- * collapse in place (src == dest) is legal.
- * returns terminating null ptr to dest string.
- */
-APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src)
-{
-    while (*src) {
-        if (!apr_isspace(*src)) 
-            *dest++ = *src;
-        ++src;
-    }
-    *dest = 0;
-    return (dest);
-}
-
-#if !APR_HAVE_STRDUP
-char *strdup(const char *str)
-{
-    char *sdup;
-    size_t len = strlen(str) + 1;
-
-    sdup = (char *) malloc(len);
-    memcpy(sdup, str, len);
-
-    return sdup;
-}
-#endif
-
-/* The following two routines were donated for SVR4 by Andreas Vogel */
-#if (!APR_HAVE_STRCASECMP && !APR_HAVE_STRICMP)
-int strcasecmp(const char *a, const char *b)
-{
-    const char *p = a;
-    const char *q = b;
-    for (p = a, q = b; *p && *q; p++, q++) {
-        int diff = apr_tolower(*p) - apr_tolower(*q);
-        if (diff)
-            return diff;
-    }
-    if (*p)
-        return 1;               /* p was longer than q */
-    if (*q)
-        return -1;              /* p was shorter than q */
-    return 0;                   /* Exact match */
-}
-
-#endif
-
-#if (!APR_HAVE_STRNCASECMP && !APR_HAVE_STRNICMP)
-int strncasecmp(const char *a, const char *b, size_t n)
-{
-    const char *p = a;
-    const char *q = b;
-
-    for (p = a, q = b; /*NOTHING */ ; p++, q++) {
-        int diff;
-        if (p == a + n)
-            return 0;           /*   Match up to n characters */
-        if (!(*p && *q))
-            return *p - *q;
-        diff = apr_tolower(*p) - apr_tolower(*q);
-        if (diff)
-            return diff;
-    }
-    /*NOTREACHED */
-}
-#endif
-
-/* The following routine was donated for UTS21 by dwd at bell-labs.com */
-#if (!APR_HAVE_STRSTR)
-char *strstr(char *s1, char *s2)
-{
-    char *p1, *p2;
-    if (*s2 == '\0') {
-        /* an empty s2 */
-        return(s1);
-    }
-    while((s1 = strchr(s1, *s2)) != NULL) {
-        /* found first character of s2, see if the rest matches */
-        p1 = s1;
-        p2 = s2;
-        while (*++p1 == *++p2) {
-            if (*p1 == '\0') {
-                /* both strings ended together */
-                return(s1);
-            }
-        }
-        if (*p2 == '\0') {
-            /* second string ended, a match */
-            break;
-        }
-        /* didn't find a match here, try starting at next character in s1 */
-        s1++;
-    }
-    return(s1);
-}
-#endif
-

Copied: vendor/apache/apr/1.5.2/strings/apr_cpystrn.c (from rev 9273, vendor/apache/apr/dist/strings/apr_cpystrn.c)
===================================================================
--- vendor/apache/apr/1.5.2/strings/apr_cpystrn.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/strings/apr_cpystrn.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,313 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_strings.h"
+#include "apr_private.h"
+#include "apr_lib.h"
+
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+#if APR_HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+
+/*
+ * Apache's "replacement" for the strncpy() function. We roll our
+ * own to implement these specific changes:
+ *   (1) strncpy() doesn't always null terminate and we want it to.
+ *   (2) strncpy() null fills, which is bogus, esp. when copy 8byte
+ *       strings into 8k blocks.
+ *   (3) Instead of returning the pointer to the beginning of
+ *       the destination string, we return a pointer to the
+ *       terminating '\0' to allow us to "check" for truncation
+ *   (4) If src is NULL, null terminate dst (empty string copy)
+ *
+ * apr_cpystrn() follows the same call structure as strncpy().
+ */
+
+APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, apr_size_t dst_size)
+{
+
+    char *d = dst, *end;
+
+    if (dst_size == 0) {
+        return (dst);
+    }
+
+    if (src) {
+        end = dst + dst_size - 1;
+
+        for (; d < end; ++d, ++src) {
+            if (!(*d = *src)) {
+                return (d);
+            }
+        }
+    }
+
+    *d = '\0';	/* always null terminate */
+
+    return (d);
+}
+
+
+/*
+ * This function provides a way to parse a generic argument string
+ * into a standard argv[] form of argument list. It respects the 
+ * usual "whitespace" and quoteing rules. In the future this could
+ * be expanded to include support for the apr_call_exec command line
+ * string processing (including converting '+' to ' ' and doing the 
+ * url processing. It does not currently support this function.
+ *
+ *    token_context: Context from which pool allocations will occur.
+ *    arg_str:       Input argument string for conversion to argv[].
+ *    argv_out:      Output location. This is a pointer to an array
+ *                   of pointers to strings (ie. &(char *argv[]).
+ *                   This value will be allocated from the contexts
+ *                   pool and filled in with copies of the tokens
+ *                   found during parsing of the arg_str. 
+ */
+APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, 
+                                            char ***argv_out,
+                                            apr_pool_t *token_context)
+{
+    const char *cp;
+    const char *ct;
+    char *cleaned, *dirty;
+    int escaped;
+    int isquoted, numargs = 0, argnum;
+
+#define SKIP_WHITESPACE(cp) \
+    for ( ; *cp == ' ' || *cp == '\t'; ) { \
+        cp++; \
+    };
+
+#define CHECK_QUOTATION(cp,isquoted) \
+    isquoted = 0; \
+    if (*cp == '"') { \
+        isquoted = 1; \
+        cp++; \
+    } \
+    else if (*cp == '\'') { \
+        isquoted = 2; \
+        cp++; \
+    }
+
+/* DETERMINE_NEXTSTRING:
+ * At exit, cp will point to one of the following:  NULL, SPACE, TAB or QUOTE.
+ * NULL implies the argument string has been fully traversed.
+ */
+#define DETERMINE_NEXTSTRING(cp,isquoted) \
+    for ( ; *cp != '\0'; cp++) { \
+        if (   (*cp == '\\' && (*(cp+1) == ' ' || *(cp+1) == '\t' || \
+                                *(cp+1) == '"' || *(cp+1) == '\''))) { \
+            cp++; \
+            continue; \
+        } \
+        if (   (!isquoted && (*cp == ' ' || *cp == '\t')) \
+            || (isquoted == 1 && *cp == '"') \
+            || (isquoted == 2 && *cp == '\'')                 ) { \
+            break; \
+        } \
+    }
+ 
+/* REMOVE_ESCAPE_CHARS:
+ * Compresses the arg string to remove all of the '\' escape chars.
+ * The final argv strings should not have any extra escape chars in it.
+ */
+#define REMOVE_ESCAPE_CHARS(cleaned, dirty, escaped) \
+    escaped = 0; \
+    while(*dirty) { \
+        if (!escaped && *dirty == '\\') { \
+            escaped = 1; \
+        } \
+        else { \
+            escaped = 0; \
+            *cleaned++ = *dirty; \
+        } \
+        ++dirty; \
+    } \
+    *cleaned = 0;        /* last line of macro... */
+
+    cp = arg_str;
+    SKIP_WHITESPACE(cp);
+    ct = cp;
+
+    /* This is ugly and expensive, but if anyone wants to figure a
+     * way to support any number of args without counting and 
+     * allocating, please go ahead and change the code.
+     *
+     * Must account for the trailing NULL arg.
+     */
+    numargs = 1;
+    while (*ct != '\0') {
+        CHECK_QUOTATION(ct, isquoted);
+        DETERMINE_NEXTSTRING(ct, isquoted);
+        if (*ct != '\0') {
+            ct++;
+        }
+        numargs++;
+        SKIP_WHITESPACE(ct);
+    }
+    *argv_out = apr_palloc(token_context, numargs * sizeof(char*));
+
+    /*  determine first argument */
+    for (argnum = 0; argnum < (numargs-1); argnum++) {
+        SKIP_WHITESPACE(cp);
+        CHECK_QUOTATION(cp, isquoted);
+        ct = cp;
+        DETERMINE_NEXTSTRING(cp, isquoted);
+        cp++;
+        (*argv_out)[argnum] = apr_palloc(token_context, cp - ct);
+        apr_cpystrn((*argv_out)[argnum], ct, cp - ct);
+        cleaned = dirty = (*argv_out)[argnum];
+        REMOVE_ESCAPE_CHARS(cleaned, dirty, escaped);
+    }
+    (*argv_out)[argnum] = NULL;
+
+    return APR_SUCCESS;
+}
+
+/* Filepath_name_get returns the final element of the pathname.
+ * Using the current platform's filename syntax.
+ *   "/foo/bar/gum" -> "gum"
+ *   "/foo/bar/gum/" -> ""
+ *   "gum" -> "gum"
+ *   "wi\\n32\\stuff" -> "stuff
+ *
+ * Corrected Win32 to accept "a/b\\stuff", "a:stuff"
+ */
+
+APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname)
+{
+    const char path_separator = '/';
+    const char *s = strrchr(pathname, path_separator);
+
+#ifdef WIN32
+    const char path_separator_win = '\\';
+    const char drive_separator_win = ':';
+    const char *s2 = strrchr(pathname, path_separator_win);
+
+    if (s2 > s) s = s2;
+
+    if (!s) s = strrchr(pathname, drive_separator_win);
+#endif
+
+    return s ? ++s : pathname;
+}
+
+/* length of dest assumed >= length of src
+ * collapse in place (src == dest) is legal.
+ * returns terminating null ptr to dest string.
+ */
+APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src)
+{
+    while (*src) {
+        if (!apr_isspace(*src)) 
+            *dest++ = *src;
+        ++src;
+    }
+    *dest = 0;
+    return (dest);
+}
+
+#if !APR_HAVE_STRDUP
+char *strdup(const char *str)
+{
+    char *sdup;
+    size_t len = strlen(str) + 1;
+
+    sdup = (char *) malloc(len);
+    memcpy(sdup, str, len);
+
+    return sdup;
+}
+#endif
+
+/* The following two routines were donated for SVR4 by Andreas Vogel */
+#if (!APR_HAVE_STRCASECMP && !APR_HAVE_STRICMP)
+int strcasecmp(const char *a, const char *b)
+{
+    const char *p = a;
+    const char *q = b;
+    for (p = a, q = b; *p && *q; p++, q++) {
+        int diff = apr_tolower(*p) - apr_tolower(*q);
+        if (diff)
+            return diff;
+    }
+    if (*p)
+        return 1;               /* p was longer than q */
+    if (*q)
+        return -1;              /* p was shorter than q */
+    return 0;                   /* Exact match */
+}
+
+#endif
+
+#if (!APR_HAVE_STRNCASECMP && !APR_HAVE_STRNICMP)
+int strncasecmp(const char *a, const char *b, size_t n)
+{
+    const char *p = a;
+    const char *q = b;
+
+    for (p = a, q = b; /*NOTHING */ ; p++, q++) {
+        int diff;
+        if (p == a + n)
+            return 0;           /*   Match up to n characters */
+        if (!(*p && *q))
+            return *p - *q;
+        diff = apr_tolower(*p) - apr_tolower(*q);
+        if (diff)
+            return diff;
+    }
+    /*NOTREACHED */
+}
+#endif
+
+/* The following routine was donated for UTS21 by dwd at bell-labs.com */
+#if (!APR_HAVE_STRSTR)
+char *strstr(char *s1, char *s2)
+{
+    char *p1, *p2;
+    if (*s2 == '\0') {
+        /* an empty s2 */
+        return(s1);
+    }
+    while((s1 = strchr(s1, *s2)) != NULL) {
+        /* found first character of s2, see if the rest matches */
+        p1 = s1;
+        p2 = s2;
+        while (*++p1 == *++p2) {
+            if (*p1 == '\0') {
+                /* both strings ended together */
+                return(s1);
+            }
+        }
+        if (*p2 == '\0') {
+            /* second string ended, a match */
+            break;
+        }
+        /* didn't find a match here, try starting at next character in s1 */
+        s1++;
+    }
+    return(s1);
+}
+#endif
+

Deleted: vendor/apache/apr/1.5.2/strings/apr_strings.c
===================================================================
--- vendor/apache/apr/dist/strings/apr_strings.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/strings/apr_strings.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,468 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "apr.h"
-#include "apr_strings.h"
-#include "apr_general.h"
-#include "apr_private.h"
-#include "apr_lib.h"
-#define APR_WANT_STDIO
-#define APR_WANT_STRFUNC
-#include "apr_want.h"
-
-#ifdef HAVE_STDDEF_H
-#include <stddef.h> /* NULL */
-#endif
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h> /* strtol and strtoll */
-#endif
-
-/** this is used to cache lengths in apr_pstrcat */
-#define MAX_SAVED_LENGTHS  6
-
-APR_DECLARE(char *) apr_pstrdup(apr_pool_t *a, const char *s)
-{
-    char *res;
-    apr_size_t len;
-
-    if (s == NULL) {
-        return NULL;
-    }
-    len = strlen(s) + 1;
-    res = apr_palloc(a, len);
-    memcpy(res, s, len);
-    return res;
-}
-
-APR_DECLARE(char *) apr_pstrndup(apr_pool_t *a, const char *s, apr_size_t n)
-{
-    char *res;
-    const char *end;
-
-    if (s == NULL) {
-        return NULL;
-    }
-    end = memchr(s, '\0', n);
-    if (end != NULL)
-        n = end - s;
-    res = apr_palloc(a, n + 1);
-    memcpy(res, s, n);
-    res[n] = '\0';
-    return res;
-}
-
-APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *a, const char *s, apr_size_t n)
-{
-    char *res;
-
-    if (s == NULL) {
-        return NULL;
-    }
-    res = apr_palloc(a, n + 1);
-    memcpy(res, s, n);
-    res[n] = '\0';
-    return res;
-}
-
-APR_DECLARE(void *) apr_pmemdup(apr_pool_t *a, const void *m, apr_size_t n)
-{
-    void *res;
-
-    if (m == NULL)
-	return NULL;
-    res = apr_palloc(a, n);
-    memcpy(res, m, n);
-    return res;
-}
-
-APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *a, ...)
-{
-    char *cp, *argp, *res;
-    apr_size_t saved_lengths[MAX_SAVED_LENGTHS];
-    int nargs = 0;
-
-    /* Pass one --- find length of required string */
-
-    apr_size_t len = 0;
-    va_list adummy;
-
-    va_start(adummy, a);
-
-    while ((cp = va_arg(adummy, char *)) != NULL) {
-        apr_size_t cplen = strlen(cp);
-        if (nargs < MAX_SAVED_LENGTHS) {
-            saved_lengths[nargs++] = cplen;
-        }
-        len += cplen;
-    }
-
-    va_end(adummy);
-
-    /* Allocate the required string */
-
-    res = (char *) apr_palloc(a, len + 1);
-    cp = res;
-
-    /* Pass two --- copy the argument strings into the result space */
-
-    va_start(adummy, a);
-
-    nargs = 0;
-    while ((argp = va_arg(adummy, char *)) != NULL) {
-        if (nargs < MAX_SAVED_LENGTHS) {
-            len = saved_lengths[nargs++];
-        }
-        else {
-            len = strlen(argp);
-        }
- 
-        memcpy(cp, argp, len);
-        cp += len;
-    }
-
-    va_end(adummy);
-
-    /* Return the result string */
-
-    *cp = '\0';
-
-    return res;
-}
-
-APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *a, const struct iovec *vec,
-                                 apr_size_t nvec, apr_size_t *nbytes)
-{
-    apr_size_t i;
-    apr_size_t len;
-    const struct iovec *src;
-    char *res;
-    char *dst;
-
-    /* Pass one --- find length of required string */
-    len = 0;
-    src = vec;
-    for (i = nvec; i; i--) {
-        len += src->iov_len;
-        src++;
-    }
-    if (nbytes) {
-        *nbytes = len;
-    }
-
-    /* Allocate the required string */
-    res = (char *) apr_palloc(a, len + 1);
-    
-    /* Pass two --- copy the argument strings into the result space */
-    src = vec;
-    dst = res;
-    for (i = nvec; i; i--) {
-        memcpy(dst, src->iov_base, src->iov_len);
-        dst += src->iov_len;
-        src++;
-    }
-
-    /* Return the result string */
-    *dst = '\0';
-
-    return res;
-}
-
-#if (!APR_HAVE_MEMCHR)
-void *memchr(const void *s, int c, size_t n)
-{
-    const char *cp;
-
-    for (cp = s; n > 0; n--, cp++) {
-        if (*cp == c)
-            return (char *) cp; /* Casting away the const here */
-    }
-
-    return NULL;
-}
-#endif
-
-#ifndef INT64_MAX
-#define INT64_MAX  APR_INT64_C(0x7fffffffffffffff)
-#endif
-#ifndef INT64_MIN
-#define INT64_MIN (-APR_INT64_C(0x7fffffffffffffff) - APR_INT64_C(1))
-#endif
-
-APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *nptr,
-                                      char **endptr, int base)
-{
-    errno = 0;
-    *offset = APR_OFF_T_STRFN(nptr, endptr, base);
-    return APR_FROM_OS_ERROR(errno);
-}
-
-APR_DECLARE(apr_int64_t) apr_strtoi64(const char *nptr, char **endptr, int base)
-{
-#ifdef APR_INT64_STRFN
-    errno = 0;
-    return APR_INT64_STRFN(nptr, endptr, base);
-#else
-    const char *s;
-    apr_int64_t acc;
-    apr_int64_t val;
-    int neg, any;
-    char c;
-
-    errno = 0;
-    /*
-     * Skip white space and pick up leading +/- sign if any.
-     * If base is 0, allow 0x for hex and 0 for octal, else
-     * assume decimal; if base is already 16, allow 0x.
-     */
-    s = nptr;
-    do {
-	c = *s++;
-    } while (apr_isspace(c));
-    if (c == '-') {
-	neg = 1;
-	c = *s++;
-    } else {
-	neg = 0;
-	if (c == '+')
-	    c = *s++;
-    }
-    if ((base == 0 || base == 16) &&
-	c == '0' && (*s == 'x' || *s == 'X')) {
-	    c = s[1];
-	    s += 2;
-	    base = 16;
-    }
-    if (base == 0)
-	base = c == '0' ? 8 : 10;
-    acc = any = 0;
-    if (base < 2 || base > 36) {
-	errno = EINVAL;
-        if (endptr != NULL)
-	    *endptr = (char *)(any ? s - 1 : nptr);
-        return acc;
-    }
-
-    /* The classic bsd implementation requires div/mod operators
-     * to compute a cutoff.  Benchmarking proves that is very, very
-     * evil to some 32 bit processors.  Instead, look for underflow
-     * in both the mult and add/sub operation.  Unlike the bsd impl,
-     * we also work strictly in a signed int64 word as we haven't
-     * implemented the unsigned type in win32.
-     * 
-     * Set 'any' if any `digits' consumed; make it negative to indicate
-     * overflow.
-     */
-    val = 0;
-    for ( ; ; c = *s++) {
-        if (c >= '0' && c <= '9')
-	    c -= '0';
-#if (('Z' - 'A') == 25)
-	else if (c >= 'A' && c <= 'Z')
-	    c -= 'A' - 10;
-	else if (c >= 'a' && c <= 'z')
-	    c -= 'a' - 10;
-#elif APR_CHARSET_EBCDIC
-	else if (c >= 'A' && c <= 'I')
-	    c -= 'A' - 10;
-	else if (c >= 'J' && c <= 'R')
-	    c -= 'J' - 19;
-	else if (c >= 'S' && c <= 'Z')
-	    c -= 'S' - 28;
-	else if (c >= 'a' && c <= 'i')
-	    c -= 'a' - 10;
-	else if (c >= 'j' && c <= 'r')
-	    c -= 'j' - 19;
-	else if (c >= 's' && c <= 'z')
-	    c -= 'z' - 28;
-#else
-#error "CANNOT COMPILE apr_strtoi64(), only ASCII and EBCDIC supported" 
-#endif
-	else
-	    break;
-	if (c >= base)
-	    break;
-	val *= base;
-        if ( (any < 0)	/* already noted an over/under flow - short circuit */
-           || (neg && (val > acc || (val -= c) > acc)) /* underflow */
-           || (!neg && (val < acc || (val += c) < acc))) {       /* overflow */
-            any = -1;	/* once noted, over/underflows never go away */
-#ifdef APR_STRTOI64_OVERFLOW_IS_BAD_CHAR
-            break;
-#endif
-        } else {
-            acc = val;
-	    any = 1;
-        }
-    }
-
-    if (any < 0) {
-	acc = neg ? INT64_MIN : INT64_MAX;
-	errno = ERANGE;
-    } else if (!any) {
-	errno = EINVAL;
-    }
-    if (endptr != NULL)
-	*endptr = (char *)(any ? s - 1 : nptr);
-    return (acc);
-#endif
-}
-
-APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf)
-{
-    return apr_strtoi64(buf, NULL, 10);
-}
-
-APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n)
-{
-    const int BUFFER_SIZE = sizeof(int) * 3 + 2;
-    char *buf = apr_palloc(p, BUFFER_SIZE);
-    char *start = buf + BUFFER_SIZE - 1;
-    int negative;
-    if (n < 0) {
-	negative = 1;
-	n = -n;
-    }
-    else {
-	negative = 0;
-    }
-    *start = 0;
-    do {
-	*--start = '0' + (n % 10);
-	n /= 10;
-    } while (n);
-    if (negative) {
-	*--start = '-';
-    }
-    return start;
-}
-
-APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n)
-{
-    const int BUFFER_SIZE = sizeof(long) * 3 + 2;
-    char *buf = apr_palloc(p, BUFFER_SIZE);
-    char *start = buf + BUFFER_SIZE - 1;
-    int negative;
-    if (n < 0) {
-	negative = 1;
-	n = -n;
-    }
-    else {
-	negative = 0;
-    }
-    *start = 0;
-    do {
-	*--start = (char)('0' + (n % 10));
-	n /= 10;
-    } while (n);
-    if (negative) {
-	*--start = '-';
-    }
-    return start;
-}
-
-APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n)
-{
-    const int BUFFER_SIZE = sizeof(apr_off_t) * 3 + 2;
-    char *buf = apr_palloc(p, BUFFER_SIZE);
-    char *start = buf + BUFFER_SIZE - 1;
-    int negative;
-    if (n < 0) {
-	negative = 1;
-	n = -n;
-    }
-    else {
-	negative = 0;
-    }
-    *start = 0;
-    do {
-	*--start = '0' + (char)(n % 10);
-	n /= 10;
-    } while (n);
-    if (negative) {
-	*--start = '-';
-    }
-    return start;
-}
-
-APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf)
-{
-    const char ord[] = "KMGTPE";
-    const char *o = ord;
-    int remain;
-
-    if (size < 0) {
-        return strcpy(buf, "  - ");
-    }
-    if (size < 973) {
-        if (apr_snprintf(buf, 5, "%3d ", (int) size) < 0)
-            return strcpy(buf, "****");
-        return buf;
-    }
-    do {
-        remain = (int)(size & 1023);
-        size >>= 10;
-        if (size >= 973) {
-            ++o;
-            continue;
-        }
-        if (size < 9 || (size == 9 && remain < 973)) {
-            if ((remain = ((remain * 5) + 256) / 512) >= 10)
-                ++size, remain = 0;
-            if (apr_snprintf(buf, 5, "%d.%d%c", (int) size, remain, *o) < 0)
-                return strcpy(buf, "****");
-            return buf;
-        }
-        if (remain >= 512)
-            ++size;
-        if (apr_snprintf(buf, 5, "%3d%c", (int) size, *o) < 0)
-            return strcpy(buf, "****");
-        return buf;
-    } while (1);
-}
-

Copied: vendor/apache/apr/1.5.2/strings/apr_strings.c (from rev 9273, vendor/apache/apr/dist/strings/apr_strings.c)
===================================================================
--- vendor/apache/apr/1.5.2/strings/apr_strings.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/strings/apr_strings.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,467 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "apr.h"
+#include "apr_strings.h"
+#include "apr_general.h"
+#include "apr_private.h"
+#include "apr_lib.h"
+#define APR_WANT_STDIO
+#define APR_WANT_STRFUNC
+#include "apr_want.h"
+
+#ifdef HAVE_STDDEF_H
+#include <stddef.h> /* NULL */
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h> /* strtol and strtoll */
+#endif
+
+/** this is used to cache lengths in apr_pstrcat */
+#define MAX_SAVED_LENGTHS  6
+
+APR_DECLARE(char *) apr_pstrdup(apr_pool_t *a, const char *s)
+{
+    char *res;
+    apr_size_t len;
+
+    if (s == NULL) {
+        return NULL;
+    }
+    len = strlen(s) + 1;
+    res = apr_pmemdup(a, s, len);
+    return res;
+}
+
+APR_DECLARE(char *) apr_pstrndup(apr_pool_t *a, const char *s, apr_size_t n)
+{
+    char *res;
+    const char *end;
+
+    if (s == NULL) {
+        return NULL;
+    }
+    end = memchr(s, '\0', n);
+    if (end != NULL)
+        n = end - s;
+    res = apr_palloc(a, n + 1);
+    memcpy(res, s, n);
+    res[n] = '\0';
+    return res;
+}
+
+APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *a, const char *s, apr_size_t n)
+{
+    char *res;
+
+    if (s == NULL) {
+        return NULL;
+    }
+    res = apr_palloc(a, n + 1);
+    memcpy(res, s, n);
+    res[n] = '\0';
+    return res;
+}
+
+APR_DECLARE(void *) apr_pmemdup(apr_pool_t *a, const void *m, apr_size_t n)
+{
+    void *res;
+
+    if (m == NULL)
+	return NULL;
+    res = apr_palloc(a, n);
+    memcpy(res, m, n);
+    return res;
+}
+
+APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *a, ...)
+{
+    char *cp, *argp, *res;
+    apr_size_t saved_lengths[MAX_SAVED_LENGTHS];
+    int nargs = 0;
+
+    /* Pass one --- find length of required string */
+
+    apr_size_t len = 0;
+    va_list adummy;
+
+    va_start(adummy, a);
+
+    while ((cp = va_arg(adummy, char *)) != NULL) {
+        apr_size_t cplen = strlen(cp);
+        if (nargs < MAX_SAVED_LENGTHS) {
+            saved_lengths[nargs++] = cplen;
+        }
+        len += cplen;
+    }
+
+    va_end(adummy);
+
+    /* Allocate the required string */
+
+    res = (char *) apr_palloc(a, len + 1);
+    cp = res;
+
+    /* Pass two --- copy the argument strings into the result space */
+
+    va_start(adummy, a);
+
+    nargs = 0;
+    while ((argp = va_arg(adummy, char *)) != NULL) {
+        if (nargs < MAX_SAVED_LENGTHS) {
+            len = saved_lengths[nargs++];
+        }
+        else {
+            len = strlen(argp);
+        }
+ 
+        memcpy(cp, argp, len);
+        cp += len;
+    }
+
+    va_end(adummy);
+
+    /* Return the result string */
+
+    *cp = '\0';
+
+    return res;
+}
+
+APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *a, const struct iovec *vec,
+                                 apr_size_t nvec, apr_size_t *nbytes)
+{
+    apr_size_t i;
+    apr_size_t len;
+    const struct iovec *src;
+    char *res;
+    char *dst;
+
+    /* Pass one --- find length of required string */
+    len = 0;
+    src = vec;
+    for (i = nvec; i; i--) {
+        len += src->iov_len;
+        src++;
+    }
+    if (nbytes) {
+        *nbytes = len;
+    }
+
+    /* Allocate the required string */
+    res = (char *) apr_palloc(a, len + 1);
+    
+    /* Pass two --- copy the argument strings into the result space */
+    src = vec;
+    dst = res;
+    for (i = nvec; i; i--) {
+        memcpy(dst, src->iov_base, src->iov_len);
+        dst += src->iov_len;
+        src++;
+    }
+
+    /* Return the result string */
+    *dst = '\0';
+
+    return res;
+}
+
+#if (!APR_HAVE_MEMCHR)
+void *memchr(const void *s, int c, size_t n)
+{
+    const char *cp;
+
+    for (cp = s; n > 0; n--, cp++) {
+        if (*cp == c)
+            return (char *) cp; /* Casting away the const here */
+    }
+
+    return NULL;
+}
+#endif
+
+#ifndef INT64_MAX
+#define INT64_MAX  APR_INT64_C(0x7fffffffffffffff)
+#endif
+#ifndef INT64_MIN
+#define INT64_MIN (-APR_INT64_C(0x7fffffffffffffff) - APR_INT64_C(1))
+#endif
+
+APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *nptr,
+                                      char **endptr, int base)
+{
+    errno = 0;
+    *offset = APR_OFF_T_STRFN(nptr, endptr, base);
+    return APR_FROM_OS_ERROR(errno);
+}
+
+APR_DECLARE(apr_int64_t) apr_strtoi64(const char *nptr, char **endptr, int base)
+{
+#ifdef APR_INT64_STRFN
+    errno = 0;
+    return APR_INT64_STRFN(nptr, endptr, base);
+#else
+    const char *s;
+    apr_int64_t acc;
+    apr_int64_t val;
+    int neg, any;
+    char c;
+
+    errno = 0;
+    /*
+     * Skip white space and pick up leading +/- sign if any.
+     * If base is 0, allow 0x for hex and 0 for octal, else
+     * assume decimal; if base is already 16, allow 0x.
+     */
+    s = nptr;
+    do {
+	c = *s++;
+    } while (apr_isspace(c));
+    if (c == '-') {
+	neg = 1;
+	c = *s++;
+    } else {
+	neg = 0;
+	if (c == '+')
+	    c = *s++;
+    }
+    if ((base == 0 || base == 16) &&
+	c == '0' && (*s == 'x' || *s == 'X')) {
+	    c = s[1];
+	    s += 2;
+	    base = 16;
+    }
+    if (base == 0)
+	base = c == '0' ? 8 : 10;
+    acc = any = 0;
+    if (base < 2 || base > 36) {
+	errno = EINVAL;
+        if (endptr != NULL)
+	    *endptr = (char *)(any ? s - 1 : nptr);
+        return acc;
+    }
+
+    /* The classic bsd implementation requires div/mod operators
+     * to compute a cutoff.  Benchmarking proves that is very, very
+     * evil to some 32 bit processors.  Instead, look for underflow
+     * in both the mult and add/sub operation.  Unlike the bsd impl,
+     * we also work strictly in a signed int64 word as we haven't
+     * implemented the unsigned type in win32.
+     * 
+     * Set 'any' if any `digits' consumed; make it negative to indicate
+     * overflow.
+     */
+    val = 0;
+    for ( ; ; c = *s++) {
+        if (c >= '0' && c <= '9')
+	    c -= '0';
+#if (('Z' - 'A') == 25)
+	else if (c >= 'A' && c <= 'Z')
+	    c -= 'A' - 10;
+	else if (c >= 'a' && c <= 'z')
+	    c -= 'a' - 10;
+#elif APR_CHARSET_EBCDIC
+	else if (c >= 'A' && c <= 'I')
+	    c -= 'A' - 10;
+	else if (c >= 'J' && c <= 'R')
+	    c -= 'J' - 19;
+	else if (c >= 'S' && c <= 'Z')
+	    c -= 'S' - 28;
+	else if (c >= 'a' && c <= 'i')
+	    c -= 'a' - 10;
+	else if (c >= 'j' && c <= 'r')
+	    c -= 'j' - 19;
+	else if (c >= 's' && c <= 'z')
+	    c -= 'z' - 28;
+#else
+#error "CANNOT COMPILE apr_strtoi64(), only ASCII and EBCDIC supported" 
+#endif
+	else
+	    break;
+	if (c >= base)
+	    break;
+	val *= base;
+        if ( (any < 0)	/* already noted an over/under flow - short circuit */
+           || (neg && (val > acc || (val -= c) > acc)) /* underflow */
+           || (!neg && (val < acc || (val += c) < acc))) {       /* overflow */
+            any = -1;	/* once noted, over/underflows never go away */
+#ifdef APR_STRTOI64_OVERFLOW_IS_BAD_CHAR
+            break;
+#endif
+        } else {
+            acc = val;
+	    any = 1;
+        }
+    }
+
+    if (any < 0) {
+	acc = neg ? INT64_MIN : INT64_MAX;
+	errno = ERANGE;
+    } else if (!any) {
+	errno = EINVAL;
+    }
+    if (endptr != NULL)
+	*endptr = (char *)(any ? s - 1 : nptr);
+    return (acc);
+#endif
+}
+
+APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf)
+{
+    return apr_strtoi64(buf, NULL, 10);
+}
+
+APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n)
+{
+    const int BUFFER_SIZE = sizeof(int) * 3 + 2;
+    char *buf = apr_palloc(p, BUFFER_SIZE);
+    char *start = buf + BUFFER_SIZE - 1;
+    int negative;
+    if (n < 0) {
+	negative = 1;
+	n = -n;
+    }
+    else {
+	negative = 0;
+    }
+    *start = 0;
+    do {
+	*--start = '0' + (n % 10);
+	n /= 10;
+    } while (n);
+    if (negative) {
+	*--start = '-';
+    }
+    return start;
+}
+
+APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n)
+{
+    const int BUFFER_SIZE = sizeof(long) * 3 + 2;
+    char *buf = apr_palloc(p, BUFFER_SIZE);
+    char *start = buf + BUFFER_SIZE - 1;
+    int negative;
+    if (n < 0) {
+	negative = 1;
+	n = -n;
+    }
+    else {
+	negative = 0;
+    }
+    *start = 0;
+    do {
+	*--start = (char)('0' + (n % 10));
+	n /= 10;
+    } while (n);
+    if (negative) {
+	*--start = '-';
+    }
+    return start;
+}
+
+APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n)
+{
+    const int BUFFER_SIZE = sizeof(apr_off_t) * 3 + 2;
+    char *buf = apr_palloc(p, BUFFER_SIZE);
+    char *start = buf + BUFFER_SIZE - 1;
+    int negative;
+    if (n < 0) {
+	negative = 1;
+	n = -n;
+    }
+    else {
+	negative = 0;
+    }
+    *start = 0;
+    do {
+	*--start = '0' + (char)(n % 10);
+	n /= 10;
+    } while (n);
+    if (negative) {
+	*--start = '-';
+    }
+    return start;
+}
+
+APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf)
+{
+    const char ord[] = "KMGTPE";
+    const char *o = ord;
+    int remain;
+
+    if (size < 0) {
+        return strcpy(buf, "  - ");
+    }
+    if (size < 973) {
+        if (apr_snprintf(buf, 5, "%3d ", (int) size) < 0)
+            return strcpy(buf, "****");
+        return buf;
+    }
+    do {
+        remain = (int)(size & 1023);
+        size >>= 10;
+        if (size >= 973) {
+            ++o;
+            continue;
+        }
+        if (size < 9 || (size == 9 && remain < 973)) {
+            if ((remain = ((remain * 5) + 256) / 512) >= 10)
+                ++size, remain = 0;
+            if (apr_snprintf(buf, 5, "%d.%d%c", (int) size, remain, *o) < 0)
+                return strcpy(buf, "****");
+            return buf;
+        }
+        if (remain >= 512)
+            ++size;
+        if (apr_snprintf(buf, 5, "%3d%c", (int) size, *o) < 0)
+            return strcpy(buf, "****");
+        return buf;
+    } while (1);
+}
+

Deleted: vendor/apache/apr/1.5.2/support/unix/waitio.c
===================================================================
--- vendor/apache/apr/dist/support/unix/waitio.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/support/unix/waitio.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,123 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_arch_networkio.h"
-#include "apr_poll.h"
-#include "apr_errno.h"
-#include "apr_support.h"
-
-/* The only case where we don't use wait_for_io_or_timeout is on
- * pre-BONE BeOS, so this check should be sufficient and simpler */
-#if !BEOS_R5
-#define USE_WAIT_FOR_IO
-#endif
-
-#ifdef USE_WAIT_FOR_IO
-
-#ifdef WAITIO_USES_POLL
-
-#ifdef HAVE_POLL_H
-#include <poll.h>
-#endif
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-
-apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s,
-                                        int for_read)
-{
-    struct pollfd pfd;
-    int rc, timeout;
-
-    timeout    = f        ? f->timeout / 1000 : s->timeout / 1000;
-    pfd.fd     = f        ? f->filedes        : s->socketdes;
-    pfd.events = for_read ? POLLIN            : POLLOUT;
-
-    do {
-        rc = poll(&pfd, 1, timeout);
-    } while (rc == -1 && errno == EINTR);
-    if (rc == 0) {
-        return APR_TIMEUP;
-    }
-    else if (rc > 0) {
-        return APR_SUCCESS;
-    }
-    else {
-        return errno;
-    }
-}
-
-#else /* !WAITIO_USES_POLL */
-
-apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s,
-                                        int for_read)
-{
-    apr_interval_time_t timeout;
-    apr_pollfd_t pfd;
-    int type = for_read ? APR_POLLIN : APR_POLLOUT;
-    apr_pollset_t *pollset;
-    apr_status_t status;
-
-    /* TODO - timeout should be less each time through this loop */
-    if (f) {
-        pfd.desc_type = APR_POLL_FILE;
-        pfd.desc.f = f;
-
-        pollset = f->pollset;
-        if (pollset == NULL) {
-            status = apr_pollset_create(&(f->pollset), 1, f->pool, 0);
-            if (status != APR_SUCCESS) {
-                return status;
-            }
-            pollset = f->pollset;
-        }
-        timeout = f->timeout;
-    }
-    else {
-        pfd.desc_type = APR_POLL_SOCKET;
-        pfd.desc.s = s;
-
-        pollset = s->pollset;
-        timeout = s->timeout;
-    }
-    pfd.reqevents = type;
-
-    /* Remove the object if it was in the pollset, then add in the new
-     * object with the correct reqevents value. Ignore the status result
-     * on the remove, because it might not be in there (yet).
-     */
-    (void) apr_pollset_remove(pollset, &pfd);
-
-    /* ### check status code */
-    (void) apr_pollset_add(pollset, &pfd);
-
-    do {
-        int numdesc;
-        const apr_pollfd_t *pdesc;
-
-        status = apr_pollset_poll(pollset, timeout, &numdesc, &pdesc);
-
-        if (numdesc == 1 && (pdesc[0].rtnevents & type) != 0) {
-            return APR_SUCCESS;
-        }
-    } while (APR_STATUS_IS_EINTR(status));
-
-    return status;
-}
-#endif /* WAITIO_USES_POLL */
-
-#endif /* USE_WAIT_FOR_IO */

Copied: vendor/apache/apr/1.5.2/support/unix/waitio.c (from rev 9273, vendor/apache/apr/dist/support/unix/waitio.c)
===================================================================
--- vendor/apache/apr/1.5.2/support/unix/waitio.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/support/unix/waitio.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,123 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_arch_networkio.h"
+#include "apr_poll.h"
+#include "apr_errno.h"
+#include "apr_support.h"
+
+/* The only case where we don't use wait_for_io_or_timeout is on
+ * pre-BONE BeOS, so this check should be sufficient and simpler */
+#if !defined(BEOS_R5) && !defined(OS2) && APR_FILES_AS_SOCKETS
+#define USE_WAIT_FOR_IO
+#endif
+
+#ifdef USE_WAIT_FOR_IO
+
+#ifdef WAITIO_USES_POLL
+
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
+#ifdef HAVE_SYS_POLL_H
+#include <sys/poll.h>
+#endif
+
+apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s,
+                                        int for_read)
+{
+    struct pollfd pfd;
+    int rc, timeout;
+
+    timeout    = f        ? f->timeout / 1000 : s->timeout / 1000;
+    pfd.fd     = f        ? f->filedes        : s->socketdes;
+    pfd.events = for_read ? POLLIN            : POLLOUT;
+
+    do {
+        rc = poll(&pfd, 1, timeout);
+    } while (rc == -1 && errno == EINTR);
+    if (rc == 0) {
+        return APR_TIMEUP;
+    }
+    else if (rc > 0) {
+        return APR_SUCCESS;
+    }
+    else {
+        return errno;
+    }
+}
+
+#else /* !WAITIO_USES_POLL */
+
+apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s,
+                                        int for_read)
+{
+    apr_interval_time_t timeout;
+    apr_pollfd_t pfd;
+    int type = for_read ? APR_POLLIN : APR_POLLOUT;
+    apr_pollset_t *pollset;
+    apr_status_t status;
+
+    /* TODO - timeout should be less each time through this loop */
+    if (f) {
+        pfd.desc_type = APR_POLL_FILE;
+        pfd.desc.f = f;
+
+        pollset = f->pollset;
+        if (pollset == NULL) {
+            status = apr_pollset_create(&(f->pollset), 1, f->pool, 0);
+            if (status != APR_SUCCESS) {
+                return status;
+            }
+            pollset = f->pollset;
+        }
+        timeout = f->timeout;
+    }
+    else {
+        pfd.desc_type = APR_POLL_SOCKET;
+        pfd.desc.s = s;
+
+        pollset = s->pollset;
+        timeout = s->timeout;
+    }
+    pfd.reqevents = type;
+
+    /* Remove the object if it was in the pollset, then add in the new
+     * object with the correct reqevents value. Ignore the status result
+     * on the remove, because it might not be in there (yet).
+     */
+    (void) apr_pollset_remove(pollset, &pfd);
+
+    /* ### check status code */
+    (void) apr_pollset_add(pollset, &pfd);
+
+    do {
+        int numdesc;
+        const apr_pollfd_t *pdesc;
+
+        status = apr_pollset_poll(pollset, timeout, &numdesc, &pdesc);
+
+        if (numdesc == 1 && (pdesc[0].rtnevents & type) != 0) {
+            return APR_SUCCESS;
+        }
+    } while (APR_STATUS_IS_EINTR(status));
+
+    return status;
+}
+#endif /* WAITIO_USES_POLL */
+
+#endif /* USE_WAIT_FOR_IO */

Deleted: vendor/apache/apr/1.5.2/tables/apr_hash.c
===================================================================
--- vendor/apache/apr/dist/tables/apr_hash.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/tables/apr_hash.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,529 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_private.h"
-
-#include "apr_general.h"
-#include "apr_pools.h"
-#include "apr_time.h"
-
-#include "apr_hash.h"
-
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-
-#if APR_POOL_DEBUG && APR_HAVE_STDIO_H
-#include <stdio.h>
-#endif
-
-/*
- * The internal form of a hash table.
- *
- * The table is an array indexed by the hash of the key; collisions
- * are resolved by hanging a linked list of hash entries off each
- * element of the array. Although this is a really simple design it
- * isn't too bad given that pools have a low allocation overhead.
- */
-
-typedef struct apr_hash_entry_t apr_hash_entry_t;
-
-struct apr_hash_entry_t {
-    apr_hash_entry_t *next;
-    unsigned int      hash;
-    const void       *key;
-    apr_ssize_t       klen;
-    const void       *val;
-};
-
-/*
- * Data structure for iterating through a hash table.
- *
- * We keep a pointer to the next hash entry here to allow the current
- * hash entry to be freed or otherwise mangled between calls to
- * apr_hash_next().
- */
-struct apr_hash_index_t {
-    apr_hash_t         *ht;
-    apr_hash_entry_t   *this, *next;
-    unsigned int        index;
-};
-
-/*
- * The size of the array is always a power of two. We use the maximum
- * index rather than the size so that we can use bitwise-AND for
- * modular arithmetic.
- * The count of hash entries may be greater depending on the chosen
- * collision rate.
- */
-struct apr_hash_t {
-    apr_pool_t          *pool;
-    apr_hash_entry_t   **array;
-    apr_hash_index_t     iterator;  /* For apr_hash_first(NULL, ...) */
-    unsigned int         count, max, seed;
-    apr_hashfunc_t       hash_func;
-    apr_hash_entry_t    *free;  /* List of recycled entries */
-};
-
-#define INITIAL_MAX 15 /* tunable == 2^n - 1 */
-
-
-/*
- * Hash creation functions.
- */
-
-static apr_hash_entry_t **alloc_array(apr_hash_t *ht, unsigned int max)
-{
-   return apr_pcalloc(ht->pool, sizeof(*ht->array) * (max + 1));
-}
-
-APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool)
-{
-    apr_hash_t *ht;
-    apr_time_t now = apr_time_now();
-
-    ht = apr_palloc(pool, sizeof(apr_hash_t));
-    ht->pool = pool;
-    ht->free = NULL;
-    ht->count = 0;
-    ht->max = INITIAL_MAX;
-    ht->seed = (unsigned int)((now >> 32) ^ now ^ (apr_uintptr_t)pool ^
-                              (apr_uintptr_t)ht ^ (apr_uintptr_t)&now) - 1;
-    ht->array = alloc_array(ht, ht->max);
-    ht->hash_func = NULL;
-
-    return ht;
-}
-
-APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool,
-                                               apr_hashfunc_t hash_func)
-{
-    apr_hash_t *ht = apr_hash_make(pool);
-    ht->hash_func = hash_func;
-    return ht;
-}
-
-
-/*
- * Hash iteration functions.
- */
-
-APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi)
-{
-    hi->this = hi->next;
-    while (!hi->this) {
-        if (hi->index > hi->ht->max)
-            return NULL;
-
-        hi->this = hi->ht->array[hi->index++];
-    }
-    hi->next = hi->this->next;
-    return hi;
-}
-
-APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht)
-{
-    apr_hash_index_t *hi;
-    if (p)
-        hi = apr_palloc(p, sizeof(*hi));
-    else
-        hi = &ht->iterator;
-
-    hi->ht = ht;
-    hi->index = 0;
-    hi->this = NULL;
-    hi->next = NULL;
-    return apr_hash_next(hi);
-}
-
-APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi,
-                                const void **key,
-                                apr_ssize_t *klen,
-                                void **val)
-{
-    if (key)  *key  = hi->this->key;
-    if (klen) *klen = hi->this->klen;
-    if (val)  *val  = (void *)hi->this->val;
-}
-
-
-/*
- * Expanding a hash table
- */
-
-static void expand_array(apr_hash_t *ht)
-{
-    apr_hash_index_t *hi;
-    apr_hash_entry_t **new_array;
-    unsigned int new_max;
-
-    new_max = ht->max * 2 + 1;
-    new_array = alloc_array(ht, new_max);
-    for (hi = apr_hash_first(NULL, ht); hi; hi = apr_hash_next(hi)) {
-        unsigned int i = hi->this->hash & new_max;
-        hi->this->next = new_array[i];
-        new_array[i] = hi->this;
-    }
-    ht->array = new_array;
-    ht->max = new_max;
-}
-
-static unsigned int hashfunc_default(const char *char_key, apr_ssize_t *klen,
-                                     unsigned int hash)
-{
-    const unsigned char *key = (const unsigned char *)char_key;
-    const unsigned char *p;
-    apr_ssize_t i;
-    
-    /*
-     * This is the popular `times 33' hash algorithm which is used by
-     * perl and also appears in Berkeley DB. This is one of the best
-     * known hash functions for strings because it is both computed
-     * very fast and distributes very well.
-     *
-     * The originator may be Dan Bernstein but the code in Berkeley DB
-     * cites Chris Torek as the source. The best citation I have found
-     * is "Chris Torek, Hash function for text in C, Usenet message
-     * <27038 at mimsy.umd.edu> in comp.lang.c , October, 1990." in Rich
-     * Salz's USENIX 1992 paper about INN which can be found at
-     * <http://citeseer.nj.nec.com/salz92internetnews.html>.
-     *
-     * The magic of number 33, i.e. why it works better than many other
-     * constants, prime or not, has never been adequately explained by
-     * anyone. So I try an explanation: if one experimentally tests all
-     * multipliers between 1 and 256 (as I did while writing a low-level
-     * data structure library some time ago) one detects that even
-     * numbers are not useable at all. The remaining 128 odd numbers
-     * (except for the number 1) work more or less all equally well.
-     * They all distribute in an acceptable way and this way fill a hash
-     * table with an average percent of approx. 86%.
-     *
-     * If one compares the chi^2 values of the variants (see
-     * Bob Jenkins ``Hashing Frequently Asked Questions'' at
-     * http://burtleburtle.net/bob/hash/hashfaq.html for a description
-     * of chi^2), the number 33 not even has the best value. But the
-     * number 33 and a few other equally good numbers like 17, 31, 63,
-     * 127 and 129 have nevertheless a great advantage to the remaining
-     * numbers in the large set of possible multipliers: their multiply
-     * operation can be replaced by a faster operation based on just one
-     * shift plus either a single addition or subtraction operation. And
-     * because a hash function has to both distribute good _and_ has to
-     * be very fast to compute, those few numbers should be preferred.
-     *
-     *                  -- Ralf S. Engelschall <rse at engelschall.com>
-     */
-
-    if (*klen == APR_HASH_KEY_STRING) {
-        for (p = key; *p; p++) {
-            hash = hash * 33 + *p;
-        }
-        *klen = p - key;
-    }
-    else {
-        for (p = key, i = *klen; i; i--, p++) {
-            hash = hash * 33 + *p;
-        }
-    }
-
-    return hash;
-}
-
-APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *char_key,
-                                                      apr_ssize_t *klen)
-{
-    return hashfunc_default(char_key, klen, 0);
-}
-
-/*
- * This is where we keep the details of the hash function and control
- * the maximum collision rate.
- *
- * If val is non-NULL it creates and initializes a new hash entry if
- * there isn't already one there; it returns an updatable pointer so
- * that hash entries can be removed.
- */
-
-static apr_hash_entry_t **find_entry(apr_hash_t *ht,
-                                     const void *key,
-                                     apr_ssize_t klen,
-                                     const void *val)
-{
-    apr_hash_entry_t **hep, *he;
-    unsigned int hash;
-
-    if (ht->hash_func)
-        hash = ht->hash_func(key, &klen);
-    else
-        hash = hashfunc_default(key, &klen, ht->seed);
-
-    /* scan linked list */
-    for (hep = &ht->array[hash & ht->max], he = *hep;
-         he; hep = &he->next, he = *hep) {
-        if (he->hash == hash
-            && he->klen == klen
-            && memcmp(he->key, key, klen) == 0)
-            break;
-    }
-    if (he || !val)
-        return hep;
-
-    /* add a new entry for non-NULL values */
-    if ((he = ht->free) != NULL)
-        ht->free = he->next;
-    else
-        he = apr_palloc(ht->pool, sizeof(*he));
-    he->next = NULL;
-    he->hash = hash;
-    he->key  = key;
-    he->klen = klen;
-    he->val  = val;
-    *hep = he;
-    ht->count++;
-    return hep;
-}
-
-APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool,
-                                        const apr_hash_t *orig)
-{
-    apr_hash_t *ht;
-    apr_hash_entry_t *new_vals;
-    unsigned int i, j;
-
-    ht = apr_palloc(pool, sizeof(apr_hash_t) +
-                    sizeof(*ht->array) * (orig->max + 1) +
-                    sizeof(apr_hash_entry_t) * orig->count);
-    ht->pool = pool;
-    ht->free = NULL;
-    ht->count = orig->count;
-    ht->max = orig->max;
-    ht->seed = orig->seed;
-    ht->hash_func = orig->hash_func;
-    ht->array = (apr_hash_entry_t **)((char *)ht + sizeof(apr_hash_t));
-
-    new_vals = (apr_hash_entry_t *)((char *)(ht) + sizeof(apr_hash_t) +
-                                    sizeof(*ht->array) * (orig->max + 1));
-    j = 0;
-    for (i = 0; i <= ht->max; i++) {
-        apr_hash_entry_t **new_entry = &(ht->array[i]);
-        apr_hash_entry_t *orig_entry = orig->array[i];
-        while (orig_entry) {
-            *new_entry = &new_vals[j++];
-            (*new_entry)->hash = orig_entry->hash;
-            (*new_entry)->key = orig_entry->key;
-            (*new_entry)->klen = orig_entry->klen;
-            (*new_entry)->val = orig_entry->val;
-            new_entry = &((*new_entry)->next);
-            orig_entry = orig_entry->next;
-        }
-        *new_entry = NULL;
-    }
-    return ht;
-}
-
-APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht,
-                                 const void *key,
-                                 apr_ssize_t klen)
-{
-    apr_hash_entry_t *he;
-    he = *find_entry(ht, key, klen, NULL);
-    if (he)
-        return (void *)he->val;
-    else
-        return NULL;
-}
-
-APR_DECLARE(void) apr_hash_set(apr_hash_t *ht,
-                               const void *key,
-                               apr_ssize_t klen,
-                               const void *val)
-{
-    apr_hash_entry_t **hep;
-    hep = find_entry(ht, key, klen, val);
-    if (*hep) {
-        if (!val) {
-            /* delete entry */
-            apr_hash_entry_t *old = *hep;
-            *hep = (*hep)->next;
-            old->next = ht->free;
-            ht->free = old;
-            --ht->count;
-        }
-        else {
-            /* replace entry */
-            (*hep)->val = val;
-            /* check that the collision rate isn't too high */
-            if (ht->count > ht->max) {
-                expand_array(ht);
-            }
-        }
-    }
-    /* else key not present and val==NULL */
-}
-
-APR_DECLARE(unsigned int) apr_hash_count(apr_hash_t *ht)
-{
-    return ht->count;
-}
-
-APR_DECLARE(void) apr_hash_clear(apr_hash_t *ht)
-{
-    apr_hash_index_t *hi;
-    for (hi = apr_hash_first(NULL, ht); hi; hi = apr_hash_next(hi))
-        apr_hash_set(ht, hi->this->key, hi->this->klen, NULL);
-}
-
-APR_DECLARE(apr_hash_t*) apr_hash_overlay(apr_pool_t *p,
-                                          const apr_hash_t *overlay,
-                                          const apr_hash_t *base)
-{
-    return apr_hash_merge(p, overlay, base, NULL, NULL);
-}
-
-APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p,
-                                         const apr_hash_t *overlay,
-                                         const apr_hash_t *base,
-                                         void * (*merger)(apr_pool_t *p,
-                                                     const void *key,
-                                                     apr_ssize_t klen,
-                                                     const void *h1_val,
-                                                     const void *h2_val,
-                                                     const void *data),
-                                         const void *data)
-{
-    apr_hash_t *res;
-    apr_hash_entry_t *new_vals = NULL;
-    apr_hash_entry_t *iter;
-    apr_hash_entry_t *ent;
-    unsigned int i, j, k, hash;
-
-#if APR_POOL_DEBUG
-    /* we don't copy keys and values, so it's necessary that
-     * overlay->a.pool and base->a.pool have a life span at least
-     * as long as p
-     */
-    if (!apr_pool_is_ancestor(overlay->pool, p)) {
-        fprintf(stderr,
-                "apr_hash_merge: overlay's pool is not an ancestor of p\n");
-        abort();
-    }
-    if (!apr_pool_is_ancestor(base->pool, p)) {
-        fprintf(stderr,
-                "apr_hash_merge: base's pool is not an ancestor of p\n");
-        abort();
-    }
-#endif
-
-    res = apr_palloc(p, sizeof(apr_hash_t));
-    res->pool = p;
-    res->free = NULL;
-    res->hash_func = base->hash_func;
-    res->count = base->count;
-    res->max = (overlay->max > base->max) ? overlay->max : base->max;
-    if (base->count + overlay->count > res->max) {
-        res->max = res->max * 2 + 1;
-    }
-    res->seed = base->seed;
-    res->array = alloc_array(res, res->max);
-    if (base->count + overlay->count) {
-        new_vals = apr_palloc(p, sizeof(apr_hash_entry_t) *
-                              (base->count + overlay->count));
-    }
-    j = 0;
-    for (k = 0; k <= base->max; k++) {
-        for (iter = base->array[k]; iter; iter = iter->next) {
-            i = iter->hash & res->max;
-            new_vals[j].klen = iter->klen;
-            new_vals[j].key = iter->key;
-            new_vals[j].val = iter->val;
-            new_vals[j].hash = iter->hash;
-            new_vals[j].next = res->array[i];
-            res->array[i] = &new_vals[j];
-            j++;
-        }
-    }
-
-    for (k = 0; k <= overlay->max; k++) {
-        for (iter = overlay->array[k]; iter; iter = iter->next) {
-            if (res->hash_func)
-                hash = res->hash_func(iter->key, &iter->klen);
-            else
-                hash = hashfunc_default(iter->key, &iter->klen, res->seed);
-            i = hash & res->max;
-            for (ent = res->array[i]; ent; ent = ent->next) {
-                if ((ent->klen == iter->klen) &&
-                    (memcmp(ent->key, iter->key, iter->klen) == 0)) {
-                    if (merger) {
-                        ent->val = (*merger)(p, iter->key, iter->klen,
-                                             iter->val, ent->val, data);
-                    }
-                    else {
-                        ent->val = iter->val;
-                    }
-                    break;
-                }
-            }
-            if (!ent) {
-                new_vals[j].klen = iter->klen;
-                new_vals[j].key = iter->key;
-                new_vals[j].val = iter->val;
-                new_vals[j].hash = hash;
-                new_vals[j].next = res->array[i];
-                res->array[i] = &new_vals[j];
-                res->count++;
-                j++;
-            }
-        }
-    }
-    return res;
-}
-
-/* This is basically the following...
- * for every element in hash table {
- *    comp elemeny.key, element.value
- * }
- *
- * Like with apr_table_do, the comp callback is called for each and every
- * element of the hash table.
- */
-APR_DECLARE(int) apr_hash_do(apr_hash_do_callback_fn_t *comp,
-                             void *rec, const apr_hash_t *ht)
-{
-    apr_hash_index_t  hix;
-    apr_hash_index_t *hi;
-    int rv, dorv  = 1;
-
-    hix.ht    = (apr_hash_t *)ht;
-    hix.index = 0;
-    hix.this  = NULL;
-    hix.next  = NULL;
-
-    if ((hi = apr_hash_next(&hix))) {
-        /* Scan the entire table */
-        do {
-            rv = (*comp)(rec, hi->this->key, hi->this->klen, hi->this->val);
-        } while (rv && (hi = apr_hash_next(hi)));
-
-        if (rv == 0) {
-            dorv = 0;
-        }
-    }
-    return dorv;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(hash)

Copied: vendor/apache/apr/1.5.2/tables/apr_hash.c (from rev 9273, vendor/apache/apr/dist/tables/apr_hash.c)
===================================================================
--- vendor/apache/apr/1.5.2/tables/apr_hash.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/tables/apr_hash.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,552 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_private.h"
+
+#include "apr_general.h"
+#include "apr_pools.h"
+#include "apr_time.h"
+
+#include "apr_hash.h"
+
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+
+#if APR_POOL_DEBUG && APR_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+
+/*
+ * The internal form of a hash table.
+ *
+ * The table is an array indexed by the hash of the key; collisions
+ * are resolved by hanging a linked list of hash entries off each
+ * element of the array. Although this is a really simple design it
+ * isn't too bad given that pools have a low allocation overhead.
+ */
+
+typedef struct apr_hash_entry_t apr_hash_entry_t;
+
+struct apr_hash_entry_t {
+    apr_hash_entry_t *next;
+    unsigned int      hash;
+    const void       *key;
+    apr_ssize_t       klen;
+    const void       *val;
+};
+
+/*
+ * Data structure for iterating through a hash table.
+ *
+ * We keep a pointer to the next hash entry here to allow the current
+ * hash entry to be freed or otherwise mangled between calls to
+ * apr_hash_next().
+ */
+struct apr_hash_index_t {
+    apr_hash_t         *ht;
+    apr_hash_entry_t   *this, *next;
+    unsigned int        index;
+};
+
+/*
+ * The size of the array is always a power of two. We use the maximum
+ * index rather than the size so that we can use bitwise-AND for
+ * modular arithmetic.
+ * The count of hash entries may be greater depending on the chosen
+ * collision rate.
+ */
+struct apr_hash_t {
+    apr_pool_t          *pool;
+    apr_hash_entry_t   **array;
+    apr_hash_index_t     iterator;  /* For apr_hash_first(NULL, ...) */
+    unsigned int         count, max, seed;
+    apr_hashfunc_t       hash_func;
+    apr_hash_entry_t    *free;  /* List of recycled entries */
+};
+
+#define INITIAL_MAX 15 /* tunable == 2^n - 1 */
+
+
+/*
+ * Hash creation functions.
+ */
+
+static apr_hash_entry_t **alloc_array(apr_hash_t *ht, unsigned int max)
+{
+   return apr_pcalloc(ht->pool, sizeof(*ht->array) * (max + 1));
+}
+
+APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool)
+{
+    apr_hash_t *ht;
+    apr_time_t now = apr_time_now();
+
+    ht = apr_palloc(pool, sizeof(apr_hash_t));
+    ht->pool = pool;
+    ht->free = NULL;
+    ht->count = 0;
+    ht->max = INITIAL_MAX;
+    ht->seed = (unsigned int)((now >> 32) ^ now ^ (apr_uintptr_t)pool ^
+                              (apr_uintptr_t)ht ^ (apr_uintptr_t)&now) - 1;
+    ht->array = alloc_array(ht, ht->max);
+    ht->hash_func = NULL;
+
+    return ht;
+}
+
+APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool,
+                                               apr_hashfunc_t hash_func)
+{
+    apr_hash_t *ht = apr_hash_make(pool);
+    ht->hash_func = hash_func;
+    return ht;
+}
+
+
+/*
+ * Hash iteration functions.
+ */
+
+APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi)
+{
+    hi->this = hi->next;
+    while (!hi->this) {
+        if (hi->index > hi->ht->max)
+            return NULL;
+
+        hi->this = hi->ht->array[hi->index++];
+    }
+    hi->next = hi->this->next;
+    return hi;
+}
+
+APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht)
+{
+    apr_hash_index_t *hi;
+    if (p)
+        hi = apr_palloc(p, sizeof(*hi));
+    else
+        hi = &ht->iterator;
+
+    hi->ht = ht;
+    hi->index = 0;
+    hi->this = NULL;
+    hi->next = NULL;
+    return apr_hash_next(hi);
+}
+
+APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi,
+                                const void **key,
+                                apr_ssize_t *klen,
+                                void **val)
+{
+    if (key)  *key  = hi->this->key;
+    if (klen) *klen = hi->this->klen;
+    if (val)  *val  = (void *)hi->this->val;
+}
+
+APR_DECLARE(const void *) apr_hash_this_key(apr_hash_index_t *hi)
+{
+    const void *key;
+
+    apr_hash_this(hi, &key, NULL, NULL);
+    return key;
+}
+
+APR_DECLARE(apr_ssize_t) apr_hash_this_key_len(apr_hash_index_t *hi)
+{
+    apr_ssize_t klen;
+
+    apr_hash_this(hi, NULL, &klen, NULL);
+    return klen;
+}
+
+APR_DECLARE(void *) apr_hash_this_val(apr_hash_index_t *hi)
+{
+    void *val;
+
+    apr_hash_this(hi, NULL, NULL, &val);
+    return val;
+}
+
+/*
+ * Expanding a hash table
+ */
+
+static void expand_array(apr_hash_t *ht)
+{
+    apr_hash_index_t *hi;
+    apr_hash_entry_t **new_array;
+    unsigned int new_max;
+
+    new_max = ht->max * 2 + 1;
+    new_array = alloc_array(ht, new_max);
+    for (hi = apr_hash_first(NULL, ht); hi; hi = apr_hash_next(hi)) {
+        unsigned int i = hi->this->hash & new_max;
+        hi->this->next = new_array[i];
+        new_array[i] = hi->this;
+    }
+    ht->array = new_array;
+    ht->max = new_max;
+}
+
+static unsigned int hashfunc_default(const char *char_key, apr_ssize_t *klen,
+                                     unsigned int hash)
+{
+    const unsigned char *key = (const unsigned char *)char_key;
+    const unsigned char *p;
+    apr_ssize_t i;
+    
+    /*
+     * This is the popular `times 33' hash algorithm which is used by
+     * perl and also appears in Berkeley DB. This is one of the best
+     * known hash functions for strings because it is both computed
+     * very fast and distributes very well.
+     *
+     * The originator may be Dan Bernstein but the code in Berkeley DB
+     * cites Chris Torek as the source. The best citation I have found
+     * is "Chris Torek, Hash function for text in C, Usenet message
+     * <27038 at mimsy.umd.edu> in comp.lang.c , October, 1990." in Rich
+     * Salz's USENIX 1992 paper about INN which can be found at
+     * <http://citeseer.nj.nec.com/salz92internetnews.html>.
+     *
+     * The magic of number 33, i.e. why it works better than many other
+     * constants, prime or not, has never been adequately explained by
+     * anyone. So I try an explanation: if one experimentally tests all
+     * multipliers between 1 and 256 (as I did while writing a low-level
+     * data structure library some time ago) one detects that even
+     * numbers are not useable at all. The remaining 128 odd numbers
+     * (except for the number 1) work more or less all equally well.
+     * They all distribute in an acceptable way and this way fill a hash
+     * table with an average percent of approx. 86%.
+     *
+     * If one compares the chi^2 values of the variants (see
+     * Bob Jenkins ``Hashing Frequently Asked Questions'' at
+     * http://burtleburtle.net/bob/hash/hashfaq.html for a description
+     * of chi^2), the number 33 not even has the best value. But the
+     * number 33 and a few other equally good numbers like 17, 31, 63,
+     * 127 and 129 have nevertheless a great advantage to the remaining
+     * numbers in the large set of possible multipliers: their multiply
+     * operation can be replaced by a faster operation based on just one
+     * shift plus either a single addition or subtraction operation. And
+     * because a hash function has to both distribute good _and_ has to
+     * be very fast to compute, those few numbers should be preferred.
+     *
+     *                  -- Ralf S. Engelschall <rse at engelschall.com>
+     */
+
+    if (*klen == APR_HASH_KEY_STRING) {
+        for (p = key; *p; p++) {
+            hash = hash * 33 + *p;
+        }
+        *klen = p - key;
+    }
+    else {
+        for (p = key, i = *klen; i; i--, p++) {
+            hash = hash * 33 + *p;
+        }
+    }
+
+    return hash;
+}
+
+APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *char_key,
+                                                      apr_ssize_t *klen)
+{
+    return hashfunc_default(char_key, klen, 0);
+}
+
+/*
+ * This is where we keep the details of the hash function and control
+ * the maximum collision rate.
+ *
+ * If val is non-NULL it creates and initializes a new hash entry if
+ * there isn't already one there; it returns an updatable pointer so
+ * that hash entries can be removed.
+ */
+
+static apr_hash_entry_t **find_entry(apr_hash_t *ht,
+                                     const void *key,
+                                     apr_ssize_t klen,
+                                     const void *val)
+{
+    apr_hash_entry_t **hep, *he;
+    unsigned int hash;
+
+    if (ht->hash_func)
+        hash = ht->hash_func(key, &klen);
+    else
+        hash = hashfunc_default(key, &klen, ht->seed);
+
+    /* scan linked list */
+    for (hep = &ht->array[hash & ht->max], he = *hep;
+         he; hep = &he->next, he = *hep) {
+        if (he->hash == hash
+            && he->klen == klen
+            && memcmp(he->key, key, klen) == 0)
+            break;
+    }
+    if (he || !val)
+        return hep;
+
+    /* add a new entry for non-NULL values */
+    if ((he = ht->free) != NULL)
+        ht->free = he->next;
+    else
+        he = apr_palloc(ht->pool, sizeof(*he));
+    he->next = NULL;
+    he->hash = hash;
+    he->key  = key;
+    he->klen = klen;
+    he->val  = val;
+    *hep = he;
+    ht->count++;
+    return hep;
+}
+
+APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool,
+                                        const apr_hash_t *orig)
+{
+    apr_hash_t *ht;
+    apr_hash_entry_t *new_vals;
+    unsigned int i, j;
+
+    ht = apr_palloc(pool, sizeof(apr_hash_t) +
+                    sizeof(*ht->array) * (orig->max + 1) +
+                    sizeof(apr_hash_entry_t) * orig->count);
+    ht->pool = pool;
+    ht->free = NULL;
+    ht->count = orig->count;
+    ht->max = orig->max;
+    ht->seed = orig->seed;
+    ht->hash_func = orig->hash_func;
+    ht->array = (apr_hash_entry_t **)((char *)ht + sizeof(apr_hash_t));
+
+    new_vals = (apr_hash_entry_t *)((char *)(ht) + sizeof(apr_hash_t) +
+                                    sizeof(*ht->array) * (orig->max + 1));
+    j = 0;
+    for (i = 0; i <= ht->max; i++) {
+        apr_hash_entry_t **new_entry = &(ht->array[i]);
+        apr_hash_entry_t *orig_entry = orig->array[i];
+        while (orig_entry) {
+            *new_entry = &new_vals[j++];
+            (*new_entry)->hash = orig_entry->hash;
+            (*new_entry)->key = orig_entry->key;
+            (*new_entry)->klen = orig_entry->klen;
+            (*new_entry)->val = orig_entry->val;
+            new_entry = &((*new_entry)->next);
+            orig_entry = orig_entry->next;
+        }
+        *new_entry = NULL;
+    }
+    return ht;
+}
+
+APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht,
+                                 const void *key,
+                                 apr_ssize_t klen)
+{
+    apr_hash_entry_t *he;
+    he = *find_entry(ht, key, klen, NULL);
+    if (he)
+        return (void *)he->val;
+    else
+        return NULL;
+}
+
+APR_DECLARE(void) apr_hash_set(apr_hash_t *ht,
+                               const void *key,
+                               apr_ssize_t klen,
+                               const void *val)
+{
+    apr_hash_entry_t **hep;
+    hep = find_entry(ht, key, klen, val);
+    if (*hep) {
+        if (!val) {
+            /* delete entry */
+            apr_hash_entry_t *old = *hep;
+            *hep = (*hep)->next;
+            old->next = ht->free;
+            ht->free = old;
+            --ht->count;
+        }
+        else {
+            /* replace entry */
+            (*hep)->val = val;
+            /* check that the collision rate isn't too high */
+            if (ht->count > ht->max) {
+                expand_array(ht);
+            }
+        }
+    }
+    /* else key not present and val==NULL */
+}
+
+APR_DECLARE(unsigned int) apr_hash_count(apr_hash_t *ht)
+{
+    return ht->count;
+}
+
+APR_DECLARE(void) apr_hash_clear(apr_hash_t *ht)
+{
+    apr_hash_index_t *hi;
+    for (hi = apr_hash_first(NULL, ht); hi; hi = apr_hash_next(hi))
+        apr_hash_set(ht, hi->this->key, hi->this->klen, NULL);
+}
+
+APR_DECLARE(apr_hash_t*) apr_hash_overlay(apr_pool_t *p,
+                                          const apr_hash_t *overlay,
+                                          const apr_hash_t *base)
+{
+    return apr_hash_merge(p, overlay, base, NULL, NULL);
+}
+
+APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p,
+                                         const apr_hash_t *overlay,
+                                         const apr_hash_t *base,
+                                         void * (*merger)(apr_pool_t *p,
+                                                     const void *key,
+                                                     apr_ssize_t klen,
+                                                     const void *h1_val,
+                                                     const void *h2_val,
+                                                     const void *data),
+                                         const void *data)
+{
+    apr_hash_t *res;
+    apr_hash_entry_t *new_vals = NULL;
+    apr_hash_entry_t *iter;
+    apr_hash_entry_t *ent;
+    unsigned int i, j, k, hash;
+
+#if APR_POOL_DEBUG
+    /* we don't copy keys and values, so it's necessary that
+     * overlay->a.pool and base->a.pool have a life span at least
+     * as long as p
+     */
+    if (!apr_pool_is_ancestor(overlay->pool, p)) {
+        fprintf(stderr,
+                "apr_hash_merge: overlay's pool is not an ancestor of p\n");
+        abort();
+    }
+    if (!apr_pool_is_ancestor(base->pool, p)) {
+        fprintf(stderr,
+                "apr_hash_merge: base's pool is not an ancestor of p\n");
+        abort();
+    }
+#endif
+
+    res = apr_palloc(p, sizeof(apr_hash_t));
+    res->pool = p;
+    res->free = NULL;
+    res->hash_func = base->hash_func;
+    res->count = base->count;
+    res->max = (overlay->max > base->max) ? overlay->max : base->max;
+    if (base->count + overlay->count > res->max) {
+        res->max = res->max * 2 + 1;
+    }
+    res->seed = base->seed;
+    res->array = alloc_array(res, res->max);
+    if (base->count + overlay->count) {
+        new_vals = apr_palloc(p, sizeof(apr_hash_entry_t) *
+                              (base->count + overlay->count));
+    }
+    j = 0;
+    for (k = 0; k <= base->max; k++) {
+        for (iter = base->array[k]; iter; iter = iter->next) {
+            i = iter->hash & res->max;
+            new_vals[j].klen = iter->klen;
+            new_vals[j].key = iter->key;
+            new_vals[j].val = iter->val;
+            new_vals[j].hash = iter->hash;
+            new_vals[j].next = res->array[i];
+            res->array[i] = &new_vals[j];
+            j++;
+        }
+    }
+
+    for (k = 0; k <= overlay->max; k++) {
+        for (iter = overlay->array[k]; iter; iter = iter->next) {
+            if (res->hash_func)
+                hash = res->hash_func(iter->key, &iter->klen);
+            else
+                hash = hashfunc_default(iter->key, &iter->klen, res->seed);
+            i = hash & res->max;
+            for (ent = res->array[i]; ent; ent = ent->next) {
+                if ((ent->klen == iter->klen) &&
+                    (memcmp(ent->key, iter->key, iter->klen) == 0)) {
+                    if (merger) {
+                        ent->val = (*merger)(p, iter->key, iter->klen,
+                                             iter->val, ent->val, data);
+                    }
+                    else {
+                        ent->val = iter->val;
+                    }
+                    break;
+                }
+            }
+            if (!ent) {
+                new_vals[j].klen = iter->klen;
+                new_vals[j].key = iter->key;
+                new_vals[j].val = iter->val;
+                new_vals[j].hash = hash;
+                new_vals[j].next = res->array[i];
+                res->array[i] = &new_vals[j];
+                res->count++;
+                j++;
+            }
+        }
+    }
+    return res;
+}
+
+/* This is basically the following...
+ * for every element in hash table {
+ *    comp elemeny.key, element.value
+ * }
+ *
+ * Like with apr_table_do, the comp callback is called for each and every
+ * element of the hash table.
+ */
+APR_DECLARE(int) apr_hash_do(apr_hash_do_callback_fn_t *comp,
+                             void *rec, const apr_hash_t *ht)
+{
+    apr_hash_index_t  hix;
+    apr_hash_index_t *hi;
+    int rv, dorv  = 1;
+
+    hix.ht    = (apr_hash_t *)ht;
+    hix.index = 0;
+    hix.this  = NULL;
+    hix.next  = NULL;
+
+    if ((hi = apr_hash_next(&hix))) {
+        /* Scan the entire table */
+        do {
+            rv = (*comp)(rec, hi->this->key, hi->this->klen, hi->this->val);
+        } while (rv && (hi = apr_hash_next(hi)));
+
+        if (rv == 0) {
+            dorv = 0;
+        }
+    }
+    return dorv;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(hash)

Copied: vendor/apache/apr/1.5.2/tables/apr_skiplist.c (from rev 9273, vendor/apache/apr/dist/tables/apr_skiplist.c)
===================================================================
--- vendor/apache/apr/1.5.2/tables/apr_skiplist.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/tables/apr_skiplist.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,721 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Modified to use APR and APR pools.
+ *  TODO: Is malloc() better? Will long running skiplists grow too much?
+ *  Keep the skiplist_alloc() and skiplist_free() until we know
+ *  Yeah, if using pools it means some bogus cycles for checks
+ *  (and an useless function call for skiplist_free) which we
+ *  can removed if/when needed.
+ */
+
+#include "apr_skiplist.h"
+
+typedef struct {
+    apr_skiplistnode **data;
+    size_t size, pos;
+    apr_pool_t *p;
+} apr_skiplist_q; 
+
+struct apr_skiplist {
+    apr_skiplist_compare compare;
+    apr_skiplist_compare comparek;
+    int height;
+    int preheight;
+    size_t size;
+    apr_skiplistnode *top;
+    apr_skiplistnode *bottom;
+    /* These two are needed for appending */
+    apr_skiplistnode *topend;
+    apr_skiplistnode *bottomend;
+    apr_skiplist *index;
+    apr_array_header_t *memlist;
+    apr_skiplist_q nodes_q,
+                   stack_q;
+    apr_pool_t *pool;
+};
+
+struct apr_skiplistnode {
+    void *data;
+    apr_skiplistnode *next;
+    apr_skiplistnode *prev;
+    apr_skiplistnode *down;
+    apr_skiplistnode *up;
+    apr_skiplistnode *previndex;
+    apr_skiplistnode *nextindex;
+    apr_skiplist *sl;
+};
+
+static int get_b_rand(void)
+{
+    static int ph = 32;         /* More bits than we will ever use */
+    static int randseq;
+    if (ph > 31) {              /* Num bits in return of rand() */
+        ph = 0;
+        randseq = rand();
+    }
+    return randseq & (1 << ph++);
+}
+
+typedef struct {
+    size_t size;
+    apr_array_header_t *list;
+} memlist_t;
+
+typedef struct {
+    void *ptr;
+    char inuse;
+} chunk_t;
+
+APR_DECLARE(void *) apr_skiplist_alloc(apr_skiplist *sl, size_t size)
+{
+    if (sl->pool) {
+        void *ptr;
+        int found_size = 0;
+        int i;
+        chunk_t *newchunk;
+        memlist_t *memlist = (memlist_t *)sl->memlist->elts;
+        for (i = 0; i < sl->memlist->nelts; i++) {
+            if (memlist->size == size) {
+                int j;
+                chunk_t *chunk = (chunk_t *)memlist->list->elts;
+                found_size = 1;
+                for (j = 0; j < memlist->list->nelts; j++) {
+                    if (!chunk->inuse) {
+                        chunk->inuse = 1;
+                        return chunk->ptr;
+                    }
+                    chunk++;
+                }
+                break; /* no free of this size; punt */
+            }
+            memlist++;
+        }
+        /* no free chunks */
+        ptr = apr_palloc(sl->pool, size);
+        if (!ptr) {
+            return ptr;
+        }
+        /*
+         * is this a new sized chunk? If so, we need to create a new
+         * array of them. Otherwise, re-use what we already have.
+         */
+        if (!found_size) {
+            memlist = apr_array_push(sl->memlist);
+            memlist->size = size;
+            memlist->list = apr_array_make(sl->pool, 20, sizeof(chunk_t));
+        }
+        newchunk = apr_array_push(memlist->list);
+        newchunk->ptr = ptr;
+        newchunk->inuse = 1;
+        return ptr;
+    }
+    else {
+        return malloc(size);
+    }
+}
+
+APR_DECLARE(void) apr_skiplist_free(apr_skiplist *sl, void *mem)
+{
+    if (!sl->pool) {
+        free(mem);
+    }
+    else {
+        int i;
+        memlist_t *memlist = (memlist_t *)sl->memlist->elts;
+        for (i = 0; i < sl->memlist->nelts; i++) {
+            int j;
+            chunk_t *chunk = (chunk_t *)memlist->list->elts;
+            for (j = 0; j < memlist->list->nelts; j++) {
+                if (chunk->ptr == mem) {
+                    chunk->inuse = 0;
+                    return;
+                }
+                chunk++;
+            }
+            memlist++;
+        }
+    }
+}
+
+static apr_status_t skiplist_qpush(apr_skiplist_q *q, apr_skiplistnode *m)
+{
+    if (q->pos >= q->size) {
+        apr_skiplistnode **data;
+        size_t size = (q->pos) ? q->pos * 2 : 32;
+        if (q->p) {
+            data = apr_palloc(q->p, size * sizeof(*data));
+            if (data) {
+                memcpy(data, q->data, q->pos * sizeof(*data));
+            }
+        }
+        else {
+            data = realloc(q->data, size * sizeof(*data));
+        }
+        if (!data) {
+            return APR_ENOMEM;
+        }
+        q->data = data;
+        q->size = size;
+    }
+    q->data[q->pos++] = m;
+    return APR_SUCCESS;
+}
+
+static APR_INLINE apr_skiplistnode *skiplist_qpop(apr_skiplist_q *q)
+{
+    return (q->pos > 0) ? q->data[--q->pos] : NULL;
+}
+
+static APR_INLINE void skiplist_qclear(apr_skiplist_q *q)
+{
+    q->pos = 0;
+}
+
+static apr_skiplistnode *skiplist_new_node(apr_skiplist *sl)
+{
+    apr_skiplistnode *m = skiplist_qpop(&sl->nodes_q);
+    if (!m) {
+        if (sl->pool) {
+            m = apr_palloc(sl->pool, sizeof *m);
+        }
+        else {
+            m = malloc(sizeof *m);
+        }
+    }
+    return m;
+}
+
+static apr_status_t skiplist_free_node(apr_skiplist *sl, apr_skiplistnode *m)
+{
+    return skiplist_qpush(&sl->nodes_q, m);
+}
+
+static apr_status_t skiplisti_init(apr_skiplist **s, apr_pool_t *p)
+{
+    apr_skiplist *sl;
+    if (p) {
+        sl = apr_pcalloc(p, sizeof(apr_skiplist));
+        sl->memlist = apr_array_make(p, 20, sizeof(memlist_t));
+        sl->pool = sl->nodes_q.p = sl->stack_q.p = p;
+    }
+    else {
+        sl = calloc(1, sizeof(apr_skiplist));
+        if (!sl) {
+            return APR_ENOMEM;
+        }
+    }
+    *s = sl;
+    return APR_SUCCESS;
+}
+
+static int indexing_comp(void *a, void *b)
+{
+    void *ac = (void *) (((apr_skiplist *) a)->compare);
+    void *bc = (void *) (((apr_skiplist *) b)->compare);
+    return ((ac < bc) ? -1 : ((ac > bc) ? 1 : 0));
+}
+
+static int indexing_compk(void *ac, void *b)
+{
+    void *bc = (void *) (((apr_skiplist *) b)->compare);
+    return ((ac < bc) ? -1 : ((ac > bc) ? 1 : 0));
+}
+
+APR_DECLARE(apr_status_t) apr_skiplist_init(apr_skiplist **s, apr_pool_t *p)
+{
+    apr_skiplist *sl;
+    skiplisti_init(s, p);
+    sl = *s;
+    skiplisti_init(&(sl->index), p);
+    apr_skiplist_set_compare(sl->index, indexing_comp, indexing_compk);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(void) apr_skiplist_set_compare(apr_skiplist *sl,
+                          apr_skiplist_compare comp,
+                          apr_skiplist_compare compk)
+{
+    if (sl->compare && sl->comparek) {
+        apr_skiplist_add_index(sl, comp, compk);
+    }
+    else {
+        sl->compare = comp;
+        sl->comparek = compk;
+    }
+}
+
+APR_DECLARE(void) apr_skiplist_add_index(apr_skiplist *sl,
+                        apr_skiplist_compare comp,
+                        apr_skiplist_compare compk)
+{
+    apr_skiplistnode *m;
+    apr_skiplist *ni;
+    int icount = 0;
+    apr_skiplist_find(sl->index, (void *)comp, &m);
+    if (m) {
+        return;                 /* Index already there! */
+    }
+    skiplisti_init(&ni, sl->pool);
+    apr_skiplist_set_compare(ni, comp, compk);
+    /* Build the new index... This can be expensive! */
+    m = apr_skiplist_insert(sl->index, ni);
+    while (m->prev) {
+        m = m->prev;
+        icount++;
+    }
+    for (m = apr_skiplist_getlist(sl); m; apr_skiplist_next(sl, &m)) {
+        int j = icount - 1;
+        apr_skiplistnode *nsln;
+        nsln = apr_skiplist_insert(ni, m->data);
+        /* skip from main index down list */
+        while (j > 0) {
+            m = m->nextindex;
+            j--;
+        }
+        /* insert this node in the indexlist after m */
+        nsln->nextindex = m->nextindex;
+        if (m->nextindex) {
+            m->nextindex->previndex = nsln;
+        }
+        nsln->previndex = m;
+        m->nextindex = nsln;
+    }
+}
+
+static int skiplisti_find_compare(apr_skiplist *sl, void *data,
+                           apr_skiplistnode **ret,
+                           apr_skiplist_compare comp)
+{
+    int count = 0;
+    apr_skiplistnode *m;
+    m = sl->top;
+    while (m) {
+        if (m->next) {
+            int compared = comp(data, m->next->data);
+            if (compared == 0) {
+                m = m->next;
+                while (m->down) {
+                    m = m->down;
+                }
+                *ret = m;
+                return count;
+            }
+            if (compared > 0) {
+                m = m->next;
+                count++;
+                continue;
+            }
+        }
+        m = m->down;
+        count++;
+    }
+    *ret = NULL;
+    return count;
+}
+
+APR_DECLARE(void *) apr_skiplist_find_compare(apr_skiplist *sli, void *data,
+                               apr_skiplistnode **iter,
+                               apr_skiplist_compare comp)
+{
+    apr_skiplistnode *m;
+    apr_skiplist *sl;
+    if (!comp) {
+        if (iter) {
+            *iter = NULL;
+        }
+        return NULL;
+    }
+    if (comp == sli->compare || !sli->index) {
+        sl = sli;
+    }
+    else {
+        apr_skiplist_find(sli->index, (void *)comp, &m);
+        if (!m) {
+            if (iter) {
+                *iter = NULL;
+            }
+            return NULL;
+        }
+        sl = (apr_skiplist *) m->data;
+    }
+    skiplisti_find_compare(sl, data, &m, sl->comparek);
+    if (iter) {
+        *iter = m;
+    }
+    return (m) ? m->data : NULL;
+}
+
+APR_DECLARE(void *) apr_skiplist_find(apr_skiplist *sl, void *data, apr_skiplistnode **iter)
+{
+    return apr_skiplist_find_compare(sl, data, iter, sl->compare);
+}
+
+
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_getlist(apr_skiplist *sl)
+{
+    if (!sl->bottom) {
+        return NULL;
+    }
+    return sl->bottom->next;
+}
+
+APR_DECLARE(void *) apr_skiplist_next(apr_skiplist *sl, apr_skiplistnode **iter)
+{
+    if (!*iter) {
+        return NULL;
+    }
+    *iter = (*iter)->next;
+    return (*iter) ? ((*iter)->data) : NULL;
+}
+
+APR_DECLARE(void *) apr_skiplist_previous(apr_skiplist *sl, apr_skiplistnode **iter)
+{
+    if (!*iter) {
+        return NULL;
+    }
+    *iter = (*iter)->prev;
+    return (*iter) ? ((*iter)->data) : NULL;
+}
+
+static APR_INLINE int skiplist_height(const apr_skiplist *sl)
+{
+    /* Skiplists (even empty) always have a top node, although this
+     * implementation defers its creation until the first insert, or
+     * deletes it with the last remove. We want the real height here.
+     */
+    return sl->height ? sl->height : 1;
+}
+
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert_compare(apr_skiplist *sl, void *data,
+                                      apr_skiplist_compare comp)
+{
+    apr_skiplistnode *m, *p, *tmp, *ret = NULL;
+    int ch, nh = 1;
+
+    if (!comp) {
+        return NULL;
+    }
+
+    ch = skiplist_height(sl);
+    if (sl->preheight) {
+        while (nh < sl->preheight && get_b_rand()) {
+            nh++;
+        }
+    }
+    else {
+        while (nh <= ch && get_b_rand()) {
+            nh++;
+        }
+    }
+
+    /* Now we have in nh the height at which we wish to insert our new node,
+     * and in ch the current height: don't create skip paths to the inserted
+     * element until the walk down through the tree (which decrements ch)
+     * reaches nh. From there, any walk down pushes the current node on a
+     * stack (the node(s) after which we would insert) to pop back through
+     * for insertion later.
+     */
+    m = sl->top;
+    while (m) {
+        if (m->next) {
+            int compared = comp(data, m->next->data);
+            if (compared == 0) {
+                /* Keep the existing element(s) */
+                skiplist_qclear(&sl->stack_q);
+                return NULL;
+            }
+            if (compared > 0) {
+                m = m->next;
+                continue;
+            }
+        }
+        if (ch <= nh) {
+            /* push on stack */
+            skiplist_qpush(&sl->stack_q, m);
+        }
+        m = m->down;
+        ch--;
+    }
+    /* Pop the stack and insert nodes */
+    p = NULL;
+    while ((m = skiplist_qpop(&sl->stack_q))) {
+        tmp = skiplist_new_node(sl);
+        tmp->next = m->next;
+        if (m->next) {
+            m->next->prev = tmp;
+        }
+        m->next = tmp;
+        tmp->prev = m;
+        tmp->up = NULL;
+        tmp->nextindex = tmp->previndex = NULL;
+        tmp->down = p;
+        if (p) {
+            p->up = tmp;
+        }
+        else {
+            /* This sets ret to the bottom-most node we are inserting */
+            ret = tmp;
+        }
+        tmp->data = data;
+        tmp->sl = sl;
+        p = tmp;
+    }
+
+    /* Now we are sure the node is inserted, grow our tree to 'nh' tall */
+    for (; sl->height < nh; sl->height++) {
+        m = skiplist_new_node(sl);
+        tmp = skiplist_new_node(sl);
+        m->up = m->prev = m->nextindex = m->previndex = NULL;
+        m->next = tmp;
+        m->down = sl->top;
+        m->data = NULL;
+        m->sl = sl;
+        if (sl->top) {
+            sl->top->up = m;
+        }
+        else {
+            sl->bottom = sl->bottomend = m;
+        }
+        sl->top = sl->topend = tmp->prev = m;
+        tmp->up = tmp->next = tmp->nextindex = tmp->previndex = NULL;
+        tmp->down = p;
+        tmp->data = data;
+        tmp->sl = sl;
+        if (p) {
+            p->up = tmp;
+        }
+        else {
+            /* This sets ret to the bottom-most node we are inserting */
+            ret = tmp;
+        }
+        p = tmp;
+    }
+    if (sl->index != NULL) {
+        /*
+         * this is a external insertion, we must insert into each index as
+         * well
+         */
+        apr_skiplistnode *ni, *li;
+        li = ret;
+        for (p = apr_skiplist_getlist(sl->index); p; apr_skiplist_next(sl->index, &p)) {
+            apr_skiplist *sli = (apr_skiplist *)p->data;
+            ni = apr_skiplist_insert_compare(sli, ret->data, sli->compare);
+            li->nextindex = ni;
+            ni->previndex = li;
+            li = ni;
+        }
+    }
+    sl->size++;
+    return ret;
+}
+
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert(apr_skiplist *sl, void *data)
+{
+    return apr_skiplist_insert_compare(sl, data, sl->compare);
+}
+
+#if 0
+void skiplist_print_struct(apr_skiplist * sl, char *prefix)
+{
+    apr_skiplistnode *p, *q;
+    fprintf(stderr, "Skiplist Structure (height: %d)\n", sl->height);
+    p = sl->bottom;
+    while (p) {
+        q = p;
+        fprintf(stderr, prefix);
+        while (q) {
+            fprintf(stderr, "%p ", q->data);
+            q = q->up;
+        }
+        fprintf(stderr, "\n");
+        p = p->next;
+    }
+}
+#endif
+
+static int skiplisti_remove(apr_skiplist *sl, apr_skiplistnode *m, apr_skiplist_freefunc myfree)
+{
+    apr_skiplistnode *p;
+    if (!m) {
+        return 0;
+    }
+    if (m->nextindex) {
+        skiplisti_remove(m->nextindex->sl, m->nextindex, NULL);
+    }
+    while (m->up) {
+        m = m->up;
+    }
+    while (m) {
+        p = m;
+        p->prev->next = p->next;/* take me out of the list */
+        if (p->next) {
+            p->next->prev = p->prev;    /* take me out of the list */
+        }
+        m = m->down;
+        /* This only frees the actual data in the bottom one */
+        if (!m && myfree && p->data) {
+            myfree(p->data);
+        }
+        skiplist_free_node(sl, p);
+    }
+    sl->size--;
+    while (sl->top && sl->top->next == NULL) {
+        /* While the row is empty and we are not on the bottom row */
+        p = sl->top;
+        sl->top = sl->top->down;/* Move top down one */
+        if (sl->top) {
+            sl->top->up = NULL; /* Make it think its the top */
+        }
+        skiplist_free_node(sl, p);
+        sl->height--;
+    }
+    if (!sl->top) {
+        sl->bottom = sl->bottomend = NULL;
+        sl->topend = NULL;
+    }
+    return skiplist_height(sl);
+}
+
+APR_DECLARE(int) apr_skiplist_remove_compare(apr_skiplist *sli,
+                            void *data,
+                            apr_skiplist_freefunc myfree, apr_skiplist_compare comp)
+{
+    apr_skiplistnode *m;
+    apr_skiplist *sl;
+    if (!comp) {
+        return 0;
+    }
+    if (comp == sli->comparek || !sli->index) {
+        sl = sli;
+    }
+    else {
+        apr_skiplist_find(sli->index, (void *)comp, &m);
+        if (!m) {
+            return 0;
+        }
+        sl = (apr_skiplist *) m->data;
+    }
+    skiplisti_find_compare(sl, data, &m, comp);
+    if (!m) {
+        return 0;
+    }
+    while (m->previndex) {
+        m = m->previndex;
+    }
+    return skiplisti_remove(sl, m, myfree);
+}
+
+APR_DECLARE(int) apr_skiplist_remove(apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree)
+{
+    return apr_skiplist_remove_compare(sl, data, myfree, sl->comparek);
+}
+
+APR_DECLARE(void) apr_skiplist_remove_all(apr_skiplist *sl, apr_skiplist_freefunc myfree)
+{
+    /*
+     * This must remove even the place holder nodes (bottom though top)
+     * because we specify in the API that one can free the Skiplist after
+     * making this call without memory leaks
+     */
+    apr_skiplistnode *m, *p, *u;
+    m = sl->bottom;
+    while (m) {
+        p = m->next;
+        if (myfree && p && p->data) {
+            myfree(p->data);
+        }
+        do {
+            u = m->up;
+            skiplist_free_node(sl, m);
+            m = u;
+        } while (m);
+        m = p;
+    }
+    sl->top = sl->bottom = NULL;
+    sl->topend = sl->bottomend = NULL;
+    sl->height = 0;
+    sl->size = 0;
+}
+
+APR_DECLARE(void *) apr_skiplist_pop(apr_skiplist *a, apr_skiplist_freefunc myfree)
+{
+    apr_skiplistnode *sln;
+    void *data = NULL;
+    sln = apr_skiplist_getlist(a);
+    if (sln) {
+        data = sln->data;
+        skiplisti_remove(a, sln, myfree);
+    }
+    return data;
+}
+
+APR_DECLARE(void *) apr_skiplist_peek(apr_skiplist *a)
+{
+    apr_skiplistnode *sln;
+    sln = apr_skiplist_getlist(a);
+    if (sln) {
+        return sln->data;
+    }
+    return NULL;
+}
+
+static void skiplisti_destroy(void *vsl)
+{
+    apr_skiplist_destroy(vsl, NULL);
+}
+
+APR_DECLARE(void) apr_skiplist_destroy(apr_skiplist *sl, apr_skiplist_freefunc myfree)
+{
+    while (apr_skiplist_pop(sl->index, skiplisti_destroy) != NULL)
+        ;
+    apr_skiplist_remove_all(sl, myfree);
+    if (!sl->pool) {
+        while (sl->nodes_q.pos)
+            free(sl->nodes_q.data[--sl->nodes_q.pos]);
+        free(sl->nodes_q.data);
+        free(sl->stack_q.data);
+        free(sl);
+    }
+}
+
+APR_DECLARE(apr_skiplist *) apr_skiplist_merge(apr_skiplist *sl1, apr_skiplist *sl2)
+{
+    /* Check integrity! */
+    apr_skiplist temp;
+    struct apr_skiplistnode *b2;
+    if (sl1->bottomend == NULL || sl1->bottomend->prev == NULL) {
+        apr_skiplist_remove_all(sl1, NULL);
+        temp = *sl1;
+        *sl1 = *sl2;
+        *sl2 = temp;
+        /* swap them so that sl2 can be freed normally upon return. */
+        return sl1;
+    }
+    if(sl2->bottom == NULL || sl2->bottom->next == NULL) {
+        apr_skiplist_remove_all(sl2, NULL);
+        return sl1;
+    }
+    /* This is what makes it brute force... Just insert :/ */
+    b2 = apr_skiplist_getlist(sl2);
+    while (b2) {
+        apr_skiplist_insert(sl1, b2->data);
+        apr_skiplist_next(sl2, &b2);
+    }
+    apr_skiplist_remove_all(sl2, NULL);
+    return sl1;
+}

Deleted: vendor/apache/apr/1.5.2/tables/apr_tables.c
===================================================================
--- vendor/apache/apr/dist/tables/apr_tables.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/tables/apr_tables.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1238 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Resource allocation code... the code here is responsible for making
- * sure that nothing leaks.
- *
- * rst --- 4/95 --- 6/95
- */
-
-#include "apr_private.h"
-
-#include "apr_general.h"
-#include "apr_pools.h"
-#include "apr_tables.h"
-#include "apr_strings.h"
-#include "apr_lib.h"
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#if APR_HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
-#if (APR_POOL_DEBUG || defined(MAKE_TABLE_PROFILE)) && APR_HAVE_STDIO_H
-#include <stdio.h>
-#endif
-
-/*****************************************************************
- * This file contains array and apr_table_t functions only.
- */
-
-/*****************************************************************
- *
- * The 'array' functions...
- */
-
-static void make_array_core(apr_array_header_t *res, apr_pool_t *p,
-			    int nelts, int elt_size, int clear)
-{
-    /*
-     * Assure sanity if someone asks for
-     * array of zero elts.
-     */
-    if (nelts < 1) {
-        nelts = 1;
-    }
-
-    if (clear) {
-        res->elts = apr_pcalloc(p, nelts * elt_size);
-    }
-    else {
-        res->elts = apr_palloc(p, nelts * elt_size);
-    }
-
-    res->pool = p;
-    res->elt_size = elt_size;
-    res->nelts = 0;		/* No active elements yet... */
-    res->nalloc = nelts;	/* ...but this many allocated */
-}
-
-APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a)
-{
-    return ((a == NULL) || (a->nelts == 0));
-}
-
-APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p,
-						int nelts, int elt_size)
-{
-    apr_array_header_t *res;
-
-    res = (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t));
-    make_array_core(res, p, nelts, elt_size, 1);
-    return res;
-}
-
-APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr)
-{
-    arr->nelts = 0;
-}
-
-APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr)
-{
-    if (apr_is_empty_array(arr)) {
-        return NULL;
-    }
-   
-    return arr->elts + (arr->elt_size * (--arr->nelts));
-}
-
-APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr)
-{
-    if (arr->nelts == arr->nalloc) {
-        int new_size = (arr->nalloc <= 0) ? 1 : arr->nalloc * 2;
-        char *new_data;
-
-        new_data = apr_palloc(arr->pool, arr->elt_size * new_size);
-
-        memcpy(new_data, arr->elts, arr->nalloc * arr->elt_size);
-        memset(new_data + arr->nalloc * arr->elt_size, 0,
-               arr->elt_size * (new_size - arr->nalloc));
-        arr->elts = new_data;
-        arr->nalloc = new_size;
-    }
-
-    ++arr->nelts;
-    return arr->elts + (arr->elt_size * (arr->nelts - 1));
-}
-
-static void *apr_array_push_noclear(apr_array_header_t *arr)
-{
-    if (arr->nelts == arr->nalloc) {
-        int new_size = (arr->nalloc <= 0) ? 1 : arr->nalloc * 2;
-        char *new_data;
-
-        new_data = apr_palloc(arr->pool, arr->elt_size * new_size);
-
-        memcpy(new_data, arr->elts, arr->nalloc * arr->elt_size);
-        arr->elts = new_data;
-        arr->nalloc = new_size;
-    }
-
-    ++arr->nelts;
-    return arr->elts + (arr->elt_size * (arr->nelts - 1));
-}
-
-APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst,
-			       const apr_array_header_t *src)
-{
-    int elt_size = dst->elt_size;
-
-    if (dst->nelts + src->nelts > dst->nalloc) {
-	int new_size = (dst->nalloc <= 0) ? 1 : dst->nalloc * 2;
-	char *new_data;
-
-	while (dst->nelts + src->nelts > new_size) {
-	    new_size *= 2;
-	}
-
-	new_data = apr_pcalloc(dst->pool, elt_size * new_size);
-	memcpy(new_data, dst->elts, dst->nalloc * elt_size);
-
-	dst->elts = new_data;
-	dst->nalloc = new_size;
-    }
-
-    memcpy(dst->elts + dst->nelts * elt_size, src->elts,
-	   elt_size * src->nelts);
-    dst->nelts += src->nelts;
-}
-
-APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p,
-						const apr_array_header_t *arr)
-{
-    apr_array_header_t *res =
-        (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t));
-    make_array_core(res, p, arr->nalloc, arr->elt_size, 0);
-
-    memcpy(res->elts, arr->elts, arr->elt_size * arr->nelts);
-    res->nelts = arr->nelts;
-    memset(res->elts + res->elt_size * res->nelts, 0,
-           res->elt_size * (res->nalloc - res->nelts));
-    return res;
-}
-
-/* This cute function copies the array header *only*, but arranges
- * for the data section to be copied on the first push or arraycat.
- * It's useful when the elements of the array being copied are
- * read only, but new stuff *might* get added on the end; we have the
- * overhead of the full copy only where it is really needed.
- */
-
-static APR_INLINE void copy_array_hdr_core(apr_array_header_t *res,
-					   const apr_array_header_t *arr)
-{
-    res->elts = arr->elts;
-    res->elt_size = arr->elt_size;
-    res->nelts = arr->nelts;
-    res->nalloc = arr->nelts;	/* Force overflow on push */
-}
-
-APR_DECLARE(apr_array_header_t *)
-    apr_array_copy_hdr(apr_pool_t *p,
-		       const apr_array_header_t *arr)
-{
-    apr_array_header_t *res;
-
-    res = (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t));
-    res->pool = p;
-    copy_array_hdr_core(res, arr);
-    return res;
-}
-
-/* The above is used here to avoid consing multiple new array bodies... */
-
-APR_DECLARE(apr_array_header_t *)
-    apr_array_append(apr_pool_t *p,
-		      const apr_array_header_t *first,
-		      const apr_array_header_t *second)
-{
-    apr_array_header_t *res = apr_array_copy_hdr(p, first);
-
-    apr_array_cat(res, second);
-    return res;
-}
-
-/* apr_array_pstrcat generates a new string from the apr_pool_t containing
- * the concatenated sequence of substrings referenced as elements within
- * the array.  The string will be empty if all substrings are empty or null,
- * or if there are no elements in the array.
- * If sep is non-NUL, it will be inserted between elements as a separator.
- */
-APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p,
-				     const apr_array_header_t *arr,
-				     const char sep)
-{
-    char *cp, *res, **strpp;
-    apr_size_t len;
-    int i;
-
-    if (arr->nelts <= 0 || arr->elts == NULL) {    /* Empty table? */
-        return (char *) apr_pcalloc(p, 1);
-    }
-
-    /* Pass one --- find length of required string */
-
-    len = 0;
-    for (i = 0, strpp = (char **) arr->elts; ; ++strpp) {
-        if (strpp && *strpp != NULL) {
-            len += strlen(*strpp);
-        }
-        if (++i >= arr->nelts) {
-            break;
-	}
-        if (sep) {
-            ++len;
-	}
-    }
-
-    /* Allocate the required string */
-
-    res = (char *) apr_palloc(p, len + 1);
-    cp = res;
-
-    /* Pass two --- copy the argument strings into the result space */
-
-    for (i = 0, strpp = (char **) arr->elts; ; ++strpp) {
-        if (strpp && *strpp != NULL) {
-            len = strlen(*strpp);
-            memcpy(cp, *strpp, len);
-            cp += len;
-        }
-        if (++i >= arr->nelts) {
-            break;
-	}
-        if (sep) {
-            *cp++ = sep;
-	}
-    }
-
-    *cp = '\0';
-
-    /* Return the result string */
-
-    return res;
-}
-
-
-/*****************************************************************
- *
- * The "table" functions.
- */
-
-#if APR_CHARSET_EBCDIC
-#define CASE_MASK 0xbfbfbfbf
-#else
-#define CASE_MASK 0xdfdfdfdf
-#endif
-
-#define TABLE_HASH_SIZE 32
-#define TABLE_INDEX_MASK 0x1f
-#define TABLE_HASH(key)  (TABLE_INDEX_MASK & *(unsigned char *)(key))
-#define TABLE_INDEX_IS_INITIALIZED(t, i) ((t)->index_initialized & (1 << (i)))
-#define TABLE_SET_INDEX_INITIALIZED(t, i) ((t)->index_initialized |= (1 << (i)))
-
-/* Compute the "checksum" for a key, consisting of the first
- * 4 bytes, normalized for case-insensitivity and packed into
- * an int...this checksum allows us to do a single integer
- * comparison as a fast check to determine whether we can
- * skip a strcasecmp
- */
-#define COMPUTE_KEY_CHECKSUM(key, checksum)    \
-{                                              \
-    const char *k = (key);                     \
-    apr_uint32_t c = (apr_uint32_t)*k;         \
-    (checksum) = c;                            \
-    (checksum) <<= 8;                          \
-    if (c) {                                   \
-        c = (apr_uint32_t)*++k;                \
-        checksum |= c;                         \
-    }                                          \
-    (checksum) <<= 8;                          \
-    if (c) {                                   \
-        c = (apr_uint32_t)*++k;                \
-        checksum |= c;                         \
-    }                                          \
-    (checksum) <<= 8;                          \
-    if (c) {                                   \
-        c = (apr_uint32_t)*++k;                \
-        checksum |= c;                         \
-    }                                          \
-    checksum &= CASE_MASK;                     \
-}
-
-/** The opaque string-content table type */
-struct apr_table_t {
-    /* This has to be first to promote backwards compatibility with
-     * older modules which cast a apr_table_t * to an apr_array_header_t *...
-     * they should use the apr_table_elts() function for most of the
-     * cases they do this for.
-     */
-    /** The underlying array for the table */
-    apr_array_header_t a;
-#ifdef MAKE_TABLE_PROFILE
-    /** Who created the array. */
-    void *creator;
-#endif
-    /* An index to speed up table lookups.  The way this works is:
-     *   - Hash the key into the index:
-     *     - index_first[TABLE_HASH(key)] is the offset within
-     *       the table of the first entry with that key
-     *     - index_last[TABLE_HASH(key)] is the offset within
-     *       the table of the last entry with that key
-     *   - If (and only if) there is no entry in the table whose
-     *     key hashes to index element i, then the i'th bit
-     *     of index_initialized will be zero.  (Check this before
-     *     trying to use index_first[i] or index_last[i]!)
-     */
-    apr_uint32_t index_initialized;
-    int index_first[TABLE_HASH_SIZE];
-    int index_last[TABLE_HASH_SIZE];
-};
-
-/*
- * NOTICE: if you tweak this you should look at is_empty_table() 
- * and table_elts() in alloc.h
- */
-#ifdef MAKE_TABLE_PROFILE
-static apr_table_entry_t *do_table_push(const char *func, apr_table_t *t)
-{
-    if (t->a.nelts == t->a.nalloc) {
-        fprintf(stderr, "%s: table created by %p hit limit of %u\n",
-                func ? func : "table_push", t->creator, t->a.nalloc);
-    }
-    return (apr_table_entry_t *) apr_array_push_noclear(&t->a);
-}
-#if defined(__GNUC__) && __GNUC__ >= 2
-#define table_push(t) do_table_push(__FUNCTION__, t)
-#else
-#define table_push(t) do_table_push(NULL, t)
-#endif
-#else /* MAKE_TABLE_PROFILE */
-#define table_push(t)	((apr_table_entry_t *) apr_array_push_noclear(&(t)->a))
-#endif /* MAKE_TABLE_PROFILE */
-
-APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t)
-{
-    return (const apr_array_header_t *)t;
-}
-
-APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t)
-{
-    return ((t == NULL) || (t->a.nelts == 0));
-}
-
-APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts)
-{
-    apr_table_t *t = apr_palloc(p, sizeof(apr_table_t));
-
-    make_array_core(&t->a, p, nelts, sizeof(apr_table_entry_t), 0);
-#ifdef MAKE_TABLE_PROFILE
-    t->creator = __builtin_return_address(0);
-#endif
-    t->index_initialized = 0;
-    return t;
-}
-
-APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p, const apr_table_t *t)
-{
-    apr_table_t *new = apr_palloc(p, sizeof(apr_table_t));
-
-#if APR_POOL_DEBUG
-    /* we don't copy keys and values, so it's necessary that t->a.pool
-     * have a life span at least as long as p
-     */
-    if (!apr_pool_is_ancestor(t->a.pool, p)) {
-	fprintf(stderr, "apr_table_copy: t's pool is not an ancestor of p\n");
-	abort();
-    }
-#endif
-    make_array_core(&new->a, p, t->a.nalloc, sizeof(apr_table_entry_t), 0);
-    memcpy(new->a.elts, t->a.elts, t->a.nelts * sizeof(apr_table_entry_t));
-    new->a.nelts = t->a.nelts;
-    memcpy(new->index_first, t->index_first, sizeof(int) * TABLE_HASH_SIZE);
-    memcpy(new->index_last, t->index_last, sizeof(int) * TABLE_HASH_SIZE);
-    new->index_initialized = t->index_initialized;
-    return new;
-}
-
-APR_DECLARE(apr_table_t *) apr_table_clone(apr_pool_t *p, const apr_table_t *t)
-{
-    const apr_array_header_t *array = apr_table_elts(t);
-    apr_table_entry_t *elts = (apr_table_entry_t *) array->elts;
-    apr_table_t *new = apr_table_make(p, array->nelts);
-    int i;
-
-    for (i = 0; i < array->nelts; i++) {
-        apr_table_add(new, elts[i].key, elts[i].val);
-    }
-
-    return new;
-}
-
-static void table_reindex(apr_table_t *t)
-{
-    int i;
-    int hash;
-    apr_table_entry_t *next_elt = (apr_table_entry_t *) t->a.elts;
-
-    t->index_initialized = 0;
-    for (i = 0; i < t->a.nelts; i++, next_elt++) {
-        hash = TABLE_HASH(next_elt->key);
-        t->index_last[hash] = i;
-        if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-            t->index_first[hash] = i;
-            TABLE_SET_INDEX_INITIALIZED(t, hash);
-        }
-    }
-}
-
-APR_DECLARE(void) apr_table_clear(apr_table_t *t)
-{
-    t->a.nelts = 0;
-    t->index_initialized = 0;
-}
-
-APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key)
-{
-    apr_table_entry_t *next_elt;
-    apr_table_entry_t *end_elt;
-    apr_uint32_t checksum;
-    int hash;
-
-    if (key == NULL) {
-	return NULL;
-    }
-
-    hash = TABLE_HASH(key);
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        return NULL;
-    }
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
-    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
-
-    for (; next_elt <= end_elt; next_elt++) {
-	if ((checksum == next_elt->key_checksum) &&
-            !strcasecmp(next_elt->key, key)) {
-	    return next_elt->val;
-	}
-    }
-
-    return NULL;
-}
-
-APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key,
-                                const char *val)
-{
-    apr_table_entry_t *next_elt;
-    apr_table_entry_t *end_elt;
-    apr_table_entry_t *table_end;
-    apr_uint32_t checksum;
-    int hash;
-
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    hash = TABLE_HASH(key);
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        t->index_first[hash] = t->a.nelts;
-        TABLE_SET_INDEX_INITIALIZED(t, hash);
-        goto add_new_elt;
-    }
-    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
-    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
-    table_end =((apr_table_entry_t *) t->a.elts) + t->a.nelts;
-
-    for (; next_elt <= end_elt; next_elt++) {
-	if ((checksum == next_elt->key_checksum) &&
-            !strcasecmp(next_elt->key, key)) {
-
-            /* Found an existing entry with the same key, so overwrite it */
-
-            int must_reindex = 0;
-            apr_table_entry_t *dst_elt = NULL;
-
-            next_elt->val = apr_pstrdup(t->a.pool, val);
-
-            /* Remove any other instances of this key */
-            for (next_elt++; next_elt <= end_elt; next_elt++) {
-                if ((checksum == next_elt->key_checksum) &&
-                    !strcasecmp(next_elt->key, key)) {
-                    t->a.nelts--;
-                    if (!dst_elt) {
-                        dst_elt = next_elt;
-                    }
-                }
-                else if (dst_elt) {
-                    *dst_elt++ = *next_elt;
-                    must_reindex = 1;
-                }
-            }
-
-            /* If we've removed anything, shift over the remainder
-             * of the table (note that the previous loop didn't
-             * run to the end of the table, just to the last match
-             * for the index)
-             */
-            if (dst_elt) {
-                for (; next_elt < table_end; next_elt++) {
-                    *dst_elt++ = *next_elt;
-                }
-                must_reindex = 1;
-            }
-            if (must_reindex) {
-                table_reindex(t);
-            }
-            return;
-        }
-    }
-
-add_new_elt:
-    t->index_last[hash] = t->a.nelts;
-    next_elt = (apr_table_entry_t *) table_push(t);
-    next_elt->key = apr_pstrdup(t->a.pool, key);
-    next_elt->val = apr_pstrdup(t->a.pool, val);
-    next_elt->key_checksum = checksum;
-}
-
-APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key,
-                                 const char *val)
-{
-    apr_table_entry_t *next_elt;
-    apr_table_entry_t *end_elt;
-    apr_table_entry_t *table_end;
-    apr_uint32_t checksum;
-    int hash;
-
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    hash = TABLE_HASH(key);
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        t->index_first[hash] = t->a.nelts;
-        TABLE_SET_INDEX_INITIALIZED(t, hash);
-        goto add_new_elt;
-    }
-    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
-    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
-    table_end =((apr_table_entry_t *) t->a.elts) + t->a.nelts;
-
-    for (; next_elt <= end_elt; next_elt++) {
-	if ((checksum == next_elt->key_checksum) &&
-            !strcasecmp(next_elt->key, key)) {
-
-            /* Found an existing entry with the same key, so overwrite it */
-
-            int must_reindex = 0;
-            apr_table_entry_t *dst_elt = NULL;
-
-            next_elt->val = (char *)val;
-
-            /* Remove any other instances of this key */
-            for (next_elt++; next_elt <= end_elt; next_elt++) {
-                if ((checksum == next_elt->key_checksum) &&
-                    !strcasecmp(next_elt->key, key)) {
-                    t->a.nelts--;
-                    if (!dst_elt) {
-                        dst_elt = next_elt;
-                    }
-                }
-                else if (dst_elt) {
-                    *dst_elt++ = *next_elt;
-                    must_reindex = 1;
-                }
-            }
-
-            /* If we've removed anything, shift over the remainder
-             * of the table (note that the previous loop didn't
-             * run to the end of the table, just to the last match
-             * for the index)
-             */
-            if (dst_elt) {
-                for (; next_elt < table_end; next_elt++) {
-                    *dst_elt++ = *next_elt;
-                }
-                must_reindex = 1;
-            }
-            if (must_reindex) {
-                table_reindex(t);
-            }
-            return;
-        }
-    }
-
-add_new_elt:
-    t->index_last[hash] = t->a.nelts;
-    next_elt = (apr_table_entry_t *) table_push(t);
-    next_elt->key = (char *)key;
-    next_elt->val = (char *)val;
-    next_elt->key_checksum = checksum;
-}
-
-APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key)
-{
-    apr_table_entry_t *next_elt;
-    apr_table_entry_t *end_elt;
-    apr_table_entry_t *dst_elt;
-    apr_uint32_t checksum;
-    int hash;
-    int must_reindex;
-
-    hash = TABLE_HASH(key);
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        return;
-    }
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];
-    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
-    must_reindex = 0;
-    for (; next_elt <= end_elt; next_elt++) {
-	if ((checksum == next_elt->key_checksum) &&
-            !strcasecmp(next_elt->key, key)) {
-
-            /* Found a match: remove this entry, plus any additional
-             * matches for the same key that might follow
-             */
-            apr_table_entry_t *table_end = ((apr_table_entry_t *) t->a.elts) +
-                t->a.nelts;
-            t->a.nelts--;
-            dst_elt = next_elt;
-            for (next_elt++; next_elt <= end_elt; next_elt++) {
-                if ((checksum == next_elt->key_checksum) &&
-                    !strcasecmp(next_elt->key, key)) {
-                    t->a.nelts--;
-                }
-                else {
-                    *dst_elt++ = *next_elt;
-                }
-            }
-
-            /* Shift over the remainder of the table (note that
-             * the previous loop didn't run to the end of the table,
-             * just to the last match for the index)
-             */
-            for (; next_elt < table_end; next_elt++) {
-                *dst_elt++ = *next_elt;
-            }
-            must_reindex = 1;
-            break;
-        }
-    }
-    if (must_reindex) {
-        table_reindex(t);
-    }
-}
-
-APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key,
-				 const char *val)
-{
-    apr_table_entry_t *next_elt;
-    apr_table_entry_t *end_elt;
-    apr_uint32_t checksum;
-    int hash;
-
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    hash = TABLE_HASH(key);
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        t->index_first[hash] = t->a.nelts;
-        TABLE_SET_INDEX_INITIALIZED(t, hash);
-        goto add_new_elt;
-    }
-    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];
-    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
-
-    for (; next_elt <= end_elt; next_elt++) {
-	if ((checksum == next_elt->key_checksum) &&
-            !strcasecmp(next_elt->key, key)) {
-
-            /* Found an existing entry with the same key, so merge with it */
-	    next_elt->val = apr_pstrcat(t->a.pool, next_elt->val, ", ",
-                                        val, NULL);
-            return;
-        }
-    }
-
-add_new_elt:
-    t->index_last[hash] = t->a.nelts;
-    next_elt = (apr_table_entry_t *) table_push(t);
-    next_elt->key = apr_pstrdup(t->a.pool, key);
-    next_elt->val = apr_pstrdup(t->a.pool, val);
-    next_elt->key_checksum = checksum;
-}
-
-APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key,
-				  const char *val)
-{
-    apr_table_entry_t *next_elt;
-    apr_table_entry_t *end_elt;
-    apr_uint32_t checksum;
-    int hash;
-
-#if APR_POOL_DEBUG
-    {
-	apr_pool_t *pool;
-	pool = apr_pool_find(key);
-	if ((pool != key) && (!apr_pool_is_ancestor(pool, t->a.pool))) {
-	    fprintf(stderr, "apr_table_mergen: key not in ancestor pool of t\n");
-	    abort();
-	}
-	pool = apr_pool_find(val);
-	if ((pool != val) && (!apr_pool_is_ancestor(pool, t->a.pool))) {
-	    fprintf(stderr, "apr_table_mergen: val not in ancestor pool of t\n");
-	    abort();
-	}
-    }
-#endif
-
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    hash = TABLE_HASH(key);
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        t->index_first[hash] = t->a.nelts;
-        TABLE_SET_INDEX_INITIALIZED(t, hash);
-        goto add_new_elt;
-    }
-    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
-    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
-
-    for (; next_elt <= end_elt; next_elt++) {
-	if ((checksum == next_elt->key_checksum) &&
-            !strcasecmp(next_elt->key, key)) {
-
-            /* Found an existing entry with the same key, so merge with it */
-	    next_elt->val = apr_pstrcat(t->a.pool, next_elt->val, ", ",
-                                        val, NULL);
-            return;
-        }
-    }
-
-add_new_elt:
-    t->index_last[hash] = t->a.nelts;
-    next_elt = (apr_table_entry_t *) table_push(t);
-    next_elt->key = (char *)key;
-    next_elt->val = (char *)val;
-    next_elt->key_checksum = checksum;
-}
-
-APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key,
-			       const char *val)
-{
-    apr_table_entry_t *elts;
-    apr_uint32_t checksum;
-    int hash;
-
-    hash = TABLE_HASH(key);
-    t->index_last[hash] = t->a.nelts;
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        t->index_first[hash] = t->a.nelts;
-        TABLE_SET_INDEX_INITIALIZED(t, hash);
-    }
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    elts = (apr_table_entry_t *) table_push(t);
-    elts->key = apr_pstrdup(t->a.pool, key);
-    elts->val = apr_pstrdup(t->a.pool, val);
-    elts->key_checksum = checksum;
-}
-
-APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key,
-				const char *val)
-{
-    apr_table_entry_t *elts;
-    apr_uint32_t checksum;
-    int hash;
-
-#if APR_POOL_DEBUG
-    {
-	if (!apr_pool_is_ancestor(apr_pool_find(key), t->a.pool)) {
-	    fprintf(stderr, "apr_table_addn: key not in ancestor pool of t\n");
-	    abort();
-	}
-	if (!apr_pool_is_ancestor(apr_pool_find(val), t->a.pool)) {
-	    fprintf(stderr, "apr_table_addn: val not in ancestor pool of t\n");
-	    abort();
-	}
-    }
-#endif
-
-    hash = TABLE_HASH(key);
-    t->index_last[hash] = t->a.nelts;
-    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-        t->index_first[hash] = t->a.nelts;
-        TABLE_SET_INDEX_INITIALIZED(t, hash);
-    }
-    COMPUTE_KEY_CHECKSUM(key, checksum);
-    elts = (apr_table_entry_t *) table_push(t);
-    elts->key = (char *)key;
-    elts->val = (char *)val;
-    elts->key_checksum = checksum;
-}
-
-APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p,
-					     const apr_table_t *overlay,
-					     const apr_table_t *base)
-{
-    apr_table_t *res;
-
-#if APR_POOL_DEBUG
-    /* we don't copy keys and values, so it's necessary that
-     * overlay->a.pool and base->a.pool have a life span at least
-     * as long as p
-     */
-    if (!apr_pool_is_ancestor(overlay->a.pool, p)) {
-	fprintf(stderr,
-		"apr_table_overlay: overlay's pool is not an ancestor of p\n");
-	abort();
-    }
-    if (!apr_pool_is_ancestor(base->a.pool, p)) {
-	fprintf(stderr,
-		"apr_table_overlay: base's pool is not an ancestor of p\n");
-	abort();
-    }
-#endif
-
-    res = apr_palloc(p, sizeof(apr_table_t));
-    /* behave like append_arrays */
-    res->a.pool = p;
-    copy_array_hdr_core(&res->a, &overlay->a);
-    apr_array_cat(&res->a, &base->a);
-    table_reindex(res);
-    return res;
-}
-
-/* And now for something completely abstract ...
-
- * For each key value given as a vararg:
- *   run the function pointed to as
- *     int comp(void *r, char *key, char *value);
- *   on each valid key-value pair in the apr_table_t t that matches the vararg key,
- *   or once for every valid key-value pair if the vararg list is empty,
- *   until the function returns false (0) or we finish the table.
- *
- * Note that we restart the traversal for each vararg, which means that
- * duplicate varargs will result in multiple executions of the function
- * for each matching key.  Note also that if the vararg list is empty,
- * only one traversal will be made and will cut short if comp returns 0.
- *
- * Note that the table_get and table_merge functions assume that each key in
- * the apr_table_t is unique (i.e., no multiple entries with the same key).  This
- * function does not make that assumption, since it (unfortunately) isn't
- * true for some of Apache's tables.
- *
- * Note that rec is simply passed-on to the comp function, so that the
- * caller can pass additional info for the task.
- *
- * ADDENDUM for apr_table_vdo():
- * 
- * The caching api will allow a user to walk the header values:
- *
- * apr_status_t apr_cache_el_header_walk(apr_cache_el *el, 
- *    int (*comp)(void *, const char *, const char *), void *rec, ...);
- *
- * So it can be ..., however from there I use a  callback that use a va_list:
- *
- * apr_status_t (*cache_el_header_walk)(apr_cache_el *el, 
- *    int (*comp)(void *, const char *, const char *), void *rec, va_list);
- *
- * To pass those ...'s on down to the actual module that will handle walking
- * their headers, in the file case this is actually just an apr_table - and
- * rather than reimplementing apr_table_do (which IMHO would be bad) I just
- * called it with the va_list. For mod_shmem_cache I don't need it since I
- * can't use apr_table's, but mod_file_cache should (though a good hash would
- * be better, but that's a different issue :). 
- *
- * So to make mod_file_cache easier to maintain, it's a good thing
- */
-APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp,
-                                     void *rec, const apr_table_t *t, ...)
-{
-    int rv;
-
-    va_list vp;
-    va_start(vp, t);
-    rv = apr_table_vdo(comp, rec, t, vp);
-    va_end(vp);
-
-    return rv;
-} 
-
-/* XXX: do the semantics of this routine make any sense?  Right now,
- * if the caller passed in a non-empty va_list of keys to search for,
- * the "early termination" facility only terminates on *that* key; other
- * keys will continue to process.  Note that this only has any effect
- * at all if there are multiple entries in the table with the same key,
- * otherwise the called function can never effectively early-terminate
- * this function, as the zero return value is effectively ignored.
- *
- * Note also that this behavior is at odds with the behavior seen if an
- * empty va_list is passed in -- in that case, a zero return value terminates
- * the entire apr_table_vdo (which is what I think should happen in
- * both cases).
- *
- * If nobody objects soon, I'm going to change the order of the nested
- * loops in this function so that any zero return value from the (*comp)
- * function will cause a full termination of apr_table_vdo.  I'm hesitant
- * at the moment because these (funky) semantics have been around for a
- * very long time, and although Apache doesn't seem to use them at all,
- * some third-party vendor might.  I can only think of one possible reason
- * the existing semantics would make any sense, and it's very Apache-centric,
- * which is this: if (*comp) is looking for matches of a particular
- * substring in request headers (let's say it's looking for a particular
- * cookie name in the Set-Cookie headers), then maybe it wants to be
- * able to stop searching early as soon as it finds that one and move
- * on to the next key.  That's only an optimization of course, but changing
- * the behavior of this function would mean that any code that tried
- * to do that would stop working right.
- *
- * Sigh.  --JCW, 06/28/02
- */
-APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp,
-                               void *rec, const apr_table_t *t, va_list vp)
-{
-    char *argp;
-    apr_table_entry_t *elts = (apr_table_entry_t *) t->a.elts;
-    int vdorv = 1;
-
-    argp = va_arg(vp, char *);
-    do {
-        int rv = 1, i;
-        if (argp) {
-            /* Scan for entries that match the next key */
-            int hash = TABLE_HASH(argp);
-            if (TABLE_INDEX_IS_INITIALIZED(t, hash)) {
-                apr_uint32_t checksum;
-                COMPUTE_KEY_CHECKSUM(argp, checksum);
-                for (i = t->index_first[hash];
-                     rv && (i <= t->index_last[hash]); ++i) {
-                    if (elts[i].key && (checksum == elts[i].key_checksum) &&
-                                        !strcasecmp(elts[i].key, argp)) {
-                        rv = (*comp) (rec, elts[i].key, elts[i].val);
-                    }
-                }
-            }
-        }
-        else {
-            /* Scan the entire table */
-            for (i = 0; rv && (i < t->a.nelts); ++i) {
-                if (elts[i].key) {
-                    rv = (*comp) (rec, elts[i].key, elts[i].val);
-                }
-            }
-        }
-        if (rv == 0) {
-            vdorv = 0;
-        }
-    } while (argp && ((argp = va_arg(vp, char *)) != NULL));
-
-    return vdorv;
-}
-
-static apr_table_entry_t **table_mergesort(apr_pool_t *pool,
-                                           apr_table_entry_t **values, 
-                                           apr_size_t n)
-{
-    /* Bottom-up mergesort, based on design in Sedgewick's "Algorithms
-     * in C," chapter 8
-     */
-    apr_table_entry_t **values_tmp =
-        (apr_table_entry_t **)apr_palloc(pool, n * sizeof(apr_table_entry_t*));
-    apr_size_t i;
-    apr_size_t blocksize;
-
-    /* First pass: sort pairs of elements (blocksize=1) */
-    for (i = 0; i + 1 < n; i += 2) {
-        if (strcasecmp(values[i]->key, values[i + 1]->key) > 0) {
-            apr_table_entry_t *swap = values[i];
-            values[i] = values[i + 1];
-            values[i + 1] = swap;
-        }
-    }
-
-    /* Merge successively larger blocks */
-    blocksize = 2;
-    while (blocksize < n) {
-        apr_table_entry_t **dst = values_tmp;
-        apr_size_t next_start;
-        apr_table_entry_t **swap;
-
-        /* Merge consecutive pairs blocks of the next blocksize.
-         * Within a block, elements are in sorted order due to
-         * the previous iteration.
-         */
-        for (next_start = 0; next_start + blocksize < n;
-             next_start += (blocksize + blocksize)) {
-
-            apr_size_t block1_start = next_start;
-            apr_size_t block2_start = block1_start + blocksize;
-            apr_size_t block1_end = block2_start;
-            apr_size_t block2_end = block2_start + blocksize;
-            if (block2_end > n) {
-                /* The last block may be smaller than blocksize */
-                block2_end = n;
-            }
-            for (;;) {
-
-                /* Merge the next two blocks:
-                 * Pick the smaller of the next element from
-                 * block 1 and the next element from block 2.
-                 * Once either of the blocks is emptied, copy
-                 * over all the remaining elements from the
-                 * other block
-                 */
-                if (block1_start == block1_end) {
-                    for (; block2_start < block2_end; block2_start++) {
-                        *dst++ = values[block2_start];
-                    }
-                    break;
-                }
-                else if (block2_start == block2_end) {
-                    for (; block1_start < block1_end; block1_start++) {
-                        *dst++ = values[block1_start];
-                    }
-                    break;
-                }
-                if (strcasecmp(values[block1_start]->key,
-                               values[block2_start]->key) > 0) {
-                    *dst++ = values[block2_start++];
-                }
-                else {
-                    *dst++ = values[block1_start++];
-                }
-            }
-        }
-
-        /* If n is not a multiple of 2*blocksize, some elements
-         * will be left over at the end of the array.
-         */
-        for (i = dst - values_tmp; i < n; i++) {
-            values_tmp[i] = values[i];
-        }
-
-        /* The output array of this pass becomes the input
-         * array of the next pass, and vice versa
-         */
-        swap = values_tmp;
-        values_tmp = values;
-        values = swap;
-
-        blocksize += blocksize;
-    }
-
-    return values;
-}
-
-APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags)
-{
-    apr_table_entry_t **sort_array;
-    apr_table_entry_t **sort_next;
-    apr_table_entry_t **sort_end;
-    apr_table_entry_t *table_next;
-    apr_table_entry_t **last;
-    int i;
-    int dups_found;
-
-    if (t->a.nelts <= 1) {
-        return;
-    }
-
-    /* Copy pointers to all the table elements into an
-     * array and sort to allow for easy detection of
-     * duplicate keys
-     */
-    sort_array = (apr_table_entry_t **)
-        apr_palloc(t->a.pool, t->a.nelts * sizeof(apr_table_entry_t*));
-    sort_next = sort_array;
-    table_next = (apr_table_entry_t *)t->a.elts;
-    i = t->a.nelts;
-    do {
-        *sort_next++ = table_next++;
-    } while (--i);
-
-    /* Note: the merge is done with mergesort instead of quicksort
-     * because mergesort is a stable sort and runs in n*log(n)
-     * time regardless of its inputs (quicksort is quadratic in
-     * the worst case)
-     */
-    sort_array = table_mergesort(t->a.pool, sort_array, t->a.nelts);
-
-    /* Process any duplicate keys */
-    dups_found = 0;
-    sort_next = sort_array;
-    sort_end = sort_array + t->a.nelts;
-    last = sort_next++;
-    while (sort_next < sort_end) {
-        if (((*sort_next)->key_checksum == (*last)->key_checksum) &&
-            !strcasecmp((*sort_next)->key, (*last)->key)) {
-            apr_table_entry_t **dup_last = sort_next + 1;
-            dups_found = 1;
-            while ((dup_last < sort_end) &&
-                   ((*dup_last)->key_checksum == (*last)->key_checksum) &&
-                   !strcasecmp((*dup_last)->key, (*last)->key)) {
-                dup_last++;
-            }
-            dup_last--; /* Elements from last through dup_last, inclusive,
-                         * all have the same key
-                         */
-            if (flags == APR_OVERLAP_TABLES_MERGE) {
-                apr_size_t len = 0;
-                apr_table_entry_t **next = last;
-                char *new_val;
-                char *val_dst;
-                do {
-                    len += strlen((*next)->val);
-                    len += 2; /* for ", " or trailing null */
-                } while (++next <= dup_last);
-                new_val = (char *)apr_palloc(t->a.pool, len);
-                val_dst = new_val;
-                next = last;
-                for (;;) {
-                    strcpy(val_dst, (*next)->val);
-                    val_dst += strlen((*next)->val);
-                    next++;
-                    if (next > dup_last) {
-                        *val_dst = 0;
-                        break;
-                    }
-                    else {
-                        *val_dst++ = ',';
-                        *val_dst++ = ' ';
-                    }
-                }
-                (*last)->val = new_val;
-            }
-            else { /* overwrite */
-                (*last)->val = (*dup_last)->val;
-            }
-            do {
-                (*sort_next)->key = NULL;
-            } while (++sort_next <= dup_last);
-        }
-        else {
-            last = sort_next++;
-        }
-    }
-
-    /* Shift elements to the left to fill holes left by removing duplicates */
-    if (dups_found) {
-        apr_table_entry_t *src = (apr_table_entry_t *)t->a.elts;
-        apr_table_entry_t *dst = (apr_table_entry_t *)t->a.elts;
-        apr_table_entry_t *last_elt = src + t->a.nelts;
-        do {
-            if (src->key) {
-                *dst++ = *src;
-            }
-        } while (++src < last_elt);
-        t->a.nelts -= (int)(last_elt - dst);
-    }
-
-    table_reindex(t);
-}
-
-static void apr_table_cat(apr_table_t *t, const apr_table_t *s)
-{
-    const int n = t->a.nelts;
-    register int idx;
-
-    apr_array_cat(&t->a,&s->a);
-
-    if (n == 0) {
-        memcpy(t->index_first,s->index_first,sizeof(int) * TABLE_HASH_SIZE);
-        memcpy(t->index_last, s->index_last, sizeof(int) * TABLE_HASH_SIZE);
-        t->index_initialized = s->index_initialized;
-        return;
-    }
-
-    for (idx = 0; idx < TABLE_HASH_SIZE; ++idx) {
-        if (TABLE_INDEX_IS_INITIALIZED(s, idx)) {
-            t->index_last[idx] = s->index_last[idx] + n;
-            if (!TABLE_INDEX_IS_INITIALIZED(t, idx)) {
-                t->index_first[idx] = s->index_first[idx] + n;
-            }
-        }
-    }
-
-    t->index_initialized |= s->index_initialized;
-}
-
-APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b,
-				    unsigned flags)
-{
-    if (a->a.nelts + b->a.nelts == 0) {
-        return;
-    }
-
-#if APR_POOL_DEBUG
-    /* Since the keys and values are not copied, it's required that
-     * b->a.pool has a lifetime at least as long as a->a.pool. */
-    if (!apr_pool_is_ancestor(b->a.pool, a->a.pool)) {
-        fprintf(stderr, "apr_table_overlap: b's pool is not an ancestor of a's\n");
-        abort();
-    }
-#endif
-
-    apr_table_cat(a, b);
-
-    apr_table_compress(a, flags);
-}

Copied: vendor/apache/apr/1.5.2/tables/apr_tables.c (from rev 9273, vendor/apache/apr/dist/tables/apr_tables.c)
===================================================================
--- vendor/apache/apr/1.5.2/tables/apr_tables.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/tables/apr_tables.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1296 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Resource allocation code... the code here is responsible for making
+ * sure that nothing leaks.
+ *
+ * rst --- 4/95 --- 6/95
+ */
+
+#include "apr_private.h"
+
+#include "apr_general.h"
+#include "apr_pools.h"
+#include "apr_tables.h"
+#include "apr_strings.h"
+#include "apr_lib.h"
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+#if APR_HAVE_STRINGS_H
+#include <strings.h>
+#endif
+
+#if (APR_POOL_DEBUG || defined(MAKE_TABLE_PROFILE)) && APR_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+
+/*****************************************************************
+ * This file contains array and apr_table_t functions only.
+ */
+
+/*****************************************************************
+ *
+ * The 'array' functions...
+ */
+
+static void make_array_core(apr_array_header_t *res, apr_pool_t *p,
+			    int nelts, int elt_size, int clear)
+{
+    /*
+     * Assure sanity if someone asks for
+     * array of zero elts.
+     */
+    if (nelts < 1) {
+        nelts = 1;
+    }
+
+    if (clear) {
+        res->elts = apr_pcalloc(p, nelts * elt_size);
+    }
+    else {
+        res->elts = apr_palloc(p, nelts * elt_size);
+    }
+
+    res->pool = p;
+    res->elt_size = elt_size;
+    res->nelts = 0;		/* No active elements yet... */
+    res->nalloc = nelts;	/* ...but this many allocated */
+}
+
+APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a)
+{
+    return ((a == NULL) || (a->nelts == 0));
+}
+
+APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p,
+						int nelts, int elt_size)
+{
+    apr_array_header_t *res;
+
+    res = (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t));
+    make_array_core(res, p, nelts, elt_size, 1);
+    return res;
+}
+
+APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr)
+{
+    arr->nelts = 0;
+}
+
+APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr)
+{
+    if (apr_is_empty_array(arr)) {
+        return NULL;
+    }
+   
+    return arr->elts + (arr->elt_size * (--arr->nelts));
+}
+
+APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr)
+{
+    if (arr->nelts == arr->nalloc) {
+        int new_size = (arr->nalloc <= 0) ? 1 : arr->nalloc * 2;
+        char *new_data;
+
+        new_data = apr_palloc(arr->pool, arr->elt_size * new_size);
+
+        memcpy(new_data, arr->elts, arr->nalloc * arr->elt_size);
+        memset(new_data + arr->nalloc * arr->elt_size, 0,
+               arr->elt_size * (new_size - arr->nalloc));
+        arr->elts = new_data;
+        arr->nalloc = new_size;
+    }
+
+    ++arr->nelts;
+    return arr->elts + (arr->elt_size * (arr->nelts - 1));
+}
+
+static void *apr_array_push_noclear(apr_array_header_t *arr)
+{
+    if (arr->nelts == arr->nalloc) {
+        int new_size = (arr->nalloc <= 0) ? 1 : arr->nalloc * 2;
+        char *new_data;
+
+        new_data = apr_palloc(arr->pool, arr->elt_size * new_size);
+
+        memcpy(new_data, arr->elts, arr->nalloc * arr->elt_size);
+        arr->elts = new_data;
+        arr->nalloc = new_size;
+    }
+
+    ++arr->nelts;
+    return arr->elts + (arr->elt_size * (arr->nelts - 1));
+}
+
+APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst,
+			       const apr_array_header_t *src)
+{
+    int elt_size = dst->elt_size;
+
+    if (dst->nelts + src->nelts > dst->nalloc) {
+	int new_size = (dst->nalloc <= 0) ? 1 : dst->nalloc * 2;
+	char *new_data;
+
+	while (dst->nelts + src->nelts > new_size) {
+	    new_size *= 2;
+	}
+
+	new_data = apr_pcalloc(dst->pool, elt_size * new_size);
+	memcpy(new_data, dst->elts, dst->nalloc * elt_size);
+
+	dst->elts = new_data;
+	dst->nalloc = new_size;
+    }
+
+    memcpy(dst->elts + dst->nelts * elt_size, src->elts,
+	   elt_size * src->nelts);
+    dst->nelts += src->nelts;
+}
+
+APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p,
+						const apr_array_header_t *arr)
+{
+    apr_array_header_t *res =
+        (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t));
+    make_array_core(res, p, arr->nalloc, arr->elt_size, 0);
+
+    memcpy(res->elts, arr->elts, arr->elt_size * arr->nelts);
+    res->nelts = arr->nelts;
+    memset(res->elts + res->elt_size * res->nelts, 0,
+           res->elt_size * (res->nalloc - res->nelts));
+    return res;
+}
+
+/* This cute function copies the array header *only*, but arranges
+ * for the data section to be copied on the first push or arraycat.
+ * It's useful when the elements of the array being copied are
+ * read only, but new stuff *might* get added on the end; we have the
+ * overhead of the full copy only where it is really needed.
+ */
+
+static APR_INLINE void copy_array_hdr_core(apr_array_header_t *res,
+					   const apr_array_header_t *arr)
+{
+    res->elts = arr->elts;
+    res->elt_size = arr->elt_size;
+    res->nelts = arr->nelts;
+    res->nalloc = arr->nelts;	/* Force overflow on push */
+}
+
+APR_DECLARE(apr_array_header_t *)
+    apr_array_copy_hdr(apr_pool_t *p,
+		       const apr_array_header_t *arr)
+{
+    apr_array_header_t *res;
+
+    res = (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t));
+    res->pool = p;
+    copy_array_hdr_core(res, arr);
+    return res;
+}
+
+/* The above is used here to avoid consing multiple new array bodies... */
+
+APR_DECLARE(apr_array_header_t *)
+    apr_array_append(apr_pool_t *p,
+		      const apr_array_header_t *first,
+		      const apr_array_header_t *second)
+{
+    apr_array_header_t *res = apr_array_copy_hdr(p, first);
+
+    apr_array_cat(res, second);
+    return res;
+}
+
+/* apr_array_pstrcat generates a new string from the apr_pool_t containing
+ * the concatenated sequence of substrings referenced as elements within
+ * the array.  The string will be empty if all substrings are empty or null,
+ * or if there are no elements in the array.
+ * If sep is non-NUL, it will be inserted between elements as a separator.
+ */
+APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p,
+				     const apr_array_header_t *arr,
+				     const char sep)
+{
+    char *cp, *res, **strpp;
+    apr_size_t len;
+    int i;
+
+    if (arr->nelts <= 0 || arr->elts == NULL) {    /* Empty table? */
+        return (char *) apr_pcalloc(p, 1);
+    }
+
+    /* Pass one --- find length of required string */
+
+    len = 0;
+    for (i = 0, strpp = (char **) arr->elts; ; ++strpp) {
+        if (strpp && *strpp != NULL) {
+            len += strlen(*strpp);
+        }
+        if (++i >= arr->nelts) {
+            break;
+	}
+        if (sep) {
+            ++len;
+	}
+    }
+
+    /* Allocate the required string */
+
+    res = (char *) apr_palloc(p, len + 1);
+    cp = res;
+
+    /* Pass two --- copy the argument strings into the result space */
+
+    for (i = 0, strpp = (char **) arr->elts; ; ++strpp) {
+        if (strpp && *strpp != NULL) {
+            len = strlen(*strpp);
+            memcpy(cp, *strpp, len);
+            cp += len;
+        }
+        if (++i >= arr->nelts) {
+            break;
+	}
+        if (sep) {
+            *cp++ = sep;
+	}
+    }
+
+    *cp = '\0';
+
+    /* Return the result string */
+
+    return res;
+}
+
+
+/*****************************************************************
+ *
+ * The "table" functions.
+ */
+
+#if APR_CHARSET_EBCDIC
+#define CASE_MASK 0xbfbfbfbf
+#else
+#define CASE_MASK 0xdfdfdfdf
+#endif
+
+#define TABLE_HASH_SIZE 32
+#define TABLE_INDEX_MASK 0x1f
+#define TABLE_HASH(key)  (TABLE_INDEX_MASK & *(unsigned char *)(key))
+#define TABLE_INDEX_IS_INITIALIZED(t, i) ((t)->index_initialized & (1 << (i)))
+#define TABLE_SET_INDEX_INITIALIZED(t, i) ((t)->index_initialized |= (1 << (i)))
+
+/* Compute the "checksum" for a key, consisting of the first
+ * 4 bytes, normalized for case-insensitivity and packed into
+ * an int...this checksum allows us to do a single integer
+ * comparison as a fast check to determine whether we can
+ * skip a strcasecmp
+ */
+#define COMPUTE_KEY_CHECKSUM(key, checksum)    \
+{                                              \
+    const char *k = (key);                     \
+    apr_uint32_t c = (apr_uint32_t)*k;         \
+    (checksum) = c;                            \
+    (checksum) <<= 8;                          \
+    if (c) {                                   \
+        c = (apr_uint32_t)*++k;                \
+        checksum |= c;                         \
+    }                                          \
+    (checksum) <<= 8;                          \
+    if (c) {                                   \
+        c = (apr_uint32_t)*++k;                \
+        checksum |= c;                         \
+    }                                          \
+    (checksum) <<= 8;                          \
+    if (c) {                                   \
+        c = (apr_uint32_t)*++k;                \
+        checksum |= c;                         \
+    }                                          \
+    checksum &= CASE_MASK;                     \
+}
+
+/** The opaque string-content table type */
+struct apr_table_t {
+    /* This has to be first to promote backwards compatibility with
+     * older modules which cast a apr_table_t * to an apr_array_header_t *...
+     * they should use the apr_table_elts() function for most of the
+     * cases they do this for.
+     */
+    /** The underlying array for the table */
+    apr_array_header_t a;
+#ifdef MAKE_TABLE_PROFILE
+    /** Who created the array. */
+    void *creator;
+#endif
+    /* An index to speed up table lookups.  The way this works is:
+     *   - Hash the key into the index:
+     *     - index_first[TABLE_HASH(key)] is the offset within
+     *       the table of the first entry with that key
+     *     - index_last[TABLE_HASH(key)] is the offset within
+     *       the table of the last entry with that key
+     *   - If (and only if) there is no entry in the table whose
+     *     key hashes to index element i, then the i'th bit
+     *     of index_initialized will be zero.  (Check this before
+     *     trying to use index_first[i] or index_last[i]!)
+     */
+    apr_uint32_t index_initialized;
+    int index_first[TABLE_HASH_SIZE];
+    int index_last[TABLE_HASH_SIZE];
+};
+
+/* keep state for apr_table_getm() */
+typedef struct
+{
+    apr_pool_t *p;
+    const char *first;
+    apr_array_header_t *merged;
+} table_getm_t;
+
+/*
+ * NOTICE: if you tweak this you should look at is_empty_table() 
+ * and table_elts() in alloc.h
+ */
+#ifdef MAKE_TABLE_PROFILE
+static apr_table_entry_t *do_table_push(const char *func, apr_table_t *t)
+{
+    if (t->a.nelts == t->a.nalloc) {
+        fprintf(stderr, "%s: table created by %p hit limit of %u\n",
+                func ? func : "table_push", t->creator, t->a.nalloc);
+    }
+    return (apr_table_entry_t *) apr_array_push_noclear(&t->a);
+}
+#if defined(__GNUC__) && __GNUC__ >= 2
+#define table_push(t) do_table_push(__FUNCTION__, t)
+#else
+#define table_push(t) do_table_push(NULL, t)
+#endif
+#else /* MAKE_TABLE_PROFILE */
+#define table_push(t)	((apr_table_entry_t *) apr_array_push_noclear(&(t)->a))
+#endif /* MAKE_TABLE_PROFILE */
+
+APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t)
+{
+    return (const apr_array_header_t *)t;
+}
+
+APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t)
+{
+    return ((t == NULL) || (t->a.nelts == 0));
+}
+
+APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts)
+{
+    apr_table_t *t = apr_palloc(p, sizeof(apr_table_t));
+
+    make_array_core(&t->a, p, nelts, sizeof(apr_table_entry_t), 0);
+#ifdef MAKE_TABLE_PROFILE
+    t->creator = __builtin_return_address(0);
+#endif
+    t->index_initialized = 0;
+    return t;
+}
+
+APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p, const apr_table_t *t)
+{
+    apr_table_t *new = apr_palloc(p, sizeof(apr_table_t));
+
+#if APR_POOL_DEBUG
+    /* we don't copy keys and values, so it's necessary that t->a.pool
+     * have a life span at least as long as p
+     */
+    if (!apr_pool_is_ancestor(t->a.pool, p)) {
+	fprintf(stderr, "apr_table_copy: t's pool is not an ancestor of p\n");
+	abort();
+    }
+#endif
+    make_array_core(&new->a, p, t->a.nalloc, sizeof(apr_table_entry_t), 0);
+    memcpy(new->a.elts, t->a.elts, t->a.nelts * sizeof(apr_table_entry_t));
+    new->a.nelts = t->a.nelts;
+    memcpy(new->index_first, t->index_first, sizeof(int) * TABLE_HASH_SIZE);
+    memcpy(new->index_last, t->index_last, sizeof(int) * TABLE_HASH_SIZE);
+    new->index_initialized = t->index_initialized;
+    return new;
+}
+
+APR_DECLARE(apr_table_t *) apr_table_clone(apr_pool_t *p, const apr_table_t *t)
+{
+    const apr_array_header_t *array = apr_table_elts(t);
+    apr_table_entry_t *elts = (apr_table_entry_t *) array->elts;
+    apr_table_t *new = apr_table_make(p, array->nelts);
+    int i;
+
+    for (i = 0; i < array->nelts; i++) {
+        apr_table_add(new, elts[i].key, elts[i].val);
+    }
+
+    return new;
+}
+
+static void table_reindex(apr_table_t *t)
+{
+    int i;
+    int hash;
+    apr_table_entry_t *next_elt = (apr_table_entry_t *) t->a.elts;
+
+    t->index_initialized = 0;
+    for (i = 0; i < t->a.nelts; i++, next_elt++) {
+        hash = TABLE_HASH(next_elt->key);
+        t->index_last[hash] = i;
+        if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+            t->index_first[hash] = i;
+            TABLE_SET_INDEX_INITIALIZED(t, hash);
+        }
+    }
+}
+
+APR_DECLARE(void) apr_table_clear(apr_table_t *t)
+{
+    t->a.nelts = 0;
+    t->index_initialized = 0;
+}
+
+APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key)
+{
+    apr_table_entry_t *next_elt;
+    apr_table_entry_t *end_elt;
+    apr_uint32_t checksum;
+    int hash;
+
+    if (key == NULL) {
+	return NULL;
+    }
+
+    hash = TABLE_HASH(key);
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        return NULL;
+    }
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
+    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
+
+    for (; next_elt <= end_elt; next_elt++) {
+	if ((checksum == next_elt->key_checksum) &&
+            !strcasecmp(next_elt->key, key)) {
+	    return next_elt->val;
+	}
+    }
+
+    return NULL;
+}
+
+APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key,
+                                const char *val)
+{
+    apr_table_entry_t *next_elt;
+    apr_table_entry_t *end_elt;
+    apr_table_entry_t *table_end;
+    apr_uint32_t checksum;
+    int hash;
+
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    hash = TABLE_HASH(key);
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        t->index_first[hash] = t->a.nelts;
+        TABLE_SET_INDEX_INITIALIZED(t, hash);
+        goto add_new_elt;
+    }
+    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
+    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
+    table_end =((apr_table_entry_t *) t->a.elts) + t->a.nelts;
+
+    for (; next_elt <= end_elt; next_elt++) {
+	if ((checksum == next_elt->key_checksum) &&
+            !strcasecmp(next_elt->key, key)) {
+
+            /* Found an existing entry with the same key, so overwrite it */
+
+            int must_reindex = 0;
+            apr_table_entry_t *dst_elt = NULL;
+
+            next_elt->val = apr_pstrdup(t->a.pool, val);
+
+            /* Remove any other instances of this key */
+            for (next_elt++; next_elt <= end_elt; next_elt++) {
+                if ((checksum == next_elt->key_checksum) &&
+                    !strcasecmp(next_elt->key, key)) {
+                    t->a.nelts--;
+                    if (!dst_elt) {
+                        dst_elt = next_elt;
+                    }
+                }
+                else if (dst_elt) {
+                    *dst_elt++ = *next_elt;
+                    must_reindex = 1;
+                }
+            }
+
+            /* If we've removed anything, shift over the remainder
+             * of the table (note that the previous loop didn't
+             * run to the end of the table, just to the last match
+             * for the index)
+             */
+            if (dst_elt) {
+                for (; next_elt < table_end; next_elt++) {
+                    *dst_elt++ = *next_elt;
+                }
+                must_reindex = 1;
+            }
+            if (must_reindex) {
+                table_reindex(t);
+            }
+            return;
+        }
+    }
+
+add_new_elt:
+    t->index_last[hash] = t->a.nelts;
+    next_elt = (apr_table_entry_t *) table_push(t);
+    next_elt->key = apr_pstrdup(t->a.pool, key);
+    next_elt->val = apr_pstrdup(t->a.pool, val);
+    next_elt->key_checksum = checksum;
+}
+
+APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key,
+                                 const char *val)
+{
+    apr_table_entry_t *next_elt;
+    apr_table_entry_t *end_elt;
+    apr_table_entry_t *table_end;
+    apr_uint32_t checksum;
+    int hash;
+
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    hash = TABLE_HASH(key);
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        t->index_first[hash] = t->a.nelts;
+        TABLE_SET_INDEX_INITIALIZED(t, hash);
+        goto add_new_elt;
+    }
+    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
+    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
+    table_end =((apr_table_entry_t *) t->a.elts) + t->a.nelts;
+
+    for (; next_elt <= end_elt; next_elt++) {
+	if ((checksum == next_elt->key_checksum) &&
+            !strcasecmp(next_elt->key, key)) {
+
+            /* Found an existing entry with the same key, so overwrite it */
+
+            int must_reindex = 0;
+            apr_table_entry_t *dst_elt = NULL;
+
+            next_elt->val = (char *)val;
+
+            /* Remove any other instances of this key */
+            for (next_elt++; next_elt <= end_elt; next_elt++) {
+                if ((checksum == next_elt->key_checksum) &&
+                    !strcasecmp(next_elt->key, key)) {
+                    t->a.nelts--;
+                    if (!dst_elt) {
+                        dst_elt = next_elt;
+                    }
+                }
+                else if (dst_elt) {
+                    *dst_elt++ = *next_elt;
+                    must_reindex = 1;
+                }
+            }
+
+            /* If we've removed anything, shift over the remainder
+             * of the table (note that the previous loop didn't
+             * run to the end of the table, just to the last match
+             * for the index)
+             */
+            if (dst_elt) {
+                for (; next_elt < table_end; next_elt++) {
+                    *dst_elt++ = *next_elt;
+                }
+                must_reindex = 1;
+            }
+            if (must_reindex) {
+                table_reindex(t);
+            }
+            return;
+        }
+    }
+
+add_new_elt:
+    t->index_last[hash] = t->a.nelts;
+    next_elt = (apr_table_entry_t *) table_push(t);
+    next_elt->key = (char *)key;
+    next_elt->val = (char *)val;
+    next_elt->key_checksum = checksum;
+}
+
+APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key)
+{
+    apr_table_entry_t *next_elt;
+    apr_table_entry_t *end_elt;
+    apr_table_entry_t *dst_elt;
+    apr_uint32_t checksum;
+    int hash;
+    int must_reindex;
+
+    hash = TABLE_HASH(key);
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        return;
+    }
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];
+    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
+    must_reindex = 0;
+    for (; next_elt <= end_elt; next_elt++) {
+	if ((checksum == next_elt->key_checksum) &&
+            !strcasecmp(next_elt->key, key)) {
+
+            /* Found a match: remove this entry, plus any additional
+             * matches for the same key that might follow
+             */
+            apr_table_entry_t *table_end = ((apr_table_entry_t *) t->a.elts) +
+                t->a.nelts;
+            t->a.nelts--;
+            dst_elt = next_elt;
+            for (next_elt++; next_elt <= end_elt; next_elt++) {
+                if ((checksum == next_elt->key_checksum) &&
+                    !strcasecmp(next_elt->key, key)) {
+                    t->a.nelts--;
+                }
+                else {
+                    *dst_elt++ = *next_elt;
+                }
+            }
+
+            /* Shift over the remainder of the table (note that
+             * the previous loop didn't run to the end of the table,
+             * just to the last match for the index)
+             */
+            for (; next_elt < table_end; next_elt++) {
+                *dst_elt++ = *next_elt;
+            }
+            must_reindex = 1;
+            break;
+        }
+    }
+    if (must_reindex) {
+        table_reindex(t);
+    }
+}
+
+APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key,
+				 const char *val)
+{
+    apr_table_entry_t *next_elt;
+    apr_table_entry_t *end_elt;
+    apr_uint32_t checksum;
+    int hash;
+
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    hash = TABLE_HASH(key);
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        t->index_first[hash] = t->a.nelts;
+        TABLE_SET_INDEX_INITIALIZED(t, hash);
+        goto add_new_elt;
+    }
+    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];
+    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
+
+    for (; next_elt <= end_elt; next_elt++) {
+	if ((checksum == next_elt->key_checksum) &&
+            !strcasecmp(next_elt->key, key)) {
+
+            /* Found an existing entry with the same key, so merge with it */
+	    next_elt->val = apr_pstrcat(t->a.pool, next_elt->val, ", ",
+                                        val, NULL);
+            return;
+        }
+    }
+
+add_new_elt:
+    t->index_last[hash] = t->a.nelts;
+    next_elt = (apr_table_entry_t *) table_push(t);
+    next_elt->key = apr_pstrdup(t->a.pool, key);
+    next_elt->val = apr_pstrdup(t->a.pool, val);
+    next_elt->key_checksum = checksum;
+}
+
+APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key,
+				  const char *val)
+{
+    apr_table_entry_t *next_elt;
+    apr_table_entry_t *end_elt;
+    apr_uint32_t checksum;
+    int hash;
+
+#if APR_POOL_DEBUG
+    {
+	apr_pool_t *pool;
+	pool = apr_pool_find(key);
+	if ((pool != (apr_pool_t *)key)
+            && (!apr_pool_is_ancestor(pool, t->a.pool))) {
+	    fprintf(stderr, "apr_table_mergen: key not in ancestor pool of t\n");
+	    abort();
+	}
+	pool = apr_pool_find(val);
+	if ((pool != (apr_pool_t *)val)
+            && (!apr_pool_is_ancestor(pool, t->a.pool))) {
+	    fprintf(stderr, "apr_table_mergen: val not in ancestor pool of t\n");
+	    abort();
+	}
+    }
+#endif
+
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    hash = TABLE_HASH(key);
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        t->index_first[hash] = t->a.nelts;
+        TABLE_SET_INDEX_INITIALIZED(t, hash);
+        goto add_new_elt;
+    }
+    next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];;
+    end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash];
+
+    for (; next_elt <= end_elt; next_elt++) {
+	if ((checksum == next_elt->key_checksum) &&
+            !strcasecmp(next_elt->key, key)) {
+
+            /* Found an existing entry with the same key, so merge with it */
+	    next_elt->val = apr_pstrcat(t->a.pool, next_elt->val, ", ",
+                                        val, NULL);
+            return;
+        }
+    }
+
+add_new_elt:
+    t->index_last[hash] = t->a.nelts;
+    next_elt = (apr_table_entry_t *) table_push(t);
+    next_elt->key = (char *)key;
+    next_elt->val = (char *)val;
+    next_elt->key_checksum = checksum;
+}
+
+APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key,
+			       const char *val)
+{
+    apr_table_entry_t *elts;
+    apr_uint32_t checksum;
+    int hash;
+
+    hash = TABLE_HASH(key);
+    t->index_last[hash] = t->a.nelts;
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        t->index_first[hash] = t->a.nelts;
+        TABLE_SET_INDEX_INITIALIZED(t, hash);
+    }
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    elts = (apr_table_entry_t *) table_push(t);
+    elts->key = apr_pstrdup(t->a.pool, key);
+    elts->val = apr_pstrdup(t->a.pool, val);
+    elts->key_checksum = checksum;
+}
+
+APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key,
+				const char *val)
+{
+    apr_table_entry_t *elts;
+    apr_uint32_t checksum;
+    int hash;
+
+#if APR_POOL_DEBUG
+    {
+	if (!apr_pool_is_ancestor(apr_pool_find(key), t->a.pool)) {
+	    fprintf(stderr, "apr_table_addn: key not in ancestor pool of t\n");
+	    abort();
+	}
+	if (!apr_pool_is_ancestor(apr_pool_find(val), t->a.pool)) {
+	    fprintf(stderr, "apr_table_addn: val not in ancestor pool of t\n");
+	    abort();
+	}
+    }
+#endif
+
+    hash = TABLE_HASH(key);
+    t->index_last[hash] = t->a.nelts;
+    if (!TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+        t->index_first[hash] = t->a.nelts;
+        TABLE_SET_INDEX_INITIALIZED(t, hash);
+    }
+    COMPUTE_KEY_CHECKSUM(key, checksum);
+    elts = (apr_table_entry_t *) table_push(t);
+    elts->key = (char *)key;
+    elts->val = (char *)val;
+    elts->key_checksum = checksum;
+}
+
+APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p,
+					     const apr_table_t *overlay,
+					     const apr_table_t *base)
+{
+    apr_table_t *res;
+
+#if APR_POOL_DEBUG
+    /* we don't copy keys and values, so it's necessary that
+     * overlay->a.pool and base->a.pool have a life span at least
+     * as long as p
+     */
+    if (!apr_pool_is_ancestor(overlay->a.pool, p)) {
+	fprintf(stderr,
+		"apr_table_overlay: overlay's pool is not an ancestor of p\n");
+	abort();
+    }
+    if (!apr_pool_is_ancestor(base->a.pool, p)) {
+	fprintf(stderr,
+		"apr_table_overlay: base's pool is not an ancestor of p\n");
+	abort();
+    }
+#endif
+
+    res = apr_palloc(p, sizeof(apr_table_t));
+    /* behave like append_arrays */
+    res->a.pool = p;
+    copy_array_hdr_core(&res->a, &overlay->a);
+    apr_array_cat(&res->a, &base->a);
+    table_reindex(res);
+    return res;
+}
+
+/* And now for something completely abstract ...
+
+ * For each key value given as a vararg:
+ *   run the function pointed to as
+ *     int comp(void *r, char *key, char *value);
+ *   on each valid key-value pair in the apr_table_t t that matches the vararg key,
+ *   or once for every valid key-value pair if the vararg list is empty,
+ *   until the function returns false (0) or we finish the table.
+ *
+ * Note that we restart the traversal for each vararg, which means that
+ * duplicate varargs will result in multiple executions of the function
+ * for each matching key.  Note also that if the vararg list is empty,
+ * only one traversal will be made and will cut short if comp returns 0.
+ *
+ * Note that the table_get and table_merge functions assume that each key in
+ * the apr_table_t is unique (i.e., no multiple entries with the same key).  This
+ * function does not make that assumption, since it (unfortunately) isn't
+ * true for some of Apache's tables.
+ *
+ * Note that rec is simply passed-on to the comp function, so that the
+ * caller can pass additional info for the task.
+ *
+ * ADDENDUM for apr_table_vdo():
+ * 
+ * The caching api will allow a user to walk the header values:
+ *
+ * apr_status_t apr_cache_el_header_walk(apr_cache_el *el, 
+ *    int (*comp)(void *, const char *, const char *), void *rec, ...);
+ *
+ * So it can be ..., however from there I use a  callback that use a va_list:
+ *
+ * apr_status_t (*cache_el_header_walk)(apr_cache_el *el, 
+ *    int (*comp)(void *, const char *, const char *), void *rec, va_list);
+ *
+ * To pass those ...'s on down to the actual module that will handle walking
+ * their headers, in the file case this is actually just an apr_table - and
+ * rather than reimplementing apr_table_do (which IMHO would be bad) I just
+ * called it with the va_list. For mod_shmem_cache I don't need it since I
+ * can't use apr_table's, but mod_file_cache should (though a good hash would
+ * be better, but that's a different issue :). 
+ *
+ * So to make mod_file_cache easier to maintain, it's a good thing
+ */
+APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp,
+                                     void *rec, const apr_table_t *t, ...)
+{
+    int rv;
+
+    va_list vp;
+    va_start(vp, t);
+    rv = apr_table_vdo(comp, rec, t, vp);
+    va_end(vp);
+
+    return rv;
+} 
+
+/* XXX: do the semantics of this routine make any sense?  Right now,
+ * if the caller passed in a non-empty va_list of keys to search for,
+ * the "early termination" facility only terminates on *that* key; other
+ * keys will continue to process.  Note that this only has any effect
+ * at all if there are multiple entries in the table with the same key,
+ * otherwise the called function can never effectively early-terminate
+ * this function, as the zero return value is effectively ignored.
+ *
+ * Note also that this behavior is at odds with the behavior seen if an
+ * empty va_list is passed in -- in that case, a zero return value terminates
+ * the entire apr_table_vdo (which is what I think should happen in
+ * both cases).
+ *
+ * If nobody objects soon, I'm going to change the order of the nested
+ * loops in this function so that any zero return value from the (*comp)
+ * function will cause a full termination of apr_table_vdo.  I'm hesitant
+ * at the moment because these (funky) semantics have been around for a
+ * very long time, and although Apache doesn't seem to use them at all,
+ * some third-party vendor might.  I can only think of one possible reason
+ * the existing semantics would make any sense, and it's very Apache-centric,
+ * which is this: if (*comp) is looking for matches of a particular
+ * substring in request headers (let's say it's looking for a particular
+ * cookie name in the Set-Cookie headers), then maybe it wants to be
+ * able to stop searching early as soon as it finds that one and move
+ * on to the next key.  That's only an optimization of course, but changing
+ * the behavior of this function would mean that any code that tried
+ * to do that would stop working right.
+ *
+ * Sigh.  --JCW, 06/28/02
+ */
+APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp,
+                               void *rec, const apr_table_t *t, va_list vp)
+{
+    char *argp;
+    apr_table_entry_t *elts = (apr_table_entry_t *) t->a.elts;
+    int vdorv = 1;
+
+    argp = va_arg(vp, char *);
+    do {
+        int rv = 1, i;
+        if (argp) {
+            /* Scan for entries that match the next key */
+            int hash = TABLE_HASH(argp);
+            if (TABLE_INDEX_IS_INITIALIZED(t, hash)) {
+                apr_uint32_t checksum;
+                COMPUTE_KEY_CHECKSUM(argp, checksum);
+                for (i = t->index_first[hash];
+                     rv && (i <= t->index_last[hash]); ++i) {
+                    if (elts[i].key && (checksum == elts[i].key_checksum) &&
+                                        !strcasecmp(elts[i].key, argp)) {
+                        rv = (*comp) (rec, elts[i].key, elts[i].val);
+                    }
+                }
+            }
+        }
+        else {
+            /* Scan the entire table */
+            for (i = 0; rv && (i < t->a.nelts); ++i) {
+                if (elts[i].key) {
+                    rv = (*comp) (rec, elts[i].key, elts[i].val);
+                }
+            }
+        }
+        if (rv == 0) {
+            vdorv = 0;
+        }
+    } while (argp && ((argp = va_arg(vp, char *)) != NULL));
+
+    return vdorv;
+}
+
+static apr_table_entry_t **table_mergesort(apr_pool_t *pool,
+                                           apr_table_entry_t **values, 
+                                           apr_size_t n)
+{
+    /* Bottom-up mergesort, based on design in Sedgewick's "Algorithms
+     * in C," chapter 8
+     */
+    apr_table_entry_t **values_tmp =
+        (apr_table_entry_t **)apr_palloc(pool, n * sizeof(apr_table_entry_t*));
+    apr_size_t i;
+    apr_size_t blocksize;
+
+    /* First pass: sort pairs of elements (blocksize=1) */
+    for (i = 0; i + 1 < n; i += 2) {
+        if (strcasecmp(values[i]->key, values[i + 1]->key) > 0) {
+            apr_table_entry_t *swap = values[i];
+            values[i] = values[i + 1];
+            values[i + 1] = swap;
+        }
+    }
+
+    /* Merge successively larger blocks */
+    blocksize = 2;
+    while (blocksize < n) {
+        apr_table_entry_t **dst = values_tmp;
+        apr_size_t next_start;
+        apr_table_entry_t **swap;
+
+        /* Merge consecutive pairs blocks of the next blocksize.
+         * Within a block, elements are in sorted order due to
+         * the previous iteration.
+         */
+        for (next_start = 0; next_start + blocksize < n;
+             next_start += (blocksize + blocksize)) {
+
+            apr_size_t block1_start = next_start;
+            apr_size_t block2_start = block1_start + blocksize;
+            apr_size_t block1_end = block2_start;
+            apr_size_t block2_end = block2_start + blocksize;
+            if (block2_end > n) {
+                /* The last block may be smaller than blocksize */
+                block2_end = n;
+            }
+            for (;;) {
+
+                /* Merge the next two blocks:
+                 * Pick the smaller of the next element from
+                 * block 1 and the next element from block 2.
+                 * Once either of the blocks is emptied, copy
+                 * over all the remaining elements from the
+                 * other block
+                 */
+                if (block1_start == block1_end) {
+                    for (; block2_start < block2_end; block2_start++) {
+                        *dst++ = values[block2_start];
+                    }
+                    break;
+                }
+                else if (block2_start == block2_end) {
+                    for (; block1_start < block1_end; block1_start++) {
+                        *dst++ = values[block1_start];
+                    }
+                    break;
+                }
+                if (strcasecmp(values[block1_start]->key,
+                               values[block2_start]->key) > 0) {
+                    *dst++ = values[block2_start++];
+                }
+                else {
+                    *dst++ = values[block1_start++];
+                }
+            }
+        }
+
+        /* If n is not a multiple of 2*blocksize, some elements
+         * will be left over at the end of the array.
+         */
+        for (i = dst - values_tmp; i < n; i++) {
+            values_tmp[i] = values[i];
+        }
+
+        /* The output array of this pass becomes the input
+         * array of the next pass, and vice versa
+         */
+        swap = values_tmp;
+        values_tmp = values;
+        values = swap;
+
+        blocksize += blocksize;
+    }
+
+    return values;
+}
+
+APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags)
+{
+    apr_table_entry_t **sort_array;
+    apr_table_entry_t **sort_next;
+    apr_table_entry_t **sort_end;
+    apr_table_entry_t *table_next;
+    apr_table_entry_t **last;
+    int i;
+    int dups_found;
+
+    if (t->a.nelts <= 1) {
+        return;
+    }
+
+    /* Copy pointers to all the table elements into an
+     * array and sort to allow for easy detection of
+     * duplicate keys
+     */
+    sort_array = (apr_table_entry_t **)
+        apr_palloc(t->a.pool, t->a.nelts * sizeof(apr_table_entry_t*));
+    sort_next = sort_array;
+    table_next = (apr_table_entry_t *)t->a.elts;
+    i = t->a.nelts;
+    do {
+        *sort_next++ = table_next++;
+    } while (--i);
+
+    /* Note: the merge is done with mergesort instead of quicksort
+     * because mergesort is a stable sort and runs in n*log(n)
+     * time regardless of its inputs (quicksort is quadratic in
+     * the worst case)
+     */
+    sort_array = table_mergesort(t->a.pool, sort_array, t->a.nelts);
+
+    /* Process any duplicate keys */
+    dups_found = 0;
+    sort_next = sort_array;
+    sort_end = sort_array + t->a.nelts;
+    last = sort_next++;
+    while (sort_next < sort_end) {
+        if (((*sort_next)->key_checksum == (*last)->key_checksum) &&
+            !strcasecmp((*sort_next)->key, (*last)->key)) {
+            apr_table_entry_t **dup_last = sort_next + 1;
+            dups_found = 1;
+            while ((dup_last < sort_end) &&
+                   ((*dup_last)->key_checksum == (*last)->key_checksum) &&
+                   !strcasecmp((*dup_last)->key, (*last)->key)) {
+                dup_last++;
+            }
+            dup_last--; /* Elements from last through dup_last, inclusive,
+                         * all have the same key
+                         */
+            if (flags == APR_OVERLAP_TABLES_MERGE) {
+                apr_size_t len = 0;
+                apr_table_entry_t **next = last;
+                char *new_val;
+                char *val_dst;
+                do {
+                    len += strlen((*next)->val);
+                    len += 2; /* for ", " or trailing null */
+                } while (++next <= dup_last);
+                new_val = (char *)apr_palloc(t->a.pool, len);
+                val_dst = new_val;
+                next = last;
+                for (;;) {
+                    strcpy(val_dst, (*next)->val);
+                    val_dst += strlen((*next)->val);
+                    next++;
+                    if (next > dup_last) {
+                        *val_dst = 0;
+                        break;
+                    }
+                    else {
+                        *val_dst++ = ',';
+                        *val_dst++ = ' ';
+                    }
+                }
+                (*last)->val = new_val;
+            }
+            else { /* overwrite */
+                (*last)->val = (*dup_last)->val;
+            }
+            do {
+                (*sort_next)->key = NULL;
+            } while (++sort_next <= dup_last);
+        }
+        else {
+            last = sort_next++;
+        }
+    }
+
+    /* Shift elements to the left to fill holes left by removing duplicates */
+    if (dups_found) {
+        apr_table_entry_t *src = (apr_table_entry_t *)t->a.elts;
+        apr_table_entry_t *dst = (apr_table_entry_t *)t->a.elts;
+        apr_table_entry_t *last_elt = src + t->a.nelts;
+        do {
+            if (src->key) {
+                *dst++ = *src;
+            }
+        } while (++src < last_elt);
+        t->a.nelts -= (int)(last_elt - dst);
+    }
+
+    table_reindex(t);
+}
+
+static void apr_table_cat(apr_table_t *t, const apr_table_t *s)
+{
+    const int n = t->a.nelts;
+    register int idx;
+
+    apr_array_cat(&t->a,&s->a);
+
+    if (n == 0) {
+        memcpy(t->index_first,s->index_first,sizeof(int) * TABLE_HASH_SIZE);
+        memcpy(t->index_last, s->index_last, sizeof(int) * TABLE_HASH_SIZE);
+        t->index_initialized = s->index_initialized;
+        return;
+    }
+
+    for (idx = 0; idx < TABLE_HASH_SIZE; ++idx) {
+        if (TABLE_INDEX_IS_INITIALIZED(s, idx)) {
+            t->index_last[idx] = s->index_last[idx] + n;
+            if (!TABLE_INDEX_IS_INITIALIZED(t, idx)) {
+                t->index_first[idx] = s->index_first[idx] + n;
+            }
+        }
+    }
+
+    t->index_initialized |= s->index_initialized;
+}
+
+APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b,
+				    unsigned flags)
+{
+    if (a->a.nelts + b->a.nelts == 0) {
+        return;
+    }
+
+#if APR_POOL_DEBUG
+    /* Since the keys and values are not copied, it's required that
+     * b->a.pool has a lifetime at least as long as a->a.pool. */
+    if (!apr_pool_is_ancestor(b->a.pool, a->a.pool)) {
+        fprintf(stderr, "apr_table_overlap: b's pool is not an ancestor of a's\n");
+        abort();
+    }
+#endif
+
+    apr_table_cat(a, b);
+
+    apr_table_compress(a, flags);
+}
+
+static int table_getm_do(void *v, const char *key, const char *val)
+{
+    table_getm_t *state = (table_getm_t *) v;
+
+    if (!state->first) {
+        /**
+         * The most common case is a single header, and this is covered by
+         * a fast path that doesn't allocate any memory. On the second and
+         * subsequent header, an array is created and the array concatenated
+         * together to form the final value.
+         */
+        state->first = val;
+    }
+    else {
+        const char **elt;
+        if (!state->merged) {
+            state->merged = apr_array_make(state->p, 10, sizeof(const char *));
+            elt = apr_array_push(state->merged);
+            *elt = state->first;
+        }
+        elt = apr_array_push(state->merged);
+        *elt = val;
+    }
+    return 1;
+}
+
+APR_DECLARE(const char *) apr_table_getm(apr_pool_t *p, const apr_table_t *t,
+        const char *key)
+{
+    table_getm_t state;
+
+    state.p = p;
+    state.first = NULL;
+    state.merged = NULL;
+
+    apr_table_do(table_getm_do, &state, t, key, NULL);
+
+    if (!state.first) {
+        return NULL;
+    }
+    else if (!state.merged) {
+        return state.first;
+    }
+    else {
+        return apr_array_pstrcat(p, state.merged, ',');
+    }
+}

Deleted: vendor/apache/apr/1.5.2/test/Makefile.in
===================================================================
--- vendor/apache/apr/dist/test/Makefile.in	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/Makefile.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,177 +0,0 @@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-# PROGRAMS includes all test programs built on this platform.
-# STDTEST_PORTABLE
-#   test programs invoked via standard user interface, run on all platforms
-# TESTS
-#   test modules invoked through the abts suite (./testall)
-# STDTEST_NONPORTABLE
-#   test programs invoked via standard user interface, not portable
-# OTHER_PROGRAMS
-#   programs such as sendfile, that have to be invoked in a special sequence
-#   or with special parameters
-# TESTALL_COMPONENTS
-#   programs such as globalmutexchild which the various TESTS will invoke
-#   to validate process creation, pipes, dso mechansims and so forth
-
-STDTEST_PORTABLE = \
-	testlockperf at EXEEXT@ \
-	testmutexscope at EXEEXT@ \
-	testall at EXEEXT@
-
-TESTS = testtime.lo teststr.lo testvsn.lo testipsub.lo testshm.lo \
-	testmmap.lo testud.lo testtable.lo testsleep.lo testpools.lo \
-	testfmt.lo testfile.lo testdir.lo testfileinfo.lo testrand.lo \
-	testdso.lo testoc.lo testdup.lo testsockets.lo testproc.lo \
-	testpoll.lo testlock.lo testsockopt.lo testpipe.lo testthread.lo \
-	testhash.lo testargs.lo testnames.lo testuser.lo testpath.lo \
-	testenv.lo testprocmutex.lo testfnmatch.lo testatomic.lo testflock.lo \
-	testsock.lo testglobalmutex.lo teststrnatcmp.lo testfilecopy.lo \
-	testtemp.lo testlfs.lo testcond.lo
-
-OTHER_PROGRAMS = \
-	sendfile at EXEEXT@ \
-	echod at EXEEXT@ \
-	sockperf at EXEEXT@
-
-TESTALL_COMPONENTS = \
-	globalmutexchild at EXEEXT@ \
-	libmod_test.la \
-	mod_test.la \
-	occhild at EXEEXT@ \
-	proc_child at EXEEXT@ \
-	readchild at EXEEXT@ \
-	sockchild at EXEEXT@ \
-	testshmproducer at EXEEXT@ \
-	testshmconsumer at EXEEXT@ \
-	tryread at EXEEXT@
-
-PROGRAMS = $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE) \
-	   $(OTHER_PROGRAMS)
-
-TARGETS = $(PROGRAMS)
-
-# bring in rules.mk for standard functionality
- at INCLUDE_RULES@
-
-LOCAL_LIBS=../lib at APR_LIBNAME@.la
-
-CLEAN_TARGETS = testfile.tmp lfstests/*.bin \
-	data/test*.txt data/test*.dat data/apr.testshm.shm
-
-CLEAN_SUBDIRS = internal
-
-INCDIR=../include
-INCLUDES=-I$(INCDIR) -I$(srcdir)/../include
-
-# link programs using -no-install to get real executables not
-# libtool wrapper scripts which link an executable when first run.
-LINK_PROG = $(LIBTOOL) $(LTFLAGS) --mode=link $(LT_LDFLAGS) $(COMPILE) \
-	    @LT_NO_INSTALL@ $(ALL_LDFLAGS) -o $@
-
-# STDTEST_PORTABLE;
-
-abts.lo: $(srcdir)/abts.c $(srcdir)/abts.h $(srcdir)/abts_tests.h \
-	 $(srcdir)/testutil.h
-
-testutil.lo: $(srcdir)/abts.c $(srcdir)/abts.h $(srcdir)/abts_tests.h \
-	     $(srcdir)/testutil.h
-
-OBJECTS_testall = abts.lo testutil.lo $(TESTS) $(LOCAL_LIBS)
-testall at EXEEXT@: $(OBJECTS_testall)
-	$(LINK_PROG) $(OBJECTS_testall) $(ALL_LIBS)
-# For VPATH builds; where we have no ./data, copy us some data
-# if we wait until 'make check', then 'make; ./testall' fails;
-	if test ! -d "./data"; then cp -r $(srcdir)/data data; fi
-
-OBJECTS_testlockperf = testlockperf.lo $(LOCAL_LIBS)
-testlockperf at EXEEXT@: $(OBJECTS_testlockperf)
-	$(LINK_PROG) $(OBJECTS_testlockperf) $(ALL_LIBS)
-
-OBJECTS_testmutexscope = testmutexscope.lo $(LOCAL_LIBS)
-testmutexscope at EXEEXT@: $(OBJECTS_testmutexscope)
-	$(LINK_PROG) $(OBJECTS_testmutexscope) $(ALL_LIBS)
-
-# OTHER_PROGRAMS;
-
-OBJECTS_echod = echod.lo $(LOCAL_LIBS)
-echod at EXEEXT@: $(OBJECTS_echod)
-	$(LINK_PROG) $(OBJECTS_echod) $(ALL_LIBS)
-
-OBJECTS_sendfile = sendfile.lo $(LOCAL_LIBS)
-sendfile at EXEEXT@: $(OBJECTS_sendfile)
-	$(LINK_PROG) $(OBJECTS_sendfile) $(ALL_LIBS)
-
-OBJECTS_sockperf = sockperf.lo $(LOCAL_LIBS)
-sockperf at EXEEXT@: $(OBJECTS_sockperf)
-	$(LINK_PROG) $(OBJECTS_sockperf) $(ALL_LIBS)
-
-# TESTALL_COMPONENTS;
-
-OBJECTS_globalmutexchild = globalmutexchild.lo $(LOCAL_LIBS)
-globalmutexchild at EXEEXT@: $(OBJECTS_globalmutexchild)
-	$(LINK_PROG) $(OBJECTS_globalmutexchild) $(ALL_LIBS)
-
-# Note -prefer-pic is only supported with libtool-1.4+
-mod_test.lo: $(srcdir)/mod_test.c
-	$(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -prefer-pic -o $@ \
-	  -c $(srcdir)/mod_test.c
-
-OBJECTS_mod_test = mod_test.lo
-mod_test.la: $(OBJECTS_mod_test)
-	$(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -rpath `pwd` -module \
-	  -avoid-version $(LT_LDFLAGS) $(ALL_LDFLAGS) -o $@ \
-	  $(OBJECTS_mod_test)
-
-OBJECTS_libmod_test = mod_test.lo $(LOCAL_LIBS)
-libmod_test.la: $(OBJECTS_libmod_test)
-	$(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -rpath `pwd` \
-	  -avoid-version $(LT_LDFLAGS) $(ALL_LDFLAGS) -o $@ \
-	  $(OBJECTS_libmod_test) $(ALL_LIBS)
-
-OBJECTS_occhild = occhild.lo $(LOCAL_LIBS)
-occhild at EXEEXT@: $(OBJECTS_occhild)
-	$(LINK_PROG) $(OBJECTS_occhild) $(ALL_LIBS)
-
-OBJECTS_proc_child = proc_child.lo $(LOCAL_LIBS)
-proc_child at EXEEXT@: $(OBJECTS_proc_child)
-	$(LINK_PROG) $(OBJECTS_proc_child) $(ALL_LIBS)
-
-OBJECTS_readchild = readchild.lo $(LOCAL_LIBS)
-readchild at EXEEXT@: $(OBJECTS_readchild)
-	$(LINK_PROG) $(OBJECTS_readchild) $(ALL_LIBS)
-
-OBJECTS_sockchild = sockchild.lo $(LOCAL_LIBS)
-sockchild at EXEEXT@: $(OBJECTS_sockchild)
-	$(LINK_PROG) $(OBJECTS_sockchild) $(ALL_LIBS)
-
-OBJECTS_testshmconsumer = testshmconsumer.lo $(LOCAL_LIBS)
-testshmconsumer at EXEEXT@: $(OBJECTS_testshmconsumer) $(LOCAL_LIBS)
-	$(LINK_PROG) $(OBJECTS_testshmconsumer) $(ALL_LIBS)
-
-OBJECTS_testshmproducer = testshmproducer.lo $(LOCAL_LIBS)
-testshmproducer at EXEEXT@: $(OBJECTS_testshmproducer)
-	$(LINK_PROG) $(OBJECTS_testshmproducer) $(ALL_LIBS)
-
-OBJECTS_tryread = tryread.lo $(LOCAL_LIBS)
-tryread at EXEEXT@: $(OBJECTS_tryread)
-	$(LINK_PROG) $(OBJECTS_tryread) $(ALL_LIBS)
-
-check: $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)
-	teststatus=0; \
-	progfailed=""; \
-	for prog in $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE); do \
-		./$$prog; \
-		status=$$?; \
-		if test $$status != 0; then \
-			teststatus=$$status; \
-			progfailed="$$progfailed $$prog"; \
-		fi; \
-	done; \
-	if test $$teststatus != 0; then \
-		echo "Programs failed:$$progfailed"; \
-	fi; \
-	exit $$teststatus
-
-# DO NOT REMOVE

Copied: vendor/apache/apr/1.5.2/test/Makefile.in (from rev 9273, vendor/apache/apr/dist/test/Makefile.in)
===================================================================
--- vendor/apache/apr/1.5.2/test/Makefile.in	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/Makefile.in	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,188 @@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+# PROGRAMS includes all test programs built on this platform.
+# STDTEST_PORTABLE
+#   test programs invoked via standard user interface, run on all platforms
+# TESTS
+#   test modules invoked through the abts suite (./testall)
+# STDTEST_NONPORTABLE
+#   test programs invoked via standard user interface, not portable
+# OTHER_PROGRAMS
+#   programs such as sockperf, that have to be invoked in a special sequence
+#   or with special parameters
+# TESTALL_COMPONENTS
+#   programs such as globalmutexchild which the various TESTS will invoke
+#   to validate process creation, pipes, dso mechanisms and so forth
+
+STDTEST_PORTABLE = \
+	testlockperf at EXEEXT@ \
+	testmutexscope at EXEEXT@ \
+	testall at EXEEXT@ \
+	sendfile at EXEEXT@
+
+TESTS = testtime.lo teststr.lo testvsn.lo testipsub.lo testshm.lo \
+	testmmap.lo testud.lo testtable.lo testsleep.lo testpools.lo \
+	testfmt.lo testfile.lo testdir.lo testfileinfo.lo testrand.lo \
+	testdso.lo testoc.lo testdup.lo testsockets.lo testproc.lo \
+	testpoll.lo testlock.lo testsockopt.lo testpipe.lo testthread.lo \
+	testhash.lo testargs.lo testnames.lo testuser.lo testpath.lo \
+	testenv.lo testprocmutex.lo testfnmatch.lo testatomic.lo testflock.lo \
+	testsock.lo testglobalmutex.lo teststrnatcmp.lo testfilecopy.lo \
+	testtemp.lo testlfs.lo testcond.lo testescape.lo testskiplist.lo
+
+OTHER_PROGRAMS = \
+	echod at EXEEXT@ \
+	sockperf at EXEEXT@
+
+TESTALL_COMPONENTS = \
+	globalmutexchild at EXEEXT@ \
+	libmod_test.la \
+	mod_test.la \
+	occhild at EXEEXT@ \
+	proc_child at EXEEXT@ \
+	readchild at EXEEXT@ \
+	sockchild at EXEEXT@ \
+	testshmproducer at EXEEXT@ \
+	testshmconsumer at EXEEXT@ \
+	tryread at EXEEXT@
+
+PROGRAMS = $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE) \
+	   $(OTHER_PROGRAMS)
+
+TARGETS = $(PROGRAMS)
+
+# bring in rules.mk for standard functionality
+ at INCLUDE_RULES@
+
+LOCAL_LIBS=../lib at APR_LIBNAME@.la
+
+CLEAN_TARGETS = testfile.tmp lfstests/*.bin \
+	data/test*.txt data/test*.dat data/apr.testshm.shm
+
+CLEAN_SUBDIRS = internal
+
+INCDIR=../include
+INCLUDES=-I$(INCDIR) -I$(srcdir)/../include
+
+# link programs using -no-install to get real executables not
+# libtool wrapper scripts which link an executable when first run.
+LINK_PROG = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) $(LT_LDFLAGS) \
+	    @LT_NO_INSTALL@ $(ALL_LDFLAGS) -o $@
+
+# STDTEST_PORTABLE;
+
+abts.lo: $(srcdir)/abts.c $(srcdir)/abts.h $(srcdir)/abts_tests.h \
+	 $(srcdir)/testutil.h
+
+testutil.lo: $(srcdir)/abts.c $(srcdir)/abts.h $(srcdir)/abts_tests.h \
+	     $(srcdir)/testutil.h
+
+OBJECTS_testall = abts.lo testutil.lo $(TESTS) $(LOCAL_LIBS)
+testall at EXEEXT@: $(OBJECTS_testall)
+	$(LINK_PROG) $(OBJECTS_testall) $(ALL_LIBS)
+# For VPATH builds; where we have no ./data, copy us some data
+# if we wait until 'make check', then 'make; ./testall' fails;
+	if test ! -d "./data"; then cp -r $(srcdir)/data data; fi
+
+OBJECTS_testlockperf = testlockperf.lo $(LOCAL_LIBS)
+testlockperf at EXEEXT@: $(OBJECTS_testlockperf)
+	$(LINK_PROG) $(OBJECTS_testlockperf) $(ALL_LIBS)
+
+OBJECTS_testmutexscope = testmutexscope.lo $(LOCAL_LIBS)
+testmutexscope at EXEEXT@: $(OBJECTS_testmutexscope)
+	$(LINK_PROG) $(OBJECTS_testmutexscope) $(ALL_LIBS)
+
+# OTHER_PROGRAMS;
+
+OBJECTS_echod = echod.lo $(LOCAL_LIBS)
+echod at EXEEXT@: $(OBJECTS_echod)
+	$(LINK_PROG) $(OBJECTS_echod) $(ALL_LIBS)
+
+OBJECTS_sendfile = sendfile.lo $(LOCAL_LIBS)
+sendfile at EXEEXT@: $(OBJECTS_sendfile)
+	$(LINK_PROG) $(OBJECTS_sendfile) $(ALL_LIBS)
+
+OBJECTS_sockperf = sockperf.lo $(LOCAL_LIBS)
+sockperf at EXEEXT@: $(OBJECTS_sockperf)
+	$(LINK_PROG) $(OBJECTS_sockperf) $(ALL_LIBS)
+
+# TESTALL_COMPONENTS;
+
+OBJECTS_globalmutexchild = globalmutexchild.lo $(LOCAL_LIBS)
+globalmutexchild at EXEEXT@: $(OBJECTS_globalmutexchild)
+	$(LINK_PROG) $(OBJECTS_globalmutexchild) $(ALL_LIBS)
+
+# Note -prefer-pic is only supported with libtool-1.4+
+mod_test.lo: $(srcdir)/mod_test.c
+	$(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -prefer-pic -o $@ \
+	  -c $(srcdir)/mod_test.c
+
+OBJECTS_mod_test = mod_test.lo
+mod_test.la: $(OBJECTS_mod_test) $(LOCAL_LIBS)
+	$(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -rpath `pwd` -module \
+	  -avoid-version $(LT_LDFLAGS) $(ALL_LDFLAGS) -o $@ \
+	  $(OBJECTS_mod_test) $(LOCAL_LIBS)
+
+OBJECTS_libmod_test = mod_test.lo $(LOCAL_LIBS)
+libmod_test.la: $(OBJECTS_libmod_test)
+	$(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -rpath `pwd` \
+	  -avoid-version $(LT_LDFLAGS) $(ALL_LDFLAGS) -o $@ \
+	  $(OBJECTS_libmod_test) $(ALL_LIBS)
+
+OBJECTS_occhild = occhild.lo $(LOCAL_LIBS)
+occhild at EXEEXT@: $(OBJECTS_occhild)
+	$(LINK_PROG) $(OBJECTS_occhild) $(ALL_LIBS)
+
+OBJECTS_proc_child = proc_child.lo $(LOCAL_LIBS)
+proc_child at EXEEXT@: $(OBJECTS_proc_child)
+	$(LINK_PROG) $(OBJECTS_proc_child) $(ALL_LIBS)
+
+OBJECTS_readchild = readchild.lo $(LOCAL_LIBS)
+readchild at EXEEXT@: $(OBJECTS_readchild)
+	$(LINK_PROG) $(OBJECTS_readchild) $(ALL_LIBS)
+
+OBJECTS_sockchild = sockchild.lo $(LOCAL_LIBS)
+sockchild at EXEEXT@: $(OBJECTS_sockchild)
+	$(LINK_PROG) $(OBJECTS_sockchild) $(ALL_LIBS)
+
+OBJECTS_testshmconsumer = testshmconsumer.lo $(LOCAL_LIBS)
+testshmconsumer at EXEEXT@: $(OBJECTS_testshmconsumer) $(LOCAL_LIBS)
+	$(LINK_PROG) $(OBJECTS_testshmconsumer) $(ALL_LIBS)
+
+OBJECTS_testshmproducer = testshmproducer.lo $(LOCAL_LIBS)
+testshmproducer at EXEEXT@: $(OBJECTS_testshmproducer)
+	$(LINK_PROG) $(OBJECTS_testshmproducer) $(ALL_LIBS)
+
+OBJECTS_tryread = tryread.lo $(LOCAL_LIBS)
+tryread at EXEEXT@: $(OBJECTS_tryread)
+	$(LINK_PROG) $(OBJECTS_tryread) $(ALL_LIBS)
+
+check: $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)
+	teststatus=0; \
+	progfailed=""; \
+	for prog in $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE); do \
+		if test "$$prog" = 'sendfile at EXEEXT@'; then \
+			for mode in blocking nonblocking timeout; do \
+				./$$prog client $$mode startserver 127.0.0.1; \
+				status=$$?; \
+				if test $$status != 0; then \
+					teststatus=$$status; \
+					progfailed="$$progfailed '$$prog mode $$mode'"; \
+				fi; \
+			done; \
+	        else \
+			./$$prog -v; \
+			status=$$?; \
+			if test $$status != 0; then \
+				teststatus=$$status; \
+				progfailed="$$progfailed $$prog"; \
+			fi; \
+		fi; \
+	done; \
+	if test $$teststatus != 0; then \
+		echo "Programs failed:$$progfailed"; \
+	fi; \
+	exit $$teststatus
+
+# DO NOT REMOVE

Deleted: vendor/apache/apr/1.5.2/test/Makefile.win
===================================================================
--- vendor/apache/apr/dist/test/Makefile.win	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/Makefile.win	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,272 +0,0 @@
-# PROGRAMS includes all test programs built on this platform.
-# STDTEST_PORTABLE
-#   test programs invoked via standard user interface, run on all platforms
-# TESTS
-#   test modules invoked through the abts suite (./testall)
-# STDTEST_NONPORTABLE
-#   test programs invoked via standard user interface, not portable
-# OTHER_PROGRAMS
-#   programs such as sendfile, that have to be invoked in a special sequence
-#   or with special parameters
-# TESTALL_COMPONENTS
-#   programs such as globalmutexchild which the various TESTS will invoke
-#   to validate process creation, pipes, dso mechansims and so forth
-
-# Windows Specific;
-# MODEL
-#   dynamic or static - refers to which set of bindings are desired
-#   and controls which libraries (apr-1 or libapr-1) will be linked.
-# OUTDIR
-#   the library path of the libraries, and also the path within test/
-#   where all of the tests for that library will be built
-
-!IFNDEF MODEL
-MODEL=dynamic
-!ENDIF
-
-INCDIR=../include
-
-!IFNDEF OUTDIR
-!IF "$(MODEL)" == "static"
-OUTDIR=LibR
-!ELSE
-OUTDIR=Release
-!ENDIF
-
-!IF [$(COMSPEC) /c cl /nologo /? \
-	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
-OUTDIR=x64\$(OUTDIR)
-!ENDIF
-!ENDIF
-
-!IF !EXIST("$(OUTDIR)\.")
-!IF ([$(COMSPEC) /C mkdir $(OUTDIR)] == 0)
-!ENDIF
-!ENDIF
-
-!IFNDEF INTDIR
-INTDIR=$(OUTDIR)
-!ELSE
-!IF !EXIST("$(INTDIR)\.")
-!IF ([$(COMSPEC) /C mkdir $(INTDIR)] == 0)
-!ENDIF
-!ENDIF
-!ENDIF
-
-!MESSAGE Building tests into $(OUTDIR) for $(MODEL)
-
-STDTEST_PORTABLE = \
-	$(OUTDIR)\testapp.exe \
-	$(OUTDIR)\testall.exe \
-	$(OUTDIR)\testlockperf.exe \
-	$(OUTDIR)\testmutexscope.exe
-
-OTHER_PROGRAMS = \
-	$(OUTDIR)\echod.exe \
-	$(OUTDIR)\sendfile.exe \
-	$(OUTDIR)\sockperf.exe
-
-TESTALL_COMPONENTS = \
-	$(OUTDIR)\mod_test.dll \
-	$(OUTDIR)\occhild.exe \
-	$(OUTDIR)\readchild.exe \
-	$(OUTDIR)\proc_child.exe \
-        $(OUTDIR)\tryread.exe \
-	$(OUTDIR)\sockchild.exe \
-	$(OUTDIR)\testshmproducer.exe \
-	$(OUTDIR)\testshmconsumer.exe \
-	$(OUTDIR)\globalmutexchild.exe
-
-ALL_TESTS = $(INTDIR)\testutil.obj $(INTDIR)\testtime.obj \
-	$(INTDIR)\teststr.obj $(INTDIR)\testvsn.obj \
-	$(INTDIR)\testipsub.obj $(INTDIR)\testmmap.obj \
-	$(INTDIR)\testud.obj $(INTDIR)\testtable.obj \
-	$(INTDIR)\testsleep.obj $(INTDIR)\testpools.obj \
-	$(INTDIR)\testfmt.obj $(INTDIR)\testfile.obj \
-	$(INTDIR)\testdir.obj $(INTDIR)\testfileinfo.obj \
-	$(INTDIR)\testrand.obj $(INTDIR)\testdso.obj \
-	$(INTDIR)\testoc.obj $(INTDIR)\testdup.obj \
-	$(INTDIR)\testsockets.obj $(INTDIR)\testproc.obj \
-	$(INTDIR)\testpoll.obj $(INTDIR)\testlock.obj \
-	$(INTDIR)\testsockopt.obj $(INTDIR)\testpipe.obj \
-	$(INTDIR)\testthread.obj $(INTDIR)\testhash.obj \
-	$(INTDIR)\testargs.obj $(INTDIR)\testnames.obj \
-	$(INTDIR)\testuser.obj $(INTDIR)\testpath.obj \
-	$(INTDIR)\testenv.obj $(INTDIR)\testprocmutex.obj \
-	$(INTDIR)\testfnmatch.obj $(INTDIR)\testatomic.obj \
-	$(INTDIR)\testflock.obj $(INTDIR)\testshm.obj \
-	$(INTDIR)\testsock.obj $(INTDIR)\testglobalmutex.obj \
-	$(INTDIR)\teststrnatcmp.obj $(INTDIR)\testfilecopy.obj \
-	$(INTDIR)\testtemp.obj $(INTDIR)\testlfs.obj \
-	$(INTDIR)\testcond.obj
-
-CLEAN_DATA = testfile.tmp lfstests\large.bin \
-	data\testputs.txt data\testbigfprintf.dat \
-	data\testwritev.txt data\testwritev_full.txt \
-	data\testflush.dat data\testxthread.dat \
-	data\apr.testshm.shm
-
-CLEAN_BUILDDIRS = Debug Release LibD LibR 9x x64
-
-TEST_SUBDIRS = internal
-
-PROGRAMS = $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE) \
-	$(OTHER_PROGRAMS)
-
-TARGETS = $(PROGRAMS)
-
-# bring in rules.mk for standard functionality
-ALL: $(TARGETS)
-
-CL = cl.exe
-LD = link.exe 
-
-!IF "$(MODEL)" == "static"
-LOCAL_LIB= ..\$(OUTDIR)\apr-1.lib 
-APP_LIB= ..\$(OUTDIR)\aprapp-1.lib 
-STATIC_CFLAGS = /D APR_DECLARE_STATIC
-!ELSE
-LOCAL_LIB= ..\$(OUTDIR)\libapr-1.lib 
-APP_LIB= ..\$(OUTDIR)\libaprapp-1.lib 
-STATIC_CFLAGS = 
-!ENDIF
-
-!IFDEF _DEBUG
-DEBUG_CFLAGS = /MDd
-!ELSE
-DEBUG_CFLAGS = /MD 
-!ENDIF
-
-INCLUDES=/I "$(INCDIR)"
-
-CFLAGS = /nologo /c /W3 /Gm /EHsc /Zi /Od $(INCLUDES) \
-	 $(STATIC_CFLAGS) $(DEBUG_CFLAGS) /D "BINPATH=$(OUTDIR:\=/)" \
-	 /D _DEBUG /D WIN32 /Fo"$(INTDIR)/" /FD
-
-LD_LIBS = kernel32.lib advapi32.lib ws2_32.lib wsock32.lib \
-	  ole32.lib shell32.lib rpcrt4.lib
-
-LDFLAGS = /nologo /debug /subsystem:console /incremental:no 
-SHLDFLAGS = /nologo /dll /debug /subsystem:windows /incremental:no
-
-.c{$(INTDIR)}.obj::
-	$(CL) $(CFLAGS) -c $< -Fd$(INTDIR)\ $(INCLUDES)
-
-# STDTEST_PORTABLE;
-
-$(OUTDIR)\testall.exe: $(ALL_TESTS) $(INTDIR)\abts.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\testapp.exe: $(INTDIR)/testapp.obj $(LOCAL_LIB) $(APP_LIB) 
-	$(LD) $(LDFLAGS) /entry:wmainCRTStartup /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;2
-
-$(OUTDIR)\testlockperf.exe: $(INTDIR)\testlockperf.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\testmutexscope.exe: $(INTDIR)\testmutexscope.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-# OTHER_PROGRAMS;
-
-$(OUTDIR)\echod.exe: $(INTDIR)\echod.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\sendfile.exe: $(INTDIR)\sendfile.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\sockperf.exe: $(INTDIR)\sockperf.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-# TESTALL_COMPONENTS;
-
-$(OUTDIR)\globalmutexchild.exe: $(INTDIR)\globalmutexchild.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\mod_test.dll: $(INTDIR)/mod_test.obj $(LOCAL_LIB) 
-	$(LD) $(SHLDFLAGS) /out:"$@" $** \
-	       /export:print_hello /export:count_reps $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;2
-
-$(OUTDIR)\occhild.exe: $(INTDIR)\occhild.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\proc_child.exe: $(INTDIR)\proc_child.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\readchild.exe: $(INTDIR)\readchild.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\sockchild.exe: $(INTDIR)\sockchild.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\testshmconsumer.exe: $(INTDIR)\testshmconsumer.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\testshmproducer.exe: $(INTDIR)\testshmproducer.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-$(OUTDIR)\tryread.exe: $(INTDIR)\tryread.obj $(LOCAL_LIB)
-	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
-	@if exist "$@.manifest" \
-	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
-
-
-cleandata:
-	@for %f in ($(CLEAN_DATA)) do @if EXIST %f del /f %f
-
-clean: cleandata
-	@if EXIST $(INTDIR)\. rmdir /s /q $(INTDIR)
-	@if EXIST $(OUTDIR)\. rmdir /s /q $(OUTDIR)
-	@for %d in ($(TEST_SUBDIRS)) do \
-	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win clean" \
-
-cleanall: 
-	@for %d in ($(CLEAN_BUILDDIRS) $(INTDIR) $(OUTDIR)) do \
-	    @if EXIST %d\. rmdir /s /q %d
-	@for %d in ($(TEST_SUBDIRS)) do \
-	    %COMSPEC% /c "cd %%d & $(MAKE) -f Makefile.win cleanall" \
-
-
-!IF "$(MODEL)" != "static"
-PATH=$(OUTDIR);..\$(OUTDIR);$(PATH)
-!ENDIF
-
-check: $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)
-	@for %p in ($(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)) do @( \
-	    echo Testing %p && %p -v || echo %p failed \
-	)
-
-checkall: check
-	@for %d in ($(TEST_SUBDIRS)) do \
-	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win check" \
-
-# DO NOT REMOVE

Copied: vendor/apache/apr/1.5.2/test/Makefile.win (from rev 9273, vendor/apache/apr/dist/test/Makefile.win)
===================================================================
--- vendor/apache/apr/1.5.2/test/Makefile.win	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/Makefile.win	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,273 @@
+# PROGRAMS includes all test programs built on this platform.
+# STDTEST_PORTABLE
+#   test programs invoked via standard user interface, run on all platforms
+# TESTS
+#   test modules invoked through the abts suite (./testall)
+# STDTEST_NONPORTABLE
+#   test programs invoked via standard user interface, not portable
+# OTHER_PROGRAMS
+#   programs such as sendfile, that have to be invoked in a special sequence
+#   or with special parameters
+# TESTALL_COMPONENTS
+#   programs such as globalmutexchild which the various TESTS will invoke
+#   to validate process creation, pipes, dso mechanisms and so forth
+
+# Windows Specific;
+# MODEL
+#   dynamic or static - refers to which set of bindings are desired
+#   and controls which libraries (apr-1 or libapr-1) will be linked.
+# OUTDIR
+#   the library path of the libraries, and also the path within test/
+#   where all of the tests for that library will be built
+
+!IFNDEF MODEL
+MODEL=dynamic
+!ENDIF
+
+INCDIR=../include
+
+!IFNDEF OUTDIR
+!IF "$(MODEL)" == "static"
+OUTDIR=LibR
+!ELSE
+OUTDIR=Release
+!ENDIF
+
+!IF [$(COMSPEC) /c cl /nologo /? \
+	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
+OUTDIR=x64\$(OUTDIR)
+!ENDIF
+!ENDIF
+
+!IF !EXIST("$(OUTDIR)\.")
+!IF ([$(COMSPEC) /C mkdir $(OUTDIR)] == 0)
+!ENDIF
+!ENDIF
+
+!IFNDEF INTDIR
+INTDIR=$(OUTDIR)
+!ELSE
+!IF !EXIST("$(INTDIR)\.")
+!IF ([$(COMSPEC) /C mkdir $(INTDIR)] == 0)
+!ENDIF
+!ENDIF
+!ENDIF
+
+!MESSAGE Building tests into $(OUTDIR) for $(MODEL)
+
+STDTEST_PORTABLE = \
+	$(OUTDIR)\testapp.exe \
+	$(OUTDIR)\testall.exe \
+	$(OUTDIR)\testlockperf.exe \
+	$(OUTDIR)\testmutexscope.exe
+
+OTHER_PROGRAMS = \
+	$(OUTDIR)\echod.exe \
+	$(OUTDIR)\sendfile.exe \
+	$(OUTDIR)\sockperf.exe
+
+TESTALL_COMPONENTS = \
+	$(OUTDIR)\mod_test.dll \
+	$(OUTDIR)\occhild.exe \
+	$(OUTDIR)\readchild.exe \
+	$(OUTDIR)\proc_child.exe \
+        $(OUTDIR)\tryread.exe \
+	$(OUTDIR)\sockchild.exe \
+	$(OUTDIR)\testshmproducer.exe \
+	$(OUTDIR)\testshmconsumer.exe \
+	$(OUTDIR)\globalmutexchild.exe
+
+ALL_TESTS = $(INTDIR)\testutil.obj $(INTDIR)\testtime.obj \
+	$(INTDIR)\teststr.obj $(INTDIR)\testvsn.obj \
+	$(INTDIR)\testipsub.obj $(INTDIR)\testmmap.obj \
+	$(INTDIR)\testud.obj $(INTDIR)\testtable.obj \
+	$(INTDIR)\testsleep.obj $(INTDIR)\testpools.obj \
+	$(INTDIR)\testfmt.obj $(INTDIR)\testfile.obj \
+	$(INTDIR)\testdir.obj $(INTDIR)\testfileinfo.obj \
+	$(INTDIR)\testrand.obj $(INTDIR)\testdso.obj \
+	$(INTDIR)\testoc.obj $(INTDIR)\testdup.obj \
+	$(INTDIR)\testsockets.obj $(INTDIR)\testproc.obj \
+	$(INTDIR)\testpoll.obj $(INTDIR)\testlock.obj \
+	$(INTDIR)\testsockopt.obj $(INTDIR)\testpipe.obj \
+	$(INTDIR)\testthread.obj $(INTDIR)\testhash.obj \
+	$(INTDIR)\testargs.obj $(INTDIR)\testnames.obj \
+	$(INTDIR)\testuser.obj $(INTDIR)\testpath.obj \
+	$(INTDIR)\testenv.obj $(INTDIR)\testprocmutex.obj \
+	$(INTDIR)\testfnmatch.obj $(INTDIR)\testatomic.obj \
+	$(INTDIR)\testflock.obj $(INTDIR)\testshm.obj \
+	$(INTDIR)\testsock.obj $(INTDIR)\testglobalmutex.obj \
+	$(INTDIR)\teststrnatcmp.obj $(INTDIR)\testfilecopy.obj \
+	$(INTDIR)\testtemp.obj $(INTDIR)\testlfs.obj \
+	$(INTDIR)\testcond.obj $(INTDIR)\testescape.obj \
+	$(INTDIR)\testskiplist.obj
+
+CLEAN_DATA = testfile.tmp lfstests\large.bin \
+	data\testputs.txt data\testbigfprintf.dat \
+	data\testwritev.txt data\testwritev_full.txt \
+	data\testflush.dat data\testxthread.dat \
+	data\apr.testshm.shm lfstests\buffer.bin
+
+CLEAN_BUILDDIRS = Debug Release LibD LibR 9x x64
+
+TEST_SUBDIRS = internal
+
+PROGRAMS = $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE) \
+	$(OTHER_PROGRAMS)
+
+TARGETS = $(PROGRAMS)
+
+# bring in rules.mk for standard functionality
+ALL: $(TARGETS)
+
+CL = cl.exe
+LD = link.exe 
+
+!IF "$(MODEL)" == "static"
+LOCAL_LIB= ..\$(OUTDIR)\apr-1.lib 
+APP_LIB= ..\$(OUTDIR)\aprapp-1.lib 
+STATIC_CFLAGS = /D APR_DECLARE_STATIC
+!ELSE
+LOCAL_LIB= ..\$(OUTDIR)\libapr-1.lib 
+APP_LIB= ..\$(OUTDIR)\libaprapp-1.lib 
+STATIC_CFLAGS = 
+!ENDIF
+
+!IFDEF _DEBUG
+DEBUG_CFLAGS = /MDd
+!ELSE
+DEBUG_CFLAGS = /MD 
+!ENDIF
+
+INCLUDES=/I "$(INCDIR)"
+
+CFLAGS = /nologo /c /W3 /Gm /EHsc /Zi /Od $(INCLUDES) \
+	 $(STATIC_CFLAGS) $(DEBUG_CFLAGS) /D "BINPATH=$(OUTDIR:\=/)" \
+	 /D _DEBUG /D WIN32 /Fo"$(INTDIR)/" /FD
+
+LD_LIBS = kernel32.lib advapi32.lib ws2_32.lib wsock32.lib \
+	  ole32.lib shell32.lib rpcrt4.lib
+
+LDFLAGS = /nologo /debug /subsystem:console /incremental:no 
+SHLDFLAGS = /nologo /dll /debug /subsystem:windows /incremental:no
+
+.c{$(INTDIR)}.obj::
+	$(CL) $(CFLAGS) -c $< -Fd$(INTDIR)\ $(INCLUDES)
+
+# STDTEST_PORTABLE;
+
+$(OUTDIR)\testall.exe: $(ALL_TESTS) $(INTDIR)\abts.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\testapp.exe: $(INTDIR)/testapp.obj $(LOCAL_LIB) $(APP_LIB) 
+	$(LD) $(LDFLAGS) /entry:wmainCRTStartup /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;2
+
+$(OUTDIR)\testlockperf.exe: $(INTDIR)\testlockperf.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\testmutexscope.exe: $(INTDIR)\testmutexscope.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+# OTHER_PROGRAMS;
+
+$(OUTDIR)\echod.exe: $(INTDIR)\echod.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\sendfile.exe: $(INTDIR)\sendfile.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\sockperf.exe: $(INTDIR)\sockperf.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+# TESTALL_COMPONENTS;
+
+$(OUTDIR)\globalmutexchild.exe: $(INTDIR)\globalmutexchild.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\mod_test.dll: $(INTDIR)/mod_test.obj $(LOCAL_LIB) 
+	$(LD) $(SHLDFLAGS) /out:"$@" $** \
+	       /export:print_hello /export:count_reps $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;2
+
+$(OUTDIR)\occhild.exe: $(INTDIR)\occhild.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\proc_child.exe: $(INTDIR)\proc_child.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\readchild.exe: $(INTDIR)\readchild.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\sockchild.exe: $(INTDIR)\sockchild.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\testshmconsumer.exe: $(INTDIR)\testshmconsumer.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\testshmproducer.exe: $(INTDIR)\testshmproducer.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+$(OUTDIR)\tryread.exe: $(INTDIR)\tryread.obj $(LOCAL_LIB)
+	$(LD) $(LDFLAGS) /out:"$@" $** $(LD_LIBS)
+	@if exist "$@.manifest" \
+	    mt.exe -manifest "$@.manifest" -outputresource:$@;1
+
+
+cleandata:
+	@for %f in ($(CLEAN_DATA)) do @if EXIST %f del /f %f
+
+clean: cleandata
+	@if EXIST $(INTDIR)\. rmdir /s /q $(INTDIR)
+	@if EXIST $(OUTDIR)\. rmdir /s /q $(OUTDIR)
+	@for %d in ($(TEST_SUBDIRS)) do \
+	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win clean" \
+
+cleanall: 
+	@for %d in ($(CLEAN_BUILDDIRS) $(INTDIR) $(OUTDIR)) do \
+	    @if EXIST %d\. rmdir /s /q %d
+	@for %d in ($(TEST_SUBDIRS)) do \
+	    %COMSPEC% /c "cd %%d & $(MAKE) -f Makefile.win cleanall" \
+
+
+!IF "$(MODEL)" != "static"
+PATH=$(OUTDIR);..\$(OUTDIR);$(PATH)
+!ENDIF
+
+check: $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)
+	@for %p in ($(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE)) do @( \
+	    echo Testing %p && %p -v || echo %p failed \
+	)
+
+checkall: check
+	@for %d in ($(TEST_SUBDIRS)) do \
+	    %COMSPEC% /c "cd %%d && $(MAKE) -f Makefile.win check" \
+
+# DO NOT REMOVE

Deleted: vendor/apache/apr/1.5.2/test/NWGNUaprtest
===================================================================
--- vendor/apache/apr/dist/test/NWGNUaprtest	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/NWGNUaprtest	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,305 +0,0 @@
-#
-# Make sure all needed macro's are defined
-#
-
-#
-# Get the 'head' of the build environment if necessary.  This includes default
-# targets and paths to tools
-#
-
-ifndef EnvironmentDefined
-include $(APR_WORK)/build/NWGNUhead.inc
-endif
-
-#
-# These directories will be at the beginning of the include list, followed by
-# INCDIRS
-#
-XINCDIRS	+= \
-			$(APR)/include \
-			$(APR)/include/arch/NetWare \
-			$(EOLIST)
-
-#
-# These flags will come after CFLAGS
-#
-XCFLAGS		+= \
-			$(EOLIST)
-
-#
-# These defines will come after DEFINES
-#
-XDEFINES	+= \
-			$(EOLIST)
-
-#
-# These flags will be added to the link.opt file
-#
-XLFLAGS		+= \
-			$(EOLIST)
-
-#
-# These values will be appended to the correct variables based on the value of
-# RELEASE
-#
-ifeq "$(RELEASE)" "debug"
-XINCDIRS	+= \
-			$(EOLIST)
-
-XCFLAGS		+= \
-			$(EOLIST)
-
-XDEFINES	+= \
-			$(EOLIST)
-
-XLFLAGS		+= \
-			$(EOLIST)
-endif
-
-ifeq "$(RELEASE)" "noopt"
-XINCDIRS	+= \
-			$(EOLIST)
-
-XCFLAGS		+= \
-			$(EOLIST)
-
-XDEFINES	+= \
-			$(EOLIST)
-
-XLFLAGS		+= \
-			$(EOLIST)
-endif
-
-ifeq "$(RELEASE)" "release"
-XINCDIRS	+= \
-			$(EOLIST)
-
-XCFLAGS		+= \
-			$(EOLIST)
-
-XDEFINES	+= \
-			$(EOLIST)
-
-XLFLAGS		+= \
-			$(EOLIST)
-endif
-
-#
-# These are used by the link target if an NLM is being generated
-# This is used by the link 'name' directive to name the nlm.  If left blank
-# TARGET_nlm (see below) will be used.
-#
-NLM_NAME	= aprtest
-#
-# This is used by the link '-desc ' directive. 
-# If left blank, NLM_NAME will be used.
-#
-NLM_DESCRIPTION	= NLM is to test the apr layer
-
-#
-# This is used by the '-threadname' directive.  If left blank,
-# NLM_NAME Thread will be used.
-#
-NLM_THREAD_NAME	= $(NLM_NAME)
-
-#
-# This is used by the '-screenname' directive.  If left blank,
-# 'Apache for NetWare' Thread will be used.
-#
-NLM_SCREEN_NAME = aprtest
-
-#
-# If this is specified, it will override VERSION value in 
-# $(APR_WORK)/build/NWGNUenvironment.inc
-#
-NLM_VERSION	=
-
-#
-# If this is specified, it will override the default of 64K
-#
-NLM_STACK_SIZE	= 524288
-
-#
-# If this is specified it will be used by the link '-entry' directive
-#
-NLM_ENTRY_SYM	=
-
-#
-# If this is specified it will be used by the link '-exit' directive
-#
-NLM_EXIT_SYM	=
-
-#
-# If this is specified it will be used by the link '-check' directive
-#
-NLM_CHECK_SYM	=
-
-#
-# If this is specified it will be used by the link '-flags' directive
-#
-NLM_FLAGS	=
- 
-#
-# If this is specified it will be linked in with the XDCData option in the def 
-# file instead of the default of $(APR)/misc/netware/apache.xdc.  XDCData can 
-# be disabled by setting APACHE_UNIPROC in the environment
-#
-XDCDATA		= 
-
-#
-# Declare all target files (you must add your files here)
-#
-
-#
-# If there is an NLM target, put it here
-#
-TARGET_nlm = \
-	$(OBJDIR)/aprtest.nlm \
-	$(EOLIST)
-
-#
-# If there is an LIB target, put it here
-#
-TARGET_lib = \
-	$(EOLIST)
-
-#
-# These are the OBJ files needed to create the NLM target above.
-# Paths must all use the '/' character
-#
-
-FILES_nlm_objs = \
-	$(OBJDIR)/abts.o \
-	$(OBJDIR)/testargs.o \
-	$(OBJDIR)/testatomic.o \
-	$(OBJDIR)/testdir.o \
-	$(OBJDIR)/testdup.o \
-	$(OBJDIR)/testdso.o \
-	$(OBJDIR)/testenv.o \
-	$(OBJDIR)/testfilecopy.o \
-	$(OBJDIR)/testfileinfo.o \
-	$(OBJDIR)/testfile.o \
-	$(OBJDIR)/testflock.o \
-	$(OBJDIR)/testfmt.o \
-	$(OBJDIR)/testfnmatch.o \
-	$(OBJDIR)/testglobalmutex.o \
-	$(OBJDIR)/testhash.o \
-	$(OBJDIR)/testipsub.o \
-	$(OBJDIR)/testlfs.o \
-	$(OBJDIR)/testlock.o \
-        $(OBJDIR)/testcond.o \
-	$(OBJDIR)/testmmap.o \
-	$(OBJDIR)/testnames.o \
-	$(OBJDIR)/testoc.o \
-	$(OBJDIR)/testpath.o \
-	$(OBJDIR)/testpipe.o \
-	$(OBJDIR)/testpoll.o \
-	$(OBJDIR)/testpools.o \
-	$(OBJDIR)/testproc.o \
-	$(OBJDIR)/testprocmutex.o \
-	$(OBJDIR)/testrand.o \
-	$(OBJDIR)/testshm.o \
-	$(OBJDIR)/testsleep.o \
-	$(OBJDIR)/testsock.o \
-	$(OBJDIR)/testsockets.o \
-	$(OBJDIR)/testsockopt.o \
-	$(OBJDIR)/teststr.o \
-	$(OBJDIR)/teststrnatcmp.o \
-	$(OBJDIR)/testtable.o \
-	$(OBJDIR)/testtemp.o \
-	$(OBJDIR)/testthread.o \
-	$(OBJDIR)/testtime.o \
-	$(OBJDIR)/testud.o \
-	$(OBJDIR)/testuser.o \
-	$(OBJDIR)/testutil.o \
-	$(OBJDIR)/testvsn.o \
-	$(OBJDIR)/nw_misc.o \
-	$(EOLIST) 
-
-# Pending tests
-	
-#
-# These are the LIB files needed to create the NLM target above.
-# These will be added as a library command in the link.opt file.
-#
-FILES_nlm_libs = \
-	$(PRELUDE) \
-	$(EOLIST)
-
-#
-# These are the modules that the above NLM target depends on to load.
-# These will be added as a module command in the link.opt file.
-#
-FILES_nlm_modules = \
-	Libc \
-	APRLIB \
-	$(EOLIST)
-
-#
-# If the nlm has a msg file, put it's path here
-#
-FILE_nlm_msg =
- 
-#
-# If the nlm has a hlp file put it's path here
-#
-FILE_nlm_hlp =
-
-#
-# If this is specified, it will override the default copyright.
-#
-FILE_nlm_copyright =
-
-#
-# Any additional imports go here
-#
-FILES_nlm_Ximports = \
-	@libc.imp \
-	@aprlib.imp \
-	$(EOLIST)
-
-# Don't link with Winsock if standard sockets are being used
-ifndef USE_STDSOCKETS
-FILES_nlm_Ximports += @ws2nlm.imp \
-	$(EOLIST)
-endif
-
-#   
-# Any symbols exported to here
-#
-FILES_nlm_exports = \
-	$(EOLIST)
-
-#   
-# These are the OBJ files needed to create the LIB target above.
-# Paths must all use the '/' character
-#
-FILES_lib_objs = \
-	$(EOLIST)
-
-#
-# implement targets and dependancies (leave this section alone)
-#
-
-libs :: $(OBJDIR) $(TARGET_lib)
-
-nlms :: libs $(TARGET_nlm)
-
-#
-# Updated this target to create necessary directories and copy files to the 
-# correct place.  (See $(APR_WORK)/build/NWGNUhead.inc for examples)
-#
-install :: nlms FORCE
-
-#
-# Any specialized rules here
-#
-
-
-#
-# Include the 'tail' makefile that has targets that depend on variables defined
-# in this makefile
-#
-
-include $(APRBUILD)/NWGNUtail.inc
-

Copied: vendor/apache/apr/1.5.2/test/NWGNUaprtest (from rev 9273, vendor/apache/apr/dist/test/NWGNUaprtest)
===================================================================
--- vendor/apache/apr/1.5.2/test/NWGNUaprtest	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/NWGNUaprtest	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,307 @@
+#
+# Make sure all needed macro's are defined
+#
+
+#
+# Get the 'head' of the build environment if necessary.  This includes default
+# targets and paths to tools
+#
+
+ifndef EnvironmentDefined
+include $(APR_WORK)/build/NWGNUhead.inc
+endif
+
+#
+# These directories will be at the beginning of the include list, followed by
+# INCDIRS
+#
+XINCDIRS	+= \
+			$(APR)/include \
+			$(APR)/include/arch/NetWare \
+			$(EOLIST)
+
+#
+# These flags will come after CFLAGS
+#
+XCFLAGS		+= \
+			$(EOLIST)
+
+#
+# These defines will come after DEFINES
+#
+XDEFINES	+= \
+			$(EOLIST)
+
+#
+# These flags will be added to the link.opt file
+#
+XLFLAGS		+= \
+			$(EOLIST)
+
+#
+# These values will be appended to the correct variables based on the value of
+# RELEASE
+#
+ifeq "$(RELEASE)" "debug"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+ifeq "$(RELEASE)" "noopt"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+ifeq "$(RELEASE)" "release"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+#
+# These are used by the link target if an NLM is being generated
+# This is used by the link 'name' directive to name the nlm.  If left blank
+# TARGET_nlm (see below) will be used.
+#
+NLM_NAME	= aprtest
+#
+# This is used by the link '-desc ' directive. 
+# If left blank, NLM_NAME will be used.
+#
+NLM_DESCRIPTION	= NLM is to test the apr layer
+
+#
+# This is used by the '-threadname' directive.  If left blank,
+# NLM_NAME Thread will be used.
+#
+NLM_THREAD_NAME	= $(NLM_NAME)
+
+#
+# This is used by the '-screenname' directive.  If left blank,
+# 'Apache for NetWare' Thread will be used.
+#
+NLM_SCREEN_NAME = aprtest
+
+#
+# If this is specified, it will override VERSION value in 
+# $(APR_WORK)/build/NWGNUenvironment.inc
+#
+NLM_VERSION	=
+
+#
+# If this is specified, it will override the default of 64K
+#
+NLM_STACK_SIZE	= 524288
+
+#
+# If this is specified it will be used by the link '-entry' directive
+#
+NLM_ENTRY_SYM	=
+
+#
+# If this is specified it will be used by the link '-exit' directive
+#
+NLM_EXIT_SYM	=
+
+#
+# If this is specified it will be used by the link '-check' directive
+#
+NLM_CHECK_SYM	=
+
+#
+# If this is specified it will be used by the link '-flags' directive
+#
+NLM_FLAGS	=
+ 
+#
+# If this is specified it will be linked in with the XDCData option in the def 
+# file instead of the default of $(APR)/misc/netware/apache.xdc.  XDCData can 
+# be disabled by setting APACHE_UNIPROC in the environment
+#
+XDCDATA		= 
+
+#
+# Declare all target files (you must add your files here)
+#
+
+#
+# If there is an NLM target, put it here
+#
+TARGET_nlm = \
+	$(OBJDIR)/aprtest.nlm \
+	$(EOLIST)
+
+#
+# If there is an LIB target, put it here
+#
+TARGET_lib = \
+	$(EOLIST)
+
+#
+# These are the OBJ files needed to create the NLM target above.
+# Paths must all use the '/' character
+#
+
+FILES_nlm_objs = \
+	$(OBJDIR)/abts.o \
+	$(OBJDIR)/testargs.o \
+	$(OBJDIR)/testatomic.o \
+	$(OBJDIR)/testdir.o \
+	$(OBJDIR)/testdup.o \
+	$(OBJDIR)/testdso.o \
+	$(OBJDIR)/testenv.o \
+	$(OBJDIR)/testescape.o \
+	$(OBJDIR)/testfilecopy.o \
+	$(OBJDIR)/testfileinfo.o \
+	$(OBJDIR)/testfile.o \
+	$(OBJDIR)/testflock.o \
+	$(OBJDIR)/testfmt.o \
+	$(OBJDIR)/testfnmatch.o \
+	$(OBJDIR)/testglobalmutex.o \
+	$(OBJDIR)/testhash.o \
+	$(OBJDIR)/testipsub.o \
+	$(OBJDIR)/testlfs.o \
+	$(OBJDIR)/testlock.o \
+        $(OBJDIR)/testcond.o \
+	$(OBJDIR)/testmmap.o \
+	$(OBJDIR)/testnames.o \
+	$(OBJDIR)/testoc.o \
+	$(OBJDIR)/testpath.o \
+	$(OBJDIR)/testpipe.o \
+	$(OBJDIR)/testpoll.o \
+	$(OBJDIR)/testpools.o \
+	$(OBJDIR)/testproc.o \
+	$(OBJDIR)/testprocmutex.o \
+	$(OBJDIR)/testrand.o \
+	$(OBJDIR)/testshm.o \
+	$(OBJDIR)/testskiplist.o \
+	$(OBJDIR)/testsleep.o \
+	$(OBJDIR)/testsock.o \
+	$(OBJDIR)/testsockets.o \
+	$(OBJDIR)/testsockopt.o \
+	$(OBJDIR)/teststr.o \
+	$(OBJDIR)/teststrnatcmp.o \
+	$(OBJDIR)/testtable.o \
+	$(OBJDIR)/testtemp.o \
+	$(OBJDIR)/testthread.o \
+	$(OBJDIR)/testtime.o \
+	$(OBJDIR)/testud.o \
+	$(OBJDIR)/testuser.o \
+	$(OBJDIR)/testutil.o \
+	$(OBJDIR)/testvsn.o \
+	$(OBJDIR)/nw_misc.o \
+	$(EOLIST) 
+
+# Pending tests
+	
+#
+# These are the LIB files needed to create the NLM target above.
+# These will be added as a library command in the link.opt file.
+#
+FILES_nlm_libs = \
+	$(PRELUDE) \
+	$(EOLIST)
+
+#
+# These are the modules that the above NLM target depends on to load.
+# These will be added as a module command in the link.opt file.
+#
+FILES_nlm_modules = \
+	Libc \
+	APRLIB \
+	$(EOLIST)
+
+#
+# If the nlm has a msg file, put it's path here
+#
+FILE_nlm_msg =
+ 
+#
+# If the nlm has a hlp file put it's path here
+#
+FILE_nlm_hlp =
+
+#
+# If this is specified, it will override the default copyright.
+#
+FILE_nlm_copyright =
+
+#
+# Any additional imports go here
+#
+FILES_nlm_Ximports = \
+	@libc.imp \
+	@aprlib.imp \
+	$(EOLIST)
+
+# Don't link with Winsock if standard sockets are being used
+ifndef USE_STDSOCKETS
+FILES_nlm_Ximports += @ws2nlm.imp \
+	$(EOLIST)
+endif
+
+#   
+# Any symbols exported to here
+#
+FILES_nlm_exports = \
+	$(EOLIST)
+
+#   
+# These are the OBJ files needed to create the LIB target above.
+# Paths must all use the '/' character
+#
+FILES_lib_objs = \
+	$(EOLIST)
+
+#
+# implement targets and dependancies (leave this section alone)
+#
+
+libs :: $(OBJDIR) $(TARGET_lib)
+
+nlms :: libs $(TARGET_nlm)
+
+#
+# Updated this target to create necessary directories and copy files to the 
+# correct place.  (See $(APR_WORK)/build/NWGNUhead.inc for examples)
+#
+install :: nlms FORCE
+
+#
+# Any specialized rules here
+#
+
+
+#
+# Include the 'tail' makefile that has targets that depend on variables defined
+# in this makefile
+#
+
+include $(APRBUILD)/NWGNUtail.inc
+

Deleted: vendor/apache/apr/1.5.2/test/abts.c
===================================================================
--- vendor/apache/apr/dist/test/abts.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/abts.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,430 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "abts.h"
-#include "abts_tests.h"
-#include "testutil.h"
-
-#define ABTS_STAT_SIZE 6
-static char status[ABTS_STAT_SIZE] = {'|', '/', '-', '|', '\\', '-'};
-static int curr_char;
-static int verbose = 0;
-static int exclude = 0;
-static int quiet = 0;
-static int list_tests = 0;
-
-const char **testlist = NULL;
-
-static int find_test_name(const char *testname) {
-    int i;
-    for (i = 0; testlist[i] != NULL; i++) {
-        if (!strcmp(testlist[i], testname)) {
-            return 1;
-        }
-    }
-    return 0;
-}
-
-/* Determine if the test should be run at all */
-static int should_test_run(const char *testname) {
-    int found = 0;
-    if (list_tests == 1) {
-        return 0;
-    }
-    if (testlist == NULL) {
-        return 1;
-    }
-    found = find_test_name(testname);
-    if ((found && !exclude) || (!found && exclude)) {
-        return 1;
-    }
-    return 0;
-}
-
-static void reset_status(void)
-{
-    curr_char = 0;
-}
-
-static void update_status(void)
-{
-    if (!quiet) {
-        curr_char = (curr_char + 1) % ABTS_STAT_SIZE;
-        fprintf(stdout, "\b%c", status[curr_char]);
-        fflush(stdout);
-    }
-}
-
-static void end_suite(abts_suite *suite)
-{
-    if (suite != NULL) {
-        sub_suite *last = suite->tail;
-        if (!quiet) {
-            fprintf(stdout, "\b");
-            fflush(stdout);
-        }
-        if (last->failed == 0) {
-            fprintf(stdout, "SUCCESS\n");
-            fflush(stdout);
-        }
-        else {
-            fprintf(stdout, "FAILED %d of %d\n", last->failed, last->num_test);
-            fflush(stdout);
-        }
-    }
-}
-
-abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name_full)
-{
-    sub_suite *subsuite;
-    char *p;
-    const char *suite_name;
-    curr_char = 0;
-    
-    /* Only end the suite if we actually ran it */
-    if (suite && suite->tail &&!suite->tail->not_run) {
-        end_suite(suite);
-    }
-
-    subsuite = malloc(sizeof(*subsuite));
-    subsuite->num_test = 0;
-    subsuite->failed = 0;
-    subsuite->next = NULL;
-    /* suite_name_full may be an absolute path depending on __FILE__ 
-     * expansion */
-    suite_name = strrchr(suite_name_full, '/');
-    if (suite_name) {
-        suite_name++;
-    } else {
-        suite_name = suite_name_full;
-    }
-    p = strrchr(suite_name, '.');
-    if (p) {
-        subsuite->name = memcpy(calloc(p - suite_name + 1, 1),
-                                suite_name, p - suite_name);
-    }
-    else {
-        subsuite->name = suite_name;
-    }
-
-    if (list_tests) {
-        fprintf(stdout, "%s\n", subsuite->name);
-    }
-    
-    subsuite->not_run = 0;
-
-    if (suite == NULL) {
-        suite = malloc(sizeof(*suite));
-        suite->head = subsuite;
-        suite->tail = subsuite;
-    }
-    else {
-        suite->tail->next = subsuite;
-        suite->tail = subsuite;
-    }
-
-    if (!should_test_run(subsuite->name)) {
-        subsuite->not_run = 1;
-        return suite;
-    }
-
-    reset_status();
-    fprintf(stdout, "%-20s:  ", subsuite->name);
-    update_status();
-    fflush(stdout);
-
-    return suite;
-}
-
-void abts_run_test(abts_suite *ts, test_func f, void *value)
-{
-    abts_case tc;
-    sub_suite *ss;
-
-    if (!should_test_run(ts->tail->name)) {
-        return;
-    }
-    ss = ts->tail;
-
-    tc.failed = 0;
-    tc.suite = ss;
-    
-    ss->num_test++;
-    update_status();
-
-    f(&tc, value);
-    
-    if (tc.failed) {
-        ss->failed++;
-    }
-}
-
-static int report(abts_suite *suite)
-{
-    int count = 0;
-    sub_suite *dptr;
-
-    if (suite && suite->tail &&!suite->tail->not_run) {
-        end_suite(suite);
-    }
-
-    for (dptr = suite->head; dptr; dptr = dptr->next) {
-        count += dptr->failed;
-    }
-
-    if (list_tests) {
-        return 0;
-    }
-
-    if (count == 0) {
-        printf("All tests passed.\n");
-        return 0;
-    }
-
-    dptr = suite->head;
-    fprintf(stdout, "%-15s\t\tTotal\tFail\tFailed %%\n", "Failed Tests");
-    fprintf(stdout, "===================================================\n");
-    while (dptr != NULL) {
-        if (dptr->failed != 0) {
-            float percent = ((float)dptr->failed / (float)dptr->num_test);
-            fprintf(stdout, "%-15s\t\t%5d\t%4d\t%6.2f%%\n", dptr->name, 
-                    dptr->num_test, dptr->failed, percent * 100);
-        }
-        dptr = dptr->next;
-    }
-    return 1;
-}
-
-void abts_log_message(const char *fmt, ...)
-{
-    va_list args;
-    update_status();
-
-    if (verbose) {
-        va_start(args, fmt);
-        vfprintf(stderr, fmt, args);
-        va_end(args);
-        fprintf(stderr, "\n");
-        fflush(stderr);
-    }
-}
-
-void abts_int_equal(abts_case *tc, const int expected, const int actual, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (expected == actual) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual);
-        fflush(stderr);
-    }
-}
-
-void abts_int_nequal(abts_case *tc, const int expected, const int actual, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (expected != actual) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual);
-        fflush(stderr);
-    }
-}
-
-void abts_size_equal(abts_case *tc, size_t expected, size_t actual, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (expected == actual) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        /* Note that the comparison is type-exact, reporting must be a best-fit */
-        fprintf(stderr, "Line %d: expected %lu, but saw %lu\n", lineno, 
-                (unsigned long)expected, (unsigned long)actual);
-        fflush(stderr);
-    }
-}
-
-void abts_str_equal(abts_case *tc, const char *expected, const char *actual, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (!expected && !actual) return;
-    if (expected && actual)
-        if (!strcmp(expected, actual)) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual);
-        fflush(stderr);
-    }
-}
-
-void abts_str_nequal(abts_case *tc, const char *expected, const char *actual,
-                       size_t n, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (!strncmp(expected, actual, n)) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual);
-        fflush(stderr);
-    }
-}
-
-void abts_ptr_notnull(abts_case *tc, const void *ptr, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (ptr != NULL) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: expected non-NULL, but saw NULL\n", lineno);
-        fflush(stderr);
-    }
-}
- 
-void abts_ptr_equal(abts_case *tc, const void *expected, const void *actual, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (expected == actual) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: expected <%p>, but saw <%p>\n", lineno, expected, actual);
-        fflush(stderr);
-    }
-}
-
-void abts_fail(abts_case *tc, const char *message, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: %s\n", lineno, message);
-        fflush(stderr);
-    }
-}
- 
-void abts_assert(abts_case *tc, const char *message, int condition, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (condition) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: %s\n", lineno, message);
-        fflush(stderr);
-    }
-}
-
-void abts_true(abts_case *tc, int condition, int lineno)
-{
-    update_status();
-    if (tc->failed) return;
-
-    if (condition) return;
-
-    tc->failed = TRUE;
-    if (verbose) {
-        fprintf(stderr, "Line %d: Condition is false, but expected true\n", lineno);
-        fflush(stderr);
-    }
-}
-
-void abts_not_impl(abts_case *tc, const char *message, int lineno)
-{
-    update_status();
-
-    tc->suite->not_impl++;
-    if (verbose) {
-        fprintf(stderr, "Line %d: %s\n", lineno, message);
-        fflush(stderr);
-    }
-}
-
-int main(int argc, const char *const argv[]) {
-    int i;
-    int rv;
-    int list_provided = 0;
-    abts_suite *suite = NULL;
-   
-    initialize();
-
-    quiet = !isatty(STDOUT_FILENO);
-
-    for (i = 1; i < argc; i++) {
-        if (!strcmp(argv[i], "-v")) {
-            verbose = 1;
-            continue;
-        }
-        if (!strcmp(argv[i], "-x")) {
-            exclude = 1;
-            continue;
-        }
-        if (!strcmp(argv[i], "-l")) {
-            list_tests = 1;
-            continue;
-        }
-        if (!strcmp(argv[i], "-q")) {
-            quiet = 1;
-            continue;
-        }
-        if (argv[i][0] == '-') {
-            fprintf(stderr, "Invalid option: `%s'\n", argv[i]);
-            exit(1);
-        }
-        list_provided = 1;
-    }
-
-    if (list_provided) {
-        /* Waste a little space here, because it is easier than counting the
-         * number of tests listed.  Besides it is at most three char *.
-         */
-        testlist = calloc(argc + 1, sizeof(char *));
-        for (i = 1; i < argc; i++) {
-            testlist[i - 1] = argv[i];
-        }
-    }
-
-    for (i = 0; i < (sizeof(alltests) / sizeof(struct testlist *)); i++) {
-        suite = alltests[i].func(suite);
-    }
-
-    rv = report(suite);
-    return rv;
-}
-       

Copied: vendor/apache/apr/1.5.2/test/abts.c (from rev 9273, vendor/apache/apr/dist/test/abts.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/abts.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/abts.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,435 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "abts.h"
+#include "abts_tests.h"
+#include "testutil.h"
+
+#define ABTS_STAT_SIZE 6
+static char status[ABTS_STAT_SIZE] = {'|', '/', '-', '|', '\\', '-'};
+static int curr_char;
+static int verbose = 0;
+static int exclude = 0;
+static int quiet = 0;
+static int list_tests = 0;
+
+const char **testlist = NULL;
+
+static int find_test_name(const char *testname) {
+    int i;
+    for (i = 0; testlist[i] != NULL; i++) {
+        if (!strcmp(testlist[i], testname)) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+/* Determine if the test should be run at all */
+static int should_test_run(const char *testname) {
+    int found = 0;
+    if (list_tests == 1) {
+        return 0;
+    }
+    if (testlist == NULL) {
+        return 1;
+    }
+    found = find_test_name(testname);
+    if ((found && !exclude) || (!found && exclude)) {
+        return 1;
+    }
+    return 0;
+}
+
+static void reset_status(void)
+{
+    curr_char = 0;
+}
+
+static void update_status(void)
+{
+    if (!quiet) {
+        curr_char = (curr_char + 1) % ABTS_STAT_SIZE;
+        fprintf(stdout, "\b%c", status[curr_char]);
+        fflush(stdout);
+    }
+}
+
+static void end_suite(abts_suite *suite)
+{
+    if (suite != NULL) {
+        sub_suite *last = suite->tail;
+        if (!quiet) {
+            fprintf(stdout, "\b");
+            fflush(stdout);
+        }
+        if (last->failed == 0) {
+            fprintf(stdout, "SUCCESS\n");
+            fflush(stdout);
+        }
+        else {
+            fprintf(stdout, "FAILED %d of %d\n", last->failed, last->num_test);
+            fflush(stdout);
+        }
+    }
+}
+
+abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name_full)
+{
+    sub_suite *subsuite;
+    char *p;
+    const char *suite_name;
+    curr_char = 0;
+    
+    /* Only end the suite if we actually ran it */
+    if (suite && suite->tail &&!suite->tail->not_run) {
+        end_suite(suite);
+    }
+
+    subsuite = malloc(sizeof(*subsuite));
+    subsuite->num_test = 0;
+    subsuite->failed = 0;
+    subsuite->next = NULL;
+    /* suite_name_full may be an absolute path depending on __FILE__ 
+     * expansion */
+    suite_name = strrchr(suite_name_full, '/');
+    if (!suite_name) {
+        suite_name = strrchr(suite_name_full, '\\');
+    }
+    if (suite_name) {
+        suite_name++;
+    } else {
+        suite_name = suite_name_full;
+    }
+    p = strrchr(suite_name, '.');
+    if (p) {
+        subsuite->name = memcpy(calloc(p - suite_name + 1, 1),
+                                suite_name, p - suite_name);
+    }
+    else {
+        subsuite->name = suite_name;
+    }
+
+    if (list_tests) {
+        fprintf(stdout, "%s\n", subsuite->name);
+    }
+    
+    subsuite->not_run = 0;
+
+    if (suite == NULL) {
+        suite = malloc(sizeof(*suite));
+        suite->head = subsuite;
+        suite->tail = subsuite;
+    }
+    else {
+        suite->tail->next = subsuite;
+        suite->tail = subsuite;
+    }
+
+    if (!should_test_run(subsuite->name)) {
+        subsuite->not_run = 1;
+        return suite;
+    }
+
+    reset_status();
+    fprintf(stdout, "%-20s:  ", subsuite->name);
+    update_status();
+    fflush(stdout);
+
+    return suite;
+}
+
+void abts_run_test(abts_suite *ts, test_func f, void *value)
+{
+    abts_case tc;
+    sub_suite *ss;
+
+    if (!should_test_run(ts->tail->name)) {
+        return;
+    }
+    ss = ts->tail;
+
+    tc.failed = 0;
+    tc.suite = ss;
+    
+    ss->num_test++;
+    update_status();
+
+    f(&tc, value);
+    
+    if (tc.failed) {
+        ss->failed++;
+    }
+}
+
+static int report(abts_suite *suite)
+{
+    int count = 0;
+    sub_suite *dptr;
+
+    if (suite && suite->tail &&!suite->tail->not_run) {
+        end_suite(suite);
+    }
+
+    for (dptr = suite->head; dptr; dptr = dptr->next) {
+        count += dptr->failed;
+    }
+
+    if (list_tests) {
+        return 0;
+    }
+
+    if (count == 0) {
+        printf("All tests passed.\n");
+        return 0;
+    }
+
+    dptr = suite->head;
+    fprintf(stdout, "%-15s\t\tTotal\tFail\tFailed %%\n", "Failed Tests");
+    fprintf(stdout, "===================================================\n");
+    while (dptr != NULL) {
+        if (dptr->failed != 0) {
+            float percent = ((float)dptr->failed / (float)dptr->num_test);
+            fprintf(stdout, "%-15s\t\t%5d\t%4d\t%6.2f%%\n", dptr->name, 
+                    dptr->num_test, dptr->failed, percent * 100);
+        }
+        dptr = dptr->next;
+    }
+    return 1;
+}
+
+void abts_log_message(const char *fmt, ...)
+{
+    va_list args;
+    update_status();
+
+    if (verbose) {
+        va_start(args, fmt);
+        vfprintf(stderr, fmt, args);
+        va_end(args);
+        fprintf(stderr, "\n");
+        fflush(stderr);
+    }
+}
+
+void abts_int_equal(abts_case *tc, const int expected, const int actual, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (expected == actual) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual);
+        fflush(stderr);
+    }
+}
+
+void abts_int_nequal(abts_case *tc, const int expected, const int actual, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (expected != actual) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: expected something other than <%d>, but saw <%d>\n",
+                lineno, expected, actual);
+        fflush(stderr);
+    }
+}
+
+void abts_size_equal(abts_case *tc, size_t expected, size_t actual, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (expected == actual) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        /* Note that the comparison is type-exact, reporting must be a best-fit */
+        fprintf(stderr, "Line %d: expected %lu, but saw %lu\n", lineno, 
+                (unsigned long)expected, (unsigned long)actual);
+        fflush(stderr);
+    }
+}
+
+void abts_str_equal(abts_case *tc, const char *expected, const char *actual, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (!expected && !actual) return;
+    if (expected && actual)
+        if (!strcmp(expected, actual)) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual);
+        fflush(stderr);
+    }
+}
+
+void abts_str_nequal(abts_case *tc, const char *expected, const char *actual,
+                       size_t n, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (!strncmp(expected, actual, n)) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: expected something other than <%s>, but saw <%s>\n",
+                lineno, expected, actual);
+        fflush(stderr);
+    }
+}
+
+void abts_ptr_notnull(abts_case *tc, const void *ptr, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (ptr != NULL) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: expected non-NULL, but saw NULL\n", lineno);
+        fflush(stderr);
+    }
+}
+ 
+void abts_ptr_equal(abts_case *tc, const void *expected, const void *actual, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (expected == actual) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: expected <%p>, but saw <%p>\n", lineno, expected, actual);
+        fflush(stderr);
+    }
+}
+
+void abts_fail(abts_case *tc, const char *message, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: %s\n", lineno, message);
+        fflush(stderr);
+    }
+}
+ 
+void abts_assert(abts_case *tc, const char *message, int condition, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (condition) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: %s\n", lineno, message);
+        fflush(stderr);
+    }
+}
+
+void abts_true(abts_case *tc, int condition, int lineno)
+{
+    update_status();
+    if (tc->failed) return;
+
+    if (condition) return;
+
+    tc->failed = TRUE;
+    if (verbose) {
+        fprintf(stderr, "Line %d: Condition is false, but expected true\n", lineno);
+        fflush(stderr);
+    }
+}
+
+void abts_not_impl(abts_case *tc, const char *message, int lineno)
+{
+    update_status();
+
+    tc->suite->not_impl++;
+    if (verbose) {
+        fprintf(stderr, "Line %d: %s\n", lineno, message);
+        fflush(stderr);
+    }
+}
+
+int main(int argc, const char *const argv[]) {
+    int i;
+    int rv;
+    int list_provided = 0;
+    abts_suite *suite = NULL;
+   
+    initialize();
+
+    quiet = !isatty(STDOUT_FILENO);
+
+    for (i = 1; i < argc; i++) {
+        if (!strcmp(argv[i], "-v")) {
+            verbose = 1;
+            continue;
+        }
+        if (!strcmp(argv[i], "-x")) {
+            exclude = 1;
+            continue;
+        }
+        if (!strcmp(argv[i], "-l")) {
+            list_tests = 1;
+            continue;
+        }
+        if (!strcmp(argv[i], "-q")) {
+            quiet = 1;
+            continue;
+        }
+        if (argv[i][0] == '-') {
+            fprintf(stderr, "Invalid option: `%s'\n", argv[i]);
+            exit(1);
+        }
+        list_provided = 1;
+    }
+
+    if (list_provided) {
+        /* Waste a little space here, because it is easier than counting the
+         * number of tests listed.  Besides it is at most three char *.
+         */
+        testlist = calloc(argc + 1, sizeof(char *));
+        for (i = 1; i < argc; i++) {
+            testlist[i - 1] = argv[i];
+        }
+    }
+
+    for (i = 0; i < (sizeof(alltests) / sizeof(struct testlist *)); i++) {
+        suite = alltests[i].func(suite);
+    }
+
+    rv = report(suite);
+    return rv;
+}
+       

Deleted: vendor/apache/apr/1.5.2/test/abts_tests.h
===================================================================
--- vendor/apache/apr/dist/test/abts_tests.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/abts_tests.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,72 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef APR_TEST_INCLUDES
-#define APR_TEST_INCLUDES
-
-#include "abts.h"
-#include "testutil.h"
-
-const struct testlist {
-    abts_suite *(*func)(abts_suite *suite);
-} alltests[] = {
-    {testatomic},
-    {testdir},
-    {testdso},
-    {testdup},
-    {testenv},
-    {testfile},
-    {testfilecopy},
-    {testfileinfo},
-    {testflock},
-    {testfmt},
-    {testfnmatch},
-    {testgetopt},
-#if 0 /* not ready yet due to API issues */
-    {testglobalmutex},
-#endif
-    {testhash},
-    {testipsub},
-    {testlock},
-    {testcond},
-    {testlfs},
-    {testmmap},
-    {testnames},
-    {testoc},
-    {testpath},
-    {testpipe},
-    {testpoll},
-    {testpool},
-    {testproc},
-    {testprocmutex},
-    {testrand},
-    {testsleep},
-    {testshm},
-    {testsock},
-    {testsockets},
-    {testsockopt},
-    {teststr},
-    {teststrnatcmp},
-    {testtable},
-    {testtemp},
-    {testthread},
-    {testtime},
-    {testud},
-    {testuser},
-    {testvsn}
-};
-
-#endif /* APR_TEST_INCLUDES */

Copied: vendor/apache/apr/1.5.2/test/abts_tests.h (from rev 9273, vendor/apache/apr/dist/test/abts_tests.h)
===================================================================
--- vendor/apache/apr/1.5.2/test/abts_tests.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/abts_tests.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,74 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APR_TEST_INCLUDES
+#define APR_TEST_INCLUDES
+
+#include "abts.h"
+#include "testutil.h"
+
+const struct testlist {
+    abts_suite *(*func)(abts_suite *suite);
+} alltests[] = {
+    {testatomic},
+    {testdir},
+    {testdso},
+    {testdup},
+    {testenv},
+    {testescape},
+    {testfile},
+    {testfilecopy},
+    {testfileinfo},
+    {testflock},
+    {testfmt},
+    {testfnmatch},
+    {testgetopt},
+#if 0 /* not ready yet due to API issues */
+    {testglobalmutex},
+#endif
+    {testhash},
+    {testipsub},
+    {testlock},
+    {testcond},
+    {testlfs},
+    {testmmap},
+    {testnames},
+    {testoc},
+    {testpath},
+    {testpipe},
+    {testpoll},
+    {testpool},
+    {testproc},
+    {testprocmutex},
+    {testrand},
+    {testsleep},
+    {testshm},
+    {testsock},
+    {testsockets},
+    {testsockopt},
+    {teststr},
+    {teststrnatcmp},
+    {testtable},
+    {testtemp},
+    {testthread},
+    {testtime},
+    {testud},
+    {testuser},
+    {testvsn},
+    {testskiplist}
+};
+
+#endif /* APR_TEST_INCLUDES */

Deleted: vendor/apache/apr/1.5.2/test/echod.c
===================================================================
--- vendor/apache/apr/dist/test/echod.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/echod.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,134 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Simple echo daemon, designed to be used for network throughput
- * benchmarks. The aim is to allow us to monitor changes in performance
- * of APR networking code, nothing more.
- */
-
-#include <stdio.h>
-#include <stdlib.h>  /* for atexit() */
-
-#include "apr.h"
-#include "apr_network_io.h"
-#include "apr_strings.h"
-
-#define BUF_SIZE 4096
-
-static void reportError(const char *msg, apr_status_t rv, 
-                        apr_pool_t *pool)
-{
-    fprintf(stderr, "%s\nError: %d\n'%s'\n", msg, rv,
-            apr_psprintf(pool, "%pm", &rv));
-}
-
-static apr_status_t talkTalk(apr_socket_t *socket, apr_pool_t *parent)
-{
-    apr_pool_t *pool;
-    apr_size_t len;
-    char *buf;
-    apr_status_t rv;
-
-    if (apr_pool_create(&pool, parent) != APR_SUCCESS)
-        return APR_ENOPOOL;
-
-
-    buf = apr_palloc(pool, BUF_SIZE);
-    if (!buf)
-        return ENOMEM;
-
-    do {
-        len = BUF_SIZE;
-        rv = apr_socket_recv(socket, buf, &len);
-        if (APR_STATUS_IS_EOF(rv) || len == 0 || rv != APR_SUCCESS)
-            break;
-        rv = apr_socket_send(socket, buf, &len);
-        if (len == 0 || rv != APR_SUCCESS)
-            break;
-    } while (rv == APR_SUCCESS);
-
-    apr_pool_clear(pool);
-    return APR_SUCCESS;
-}
-
-static apr_status_t glassToWall(apr_int16_t port, apr_pool_t *parent)
-{
-    apr_sockaddr_t *sockAddr;
-    apr_socket_t *listener, *accepted;
-    apr_status_t rv;
-
-    rv = apr_socket_create(&listener, APR_INET, SOCK_STREAM, APR_PROTO_TCP,
-                           parent);
-    if (rv != APR_SUCCESS) {
-        reportError("Unable to create socket", rv, parent);
-        return rv;
-    }
-
-    rv = apr_sockaddr_info_get(&sockAddr, "127.0.0.1", APR_UNSPEC,
-                               port, 0, parent);
-    if (rv != APR_SUCCESS) {
-        reportError("Unable to get socket info", rv, parent);
-        apr_socket_close(listener);
-        return rv;
-    }
-
-    if ((rv = apr_socket_bind(listener, sockAddr)) != APR_SUCCESS ||
-        (rv = apr_socket_listen(listener, 5)) != APR_SUCCESS) {
-        reportError("Unable to bind or listen to socket", rv, parent);
-        apr_socket_close(listener);
-        return rv;
-    }
-
-    for (;;) {
-        rv = apr_socket_accept(&accepted, listener, parent);
-        if (rv != APR_SUCCESS) {
-            reportError("Error accepting on socket", rv, parent);
-            break;
-        }
-        printf("\tAnswering connection\n");
-        rv = talkTalk(accepted, parent);
-        apr_socket_close(accepted);
-        printf("\tConnection closed\n");
-        if (rv != APR_SUCCESS)
-            break;
-    }
-
-    apr_socket_close(listener);
-    return APR_SUCCESS;
-}
-
-int main(int argc, char **argv)
-{
-    apr_pool_t *pool;
-    apr_int16_t theport = 4747;
-
-    printf("APR Test Application: echod\n");
-
-    apr_initialize();
-    atexit(apr_terminate);
-
-    apr_pool_create(&pool, NULL);
-
-    if (argc >= 2) {
-        printf("argc = %d, port = '%s'\n", argc, argv[1]);
-        theport = atoi(argv[1]);
-    }
-
-    fprintf(stdout, "Starting to listen on port %d\n", theport);
-    glassToWall(theport, pool);
-
-    return 0;
-}

Copied: vendor/apache/apr/1.5.2/test/echod.c (from rev 9273, vendor/apache/apr/dist/test/echod.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/echod.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/echod.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,134 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Simple echo daemon, designed to be used for network throughput
+ * benchmarks. The aim is to allow us to monitor changes in performance
+ * of APR networking code, nothing more.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>  /* for atexit() */
+
+#include "apr.h"
+#include "apr_network_io.h"
+#include "apr_strings.h"
+
+#define BUF_SIZE 4096
+
+static void reportError(const char *msg, apr_status_t rv, 
+                        apr_pool_t *pool)
+{
+    fprintf(stderr, "%s\nError: %d\n'%s'\n", msg, rv,
+            apr_psprintf(pool, "%pm", &rv));
+}
+
+static apr_status_t talkTalk(apr_socket_t *socket, apr_pool_t *parent)
+{
+    apr_pool_t *pool;
+    apr_size_t len;
+    char *buf;
+    apr_status_t rv;
+
+    if (apr_pool_create(&pool, parent) != APR_SUCCESS)
+        return APR_ENOPOOL;
+
+
+    buf = apr_palloc(pool, BUF_SIZE);
+    if (!buf)
+        return ENOMEM;
+
+    do {
+        len = BUF_SIZE;
+        rv = apr_socket_recv(socket, buf, &len);
+        if (APR_STATUS_IS_EOF(rv) || len == 0 || rv != APR_SUCCESS)
+            break;
+        rv = apr_socket_send(socket, buf, &len);
+        if (len == 0 || rv != APR_SUCCESS)
+            break;
+    } while (rv == APR_SUCCESS);
+
+    apr_pool_clear(pool);
+    return APR_SUCCESS;
+}
+
+static apr_status_t glassToWall(apr_port_t port, apr_pool_t *parent)
+{
+    apr_sockaddr_t *sockAddr;
+    apr_socket_t *listener, *accepted;
+    apr_status_t rv;
+
+    rv = apr_socket_create(&listener, APR_INET, SOCK_STREAM, APR_PROTO_TCP,
+                           parent);
+    if (rv != APR_SUCCESS) {
+        reportError("Unable to create socket", rv, parent);
+        return rv;
+    }
+
+    rv = apr_sockaddr_info_get(&sockAddr, "127.0.0.1", APR_UNSPEC,
+                               port, 0, parent);
+    if (rv != APR_SUCCESS) {
+        reportError("Unable to get socket info", rv, parent);
+        apr_socket_close(listener);
+        return rv;
+    }
+
+    if ((rv = apr_socket_bind(listener, sockAddr)) != APR_SUCCESS ||
+        (rv = apr_socket_listen(listener, 5)) != APR_SUCCESS) {
+        reportError("Unable to bind or listen to socket", rv, parent);
+        apr_socket_close(listener);
+        return rv;
+    }
+
+    for (;;) {
+        rv = apr_socket_accept(&accepted, listener, parent);
+        if (rv != APR_SUCCESS) {
+            reportError("Error accepting on socket", rv, parent);
+            break;
+        }
+        printf("\tAnswering connection\n");
+        rv = talkTalk(accepted, parent);
+        apr_socket_close(accepted);
+        printf("\tConnection closed\n");
+        if (rv != APR_SUCCESS)
+            break;
+    }
+
+    apr_socket_close(listener);
+    return APR_SUCCESS;
+}
+
+int main(int argc, char **argv)
+{
+    apr_pool_t *pool;
+    apr_port_t theport = 4747;
+
+    printf("APR Test Application: echod\n");
+
+    apr_initialize();
+    atexit(apr_terminate);
+
+    apr_pool_create(&pool, NULL);
+
+    if (argc >= 2) {
+        printf("argc = %d, port = '%s'\n", argc, argv[1]);
+        theport = atoi(argv[1]);
+    }
+
+    fprintf(stdout, "Starting to listen on port %d\n", theport);
+    glassToWall(theport, pool);
+
+    return 0;
+}

Deleted: vendor/apache/apr/1.5.2/test/internal/testucs.c
===================================================================
--- vendor/apache/apr/dist/test/internal/testucs.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/internal/testucs.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,344 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "arch/win32/apr_arch_utf8.h"
-#include <wchar.h>
-#include <string.h>
-#include <assert.h>
-
-struct testval {
-    unsigned char n[8];
-    int nl;
-    wchar_t w[4];
-    int wl;
-};
-
-/* For reference; a table of invalid utf-8 encoded ucs-2/ucs-4 sequences.
- * The table consists of start, end pairs for all invalid ranges.
- * NO_UCS2_PAIRS will pass the reservered D800-DFFF values, halting at FFFF
- * FULL_UCS4_MAPPER represents all 31 bit values to 7FFF FFFF
- *
- * We already tested these, because we ensure there is a 1:1 mapping across
- * the entire range of byte values in each position of 1 to 6 byte sequences.
- */
-struct testval malformed[] = [
-    [[0x80,], 1,],      /* 10000000  64 invalid leading continuation values */
-    [[0xBF,], 1,],      /* 10111111  64 invalid leading continuation values */
-    [[0xC0,0x80], 2,],                         /* overshort mapping of 0000 */
-    [[0xC1,0xBF], 2,],                         /* overshort mapping of 007F */
-    [[0xE0,0x80,0x80,], 3,],                   /* overshort mapping of 0000 */
-    [[0xE0,0x9F,0xBF,], 3,],                   /* overshort mapping of 07FF */
-#ifndef NO_UCS2_PAIRS
-    [[0xED,0xA0,0x80,], 3,],    /* unexpected mapping of UCS-2 literal D800 */
-    [[0xED,0xBF,0xBF,], 3,],    /* unexpected mapping of UCS-2 literal DFFF */
-#endif
-    [[0xF0,0x80,0x80,0x80,], 4,],              /* overshort mapping of 0000 */
-    [[0xF0,0x8F,0xBF,0xBF,], 4,],              /* overshort mapping of FFFF */
-#ifdef NO_UCS2_PAIRS
-    [[0xF0,0x90,0x80,0x80,], 4,],      /* invalid too large value 0001 0000 */
-    [[0xF4,0x8F,0xBF,0xBF,], 4,],      /* invalid too large value 0010 FFFF */
-#endif
-#ifndef FULL_UCS4_MAPPER
-    [[0xF4,0x90,0x80,0x80,], 4,],      /* invalid too large value 0011 0000 */
-    [[0xF7,0xBF,0xBF,0xBF,], 4,],      /* invalid too large value 001F FFFF */
-#endif
-    [[0xF8,0x80,0x80,0x80,0x80,], 5,],    /* overshort mapping of 0000 0000 */
-    [[0xF8,0x87,0xBF,0xBF,0xBF,], 5,],    /* overshort mapping of 001F FFFF */
-#ifndef FULL_UCS4_MAPPER
-    [[0xF8,0x88,0x80,0x80,0x80,], 5,], /* invalid too large value 0020 0000 */
-    [[0xFB,0xBF,0xBF,0xBF,0xBF,], 5,], /* invalid too large value 03FF FFFF */
-#endif
-    [[0xFC,0x80,0x80,0x80,0x80,0x80,], 6,],  /* overshort mapping 0000 0000 */
-    [[0xFC,0x83,0xBF,0xBF,0xBF,0xBF,], 6,],  /* overshort mapping 03FF FFFF */
-#ifndef FULL_UCS4_MAPPER
-    [[0xFC,0x84,0x80,0x80,0x80,0x80,], 6,],  /* overshort mapping 0400 0000 */
-    [[0xFD,0xBF,0xBF,0xBF,0xBF,0xBF,], 6,],  /* overshort mapping 7FFF FFFF */
-#endif
-    [[0xFE,], 1,],    /* 11111110  invalid "too large" value, no 7 byte seq */
-    [[0xFF,], 1,],    /* 11111111  invalid "too large" value, no 8 byte seq */
-];
-
-void displaynw(struct testval *f, struct testval *l)
-{
-    char x[80], *t = x;
-    int i;
-    for (i = 0; i < f->nl; ++i)
-        t += sprintf(t, "%02X ", f->n[i]);
-    *(t++) = '-'; 
-    for (i = 0; i < l->nl; ++i)
-        t += sprintf(t, " %02X", l->n[i]);
-    *(t++) = ' ';
-    *(t++) = '=';
-    *(t++) = ' ';
-    for (i = 0; i < f->wl; ++i)
-        t += sprintf(t, "%04X ", f->w[i]);
-    *(t++) = '-';
-    for (i = 0; i < l->wl; ++i)
-        t += sprintf(t, " %04X", l->w[i]);
-    *t = '\0';
-    puts(x);
-}
-
-/*
- *  Test every possible byte value. 
- *  If the test passes or fails at this byte value we are done.
- *  Otherwise iterate test_nrange again, appending another byte.
- */
-void test_nrange(struct testval *p)
-{
-    struct testval f, l, s;
-    apr_status_t rc;
-    int success = 0;
-    
-    memcpy (&s, p, sizeof(s));
-    ++s.nl;    
-    
-    do {
-        apr_size_t nl = s.nl, wl = sizeof(s.w) / 2;
-        rc = apr_conv_utf8_to_ucs2(s.n, &nl, s.w, &wl);
-        s.wl = (sizeof(s.w) / 2) - wl;
-        if (!nl && rc == APR_SUCCESS) {
-            if (!success) {
-                memcpy(&f, &s, sizeof(s));
-                success = -1;
-            }
-            else {
-                if (s.wl != l.wl 
-                 || memcmp(s.w, l.w, (s.wl - 1) * 2) != 0
-                 || s.w[s.wl - 1] != l.w[l.wl - 1] + 1) {
-                    displaynw(&f, &l);
-                    memcpy(&f, &s, sizeof(s));
-                }
-            }            
-            memcpy(&l, &s, sizeof(s));
-        }
-        else {
-            if (success) {
-                displaynw(&f, &l);
-                success = 0;
-            }
-            if (rc == APR_INCOMPLETE) {
-                test_nrange(&s);
-            }
-        }
-    } while (++s.n[s.nl - 1]);
-
-    if (success) {
-        displaynw(&f, &l);
-        success = 0;
-    }
-}
-
-/* 
- *  Test every possible word value. 
- *  Once we are finished, retest every possible word value.
- *  if the test fails on the following null word, iterate test_nrange 
- *  again, appending another word.
- *  This assures the output order of the two tests are in sync.
- */
-void test_wrange(struct testval *p)
-{
-    struct testval f, l, s;
-    apr_status_t rc;
-    int success = 0;
-    
-    memcpy (&s, p, sizeof(s));
-    ++s.wl;    
-    
-    do {
-        apr_size_t nl = sizeof(s.n), wl = s.wl;        
-        rc = apr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl);
-        s.nl = sizeof(s.n) - nl;
-        if (!wl && rc == APR_SUCCESS) {
-            if (!success) {
-                memcpy(&f, &s, sizeof(s));
-                success = -1;
-            }
-            else {
-                if (s.nl != l.nl 
-                 || memcmp(s.n, l.n, s.nl - 1) != 0
-                 || s.n[s.nl - 1] != l.n[l.nl - 1] + 1) {
-                    displaynw(&f, &l);
-                    memcpy(&f, &s, sizeof(s));
-                }
-            }            
-            memcpy(&l, &s, sizeof(s));
-        }
-        else {
-            if (success) {
-                displaynw(&f, &l);
-                success = 0;
-            }
-        }
-    } while (++s.w[s.wl - 1]);
-
-    if (success) {
-        displaynw(&f, &l);
-        success = 0;
-    }
-
-    do {
-        int wl = s.wl, nl = sizeof(s.n);
-        rc = apr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl);
-        s.nl = sizeof(s.n) - s.nl;
-        if (rc == APR_INCOMPLETE) {
-            test_wrange(&s);
-        }
-    } while (++s.w[s.wl - 1]);
-}
-
-/*
- *  Test every possible byte value. 
- *  If the test passes or fails at this byte value we are done.
- *  Otherwise iterate test_nrange again, appending another byte.
- */
-void test_ranges()
-{
-    struct testval ntest, wtest;
-    apr_status_t nrc, wrc;
-    apr_size_t inlen;
-    unsigned long matches = 0;
-
-    memset(&ntest, 0, sizeof(ntest));
-    ++ntest.nl;
-
-    memset(&wtest, 0, sizeof(wtest));
-    ++wtest.wl;
-
-    do {
-        do {
-            inlen = ntest.nl;
-            ntest.wl = sizeof(ntest.w) / 2;
-            nrc = apr_conv_utf8_to_ucs2(ntest.n, &inlen, ntest.w, &ntest.wl);
-            if (nrc == APR_SUCCESS) {
-                ntest.wl = (sizeof(ntest.w) / 2) - ntest.wl;
-                break;
-            }
-            if (nrc == APR_INCOMPLETE) {
-                ++ntest.nl;
-                if (ntest.nl > 6) {
-                    printf ("\n\nUnexpected utf8 sequence of >6 bytes;\n");
-                    exit(255);
-                }
-                continue;
-            }
-            else {
-                while (!(++ntest.n[ntest.nl - 1])) {
-                    if (!(--ntest.nl))
-                        break;
-                }
-            }
-        } while (ntest.nl);
-
-        do {
-            inlen = wtest.wl;
-            wtest.nl = sizeof(wtest.n);
-            wrc = apr_conv_ucs2_to_utf8(wtest.w, &inlen, wtest.n, &wtest.nl);
-            if (wrc == APR_SUCCESS) {
-                wtest.nl = sizeof(wtest.n) - wtest.nl;
-                break;
-            }
-            else {
-                if (!(++wtest.w[wtest.wl - 1])) {
-                    if (wtest.wl == 1)
-                        ++wtest.wl;
-                    else
-                        ++wtest.w[0];
-
-                    /* On the second pass, ensure lead word is incomplete */
-                    do {
-                        inlen = 1;
-                        wtest.nl = sizeof(wtest.n);
-                        if (apr_conv_ucs2_to_utf8(wtest.w, &inlen, wtest.n, &wtest.nl)
-                                == APR_INCOMPLETE)
-                            break;
-                        if (!(++wtest.w[0])) {
-                            wtest.wl = 0;
-                            break;
-                        }
-                    } while (1);
-                }
-            }
-        } while (wtest.wl);
-
-        if (!ntest.nl && !wtest.wl)
-            break;
-
-        /* Identical? */
-        if ((wtest.nl != ntest.nl)
-         || (memcmp(wtest.n, ntest.n, ntest.nl) != 0)
-         || (wtest.wl != ntest.wl)
-         || (memcmp(ntest.w, wtest.w, wtest.wl * 2) != 0)) {
-            printf ("\n\nMismatch of w/n conversion at;\n");
-            displaynw(&ntest, &wtest);
-            exit(255);
-        }
-        ++matches;
-
-        while (!(++ntest.n[ntest.nl - 1])) {
-            if (!(--ntest.nl))
-                break;
-        }
-
-        if (!(++wtest.w[wtest.wl - 1])) {
-            if (wtest.wl == 1)
-                ++wtest.wl;
-            else
-                ++wtest.w[0];
-
-            /* On the second pass, ensure lead word is incomplete */
-            do {
-                inlen = 1;
-                wtest.nl = sizeof(wtest.n);
-                if (apr_conv_ucs2_to_utf8(wtest.w, &inlen, wtest.n, &wtest.nl)
-                        == APR_INCOMPLETE)
-                    break;
-                if (!(++wtest.w[0])) {
-                    wtest.wl = 0;
-                    break;
-                }
-            } while (1);
-        }
-    } while (wtest.wl || ntest.nl);
-
-    printf ("\n\nutf8 and ucs2 sequences of %lu transformations matched OK.\n",
-            matches);
-}
-
-/*
- *  Syntax: testucs [w|n]
- *
- *  If no arg or arg is not recognized, run equality sequence test.
- */
-int main(int argc, char **argv)
-{
-    struct testval s;
-    memset (&s, 0, sizeof(s));
-
-    if (argc >= 2 && apr_tolower(*argv[1]) != 'w') {
-        printf ("\n\nTesting Narrow Char Ranges\n");
-        test_nrange(&s);
-    }
-    else if (argc >= 2 && apr_tolower(*argv[1]) != 'n') {
-        printf ("\n\nTesting Wide Char Ranges\n");
-        test_wrange(&s);
-    }
-    else {
-        test_ranges();
-    }
-    return 0;
-}

Copied: vendor/apache/apr/1.5.2/test/internal/testucs.c (from rev 9273, vendor/apache/apr/dist/test/internal/testucs.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/internal/testucs.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/internal/testucs.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,348 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "arch/win32/apr_arch_utf8.h"
+#include <wchar.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+struct testval {
+    unsigned char n[8];
+    apr_size_t nl;
+    wchar_t w[4];
+    apr_size_t wl;
+};
+
+#ifdef FOR_REFERENCE
+/* For reference; a table of invalid utf-8 encoded ucs-2/ucs-4 sequences.
+ * The table consists of start, end pairs for all invalid ranges.
+ * NO_UCS2_PAIRS will pass the reservered D800-DFFF values, halting at FFFF
+ * FULL_UCS4_MAPPER represents all 31 bit values to 7FFF FFFF
+ *
+ * We already tested these, because we ensure there is a 1:1 mapping across
+ * the entire range of byte values in each position of 1 to 6 byte sequences.
+ */
+struct testval malformed[] = [
+    [[0x80,], 1,],      /* 10000000  64 invalid leading continuation values */
+    [[0xBF,], 1,],      /* 10111111  64 invalid leading continuation values */
+    [[0xC0,0x80], 2,],                         /* overshort mapping of 0000 */
+    [[0xC1,0xBF], 2,],                         /* overshort mapping of 007F */
+    [[0xE0,0x80,0x80,], 3,],                   /* overshort mapping of 0000 */
+    [[0xE0,0x9F,0xBF,], 3,],                   /* overshort mapping of 07FF */
+#ifndef NO_UCS2_PAIRS
+    [[0xED,0xA0,0x80,], 3,],    /* unexpected mapping of UCS-2 literal D800 */
+    [[0xED,0xBF,0xBF,], 3,],    /* unexpected mapping of UCS-2 literal DFFF */
+#endif
+    [[0xF0,0x80,0x80,0x80,], 4,],              /* overshort mapping of 0000 */
+    [[0xF0,0x8F,0xBF,0xBF,], 4,],              /* overshort mapping of FFFF */
+#ifdef NO_UCS2_PAIRS
+    [[0xF0,0x90,0x80,0x80,], 4,],      /* invalid too large value 0001 0000 */
+    [[0xF4,0x8F,0xBF,0xBF,], 4,],      /* invalid too large value 0010 FFFF */
+#endif
+#ifndef FULL_UCS4_MAPPER
+    [[0xF4,0x90,0x80,0x80,], 4,],      /* invalid too large value 0011 0000 */
+    [[0xF7,0xBF,0xBF,0xBF,], 4,],      /* invalid too large value 001F FFFF */
+#endif
+    [[0xF8,0x80,0x80,0x80,0x80,], 5,],    /* overshort mapping of 0000 0000 */
+    [[0xF8,0x87,0xBF,0xBF,0xBF,], 5,],    /* overshort mapping of 001F FFFF */
+#ifndef FULL_UCS4_MAPPER
+    [[0xF8,0x88,0x80,0x80,0x80,], 5,], /* invalid too large value 0020 0000 */
+    [[0xFB,0xBF,0xBF,0xBF,0xBF,], 5,], /* invalid too large value 03FF FFFF */
+#endif
+    [[0xFC,0x80,0x80,0x80,0x80,0x80,], 6,],  /* overshort mapping 0000 0000 */
+    [[0xFC,0x83,0xBF,0xBF,0xBF,0xBF,], 6,],  /* overshort mapping 03FF FFFF */
+#ifndef FULL_UCS4_MAPPER
+    [[0xFC,0x84,0x80,0x80,0x80,0x80,], 6,],  /* overshort mapping 0400 0000 */
+    [[0xFD,0xBF,0xBF,0xBF,0xBF,0xBF,], 6,],  /* overshort mapping 7FFF FFFF */
+#endif
+    [[0xFE,], 1,],    /* 11111110  invalid "too large" value, no 7 byte seq */
+    [[0xFF,], 1,],    /* 11111111  invalid "too large" value, no 8 byte seq */
+];
+#endif /* FOR_REFERENCE */
+
+void displaynw(struct testval *f, struct testval *l)
+{
+    char x[80], *t = x;
+    int i;
+    for (i = 0; i < f->nl; ++i)
+        t += sprintf(t, "%02X ", f->n[i]);
+    *(t++) = '-'; 
+    for (i = 0; i < l->nl; ++i)
+        t += sprintf(t, " %02X", l->n[i]);
+    *(t++) = ' ';
+    *(t++) = '=';
+    *(t++) = ' ';
+    for (i = 0; i < f->wl; ++i)
+        t += sprintf(t, "%04X ", f->w[i]);
+    *(t++) = '-';
+    for (i = 0; i < l->wl; ++i)
+        t += sprintf(t, " %04X", l->w[i]);
+    *t = '\0';
+    puts(x);
+}
+
+/*
+ *  Test every possible byte value. 
+ *  If the test passes or fails at this byte value we are done.
+ *  Otherwise iterate test_nrange again, appending another byte.
+ */
+void test_nrange(struct testval *p)
+{
+    struct testval f, l, s;
+    apr_status_t rc;
+    int success = 0;
+    
+    memcpy (&s, p, sizeof(s));
+    ++s.nl;    
+    
+    do {
+        apr_size_t nl = s.nl, wl = sizeof(s.w) / 2;
+        rc = apr_conv_utf8_to_ucs2(s.n, &nl, s.w, &wl);
+        s.wl = (sizeof(s.w) / 2) - wl;
+        if (!nl && rc == APR_SUCCESS) {
+            if (!success) {
+                memcpy(&f, &s, sizeof(s));
+                success = -1;
+            }
+            else {
+                if (s.wl != l.wl 
+                 || memcmp(s.w, l.w, (s.wl - 1) * 2) != 0
+                 || s.w[s.wl - 1] != l.w[l.wl - 1] + 1) {
+                    displaynw(&f, &l);
+                    memcpy(&f, &s, sizeof(s));
+                }
+            }            
+            memcpy(&l, &s, sizeof(s));
+        }
+        else {
+            if (success) {
+                displaynw(&f, &l);
+                success = 0;
+            }
+            if (rc == APR_INCOMPLETE) {
+                test_nrange(&s);
+            }
+        }
+    } while (++s.n[s.nl - 1]);
+
+    if (success) {
+        displaynw(&f, &l);
+        success = 0;
+    }
+}
+
+/* 
+ *  Test every possible word value. 
+ *  Once we are finished, retest every possible word value.
+ *  if the test fails on the following null word, iterate test_nrange 
+ *  again, appending another word.
+ *  This assures the output order of the two tests are in sync.
+ */
+void test_wrange(struct testval *p)
+{
+    struct testval f, l, s;
+    apr_status_t rc;
+    int success = 0;
+    
+    memcpy (&s, p, sizeof(s));
+    ++s.wl;    
+    
+    do {
+        apr_size_t nl = sizeof(s.n), wl = s.wl;        
+        rc = apr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl);
+        s.nl = sizeof(s.n) - nl;
+        if (!wl && rc == APR_SUCCESS) {
+            if (!success) {
+                memcpy(&f, &s, sizeof(s));
+                success = -1;
+            }
+            else {
+                if (s.nl != l.nl 
+                 || memcmp(s.n, l.n, s.nl - 1) != 0
+                 || s.n[s.nl - 1] != l.n[l.nl - 1] + 1) {
+                    displaynw(&f, &l);
+                    memcpy(&f, &s, sizeof(s));
+                }
+            }            
+            memcpy(&l, &s, sizeof(s));
+        }
+        else {
+            if (success) {
+                displaynw(&f, &l);
+                success = 0;
+            }
+        }
+    } while (++s.w[s.wl - 1]);
+
+    if (success) {
+        displaynw(&f, &l);
+        success = 0;
+    }
+
+    do {
+        apr_size_t wl = s.wl, nl = sizeof(s.n);
+        rc = apr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl);
+        s.nl = sizeof(s.n) - s.nl;
+        if (rc == APR_INCOMPLETE) {
+            test_wrange(&s);
+        }
+    } while (++s.w[s.wl - 1]);
+}
+
+/*
+ *  Test every possible byte value. 
+ *  If the test passes or fails at this byte value we are done.
+ *  Otherwise iterate test_nrange again, appending another byte.
+ */
+void test_ranges()
+{
+    struct testval ntest, wtest;
+    apr_status_t nrc, wrc;
+    apr_size_t inlen;
+    unsigned long matches = 0;
+
+    memset(&ntest, 0, sizeof(ntest));
+    ++ntest.nl;
+
+    memset(&wtest, 0, sizeof(wtest));
+    ++wtest.wl;
+
+    do {
+        do {
+            inlen = ntest.nl;
+            ntest.wl = sizeof(ntest.w) / 2;
+            nrc = apr_conv_utf8_to_ucs2(ntest.n, &inlen, ntest.w, &ntest.wl);
+            if (nrc == APR_SUCCESS) {
+                ntest.wl = (sizeof(ntest.w) / 2) - ntest.wl;
+                break;
+            }
+            if (nrc == APR_INCOMPLETE) {
+                ++ntest.nl;
+                if (ntest.nl > 6) {
+                    printf ("\n\nUnexpected utf8 sequence of >6 bytes;\n");
+                    exit(255);
+                }
+                continue;
+            }
+            else {
+                while (!(++ntest.n[ntest.nl - 1])) {
+                    if (!(--ntest.nl))
+                        break;
+                }
+            }
+        } while (ntest.nl);
+
+        do {
+            inlen = wtest.wl;
+            wtest.nl = sizeof(wtest.n);
+            wrc = apr_conv_ucs2_to_utf8(wtest.w, &inlen, wtest.n, &wtest.nl);
+            if (wrc == APR_SUCCESS) {
+                wtest.nl = sizeof(wtest.n) - wtest.nl;
+                break;
+            }
+            else {
+                if (!(++wtest.w[wtest.wl - 1])) {
+                    if (wtest.wl == 1)
+                        ++wtest.wl;
+                    else
+                        ++wtest.w[0];
+
+                    /* On the second pass, ensure lead word is incomplete */
+                    do {
+                        inlen = 1;
+                        wtest.nl = sizeof(wtest.n);
+                        if (apr_conv_ucs2_to_utf8(wtest.w, &inlen, wtest.n, &wtest.nl)
+                                == APR_INCOMPLETE)
+                            break;
+                        if (!(++wtest.w[0])) {
+                            wtest.wl = 0;
+                            break;
+                        }
+                    } while (1);
+                }
+            }
+        } while (wtest.wl);
+
+        if (!ntest.nl && !wtest.wl)
+            break;
+
+        /* Identical? */
+        if ((wtest.nl != ntest.nl)
+         || (memcmp(wtest.n, ntest.n, ntest.nl) != 0)
+         || (wtest.wl != ntest.wl)
+         || (memcmp(ntest.w, wtest.w, wtest.wl * 2) != 0)) {
+            printf ("\n\nMismatch of w/n conversion at;\n");
+            displaynw(&ntest, &wtest);
+            exit(255);
+        }
+        ++matches;
+
+        while (!(++ntest.n[ntest.nl - 1])) {
+            if (!(--ntest.nl))
+                break;
+        }
+
+        if (!(++wtest.w[wtest.wl - 1])) {
+            if (wtest.wl == 1)
+                ++wtest.wl;
+            else
+                ++wtest.w[0];
+
+            /* On the second pass, ensure lead word is incomplete */
+            do {
+                inlen = 1;
+                wtest.nl = sizeof(wtest.n);
+                if (apr_conv_ucs2_to_utf8(wtest.w, &inlen, wtest.n, &wtest.nl)
+                        == APR_INCOMPLETE)
+                    break;
+                if (!(++wtest.w[0])) {
+                    wtest.wl = 0;
+                    break;
+                }
+            } while (1);
+        }
+    } while (wtest.wl || ntest.nl);
+
+    printf ("\n\nutf8 and ucs2 sequences of %lu transformations matched OK.\n",
+            matches);
+}
+
+/*
+ *  Syntax: testucs [w|n]
+ *
+ *  If no arg or arg is not recognized, run equality sequence test.
+ */
+int main(int argc, char **argv)
+{
+    struct testval s;
+    memset (&s, 0, sizeof(s));
+
+    if (argc >= 2 && apr_tolower(*argv[1]) != 'w') {
+        printf ("\n\nTesting Narrow Char Ranges\n");
+        test_nrange(&s);
+    }
+    else if (argc >= 2 && apr_tolower(*argv[1]) != 'n') {
+        printf ("\n\nTesting Wide Char Ranges\n");
+        test_wrange(&s);
+    }
+    else {
+        test_ranges();
+    }
+    return 0;
+}

Deleted: vendor/apache/apr/1.5.2/test/sendfile.c
===================================================================
--- vendor/apache/apr/dist/test/sendfile.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/sendfile.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,757 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <assert.h>
-#include <errno.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <string.h>
-#include "apr_network_io.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_poll.h"
-
-#if !APR_HAS_SENDFILE
-int main(void)
-{
-    fprintf(stderr, 
-            "This program won't work on this platform because there is no "
-            "support for sendfile().\n");
-    return 0;
-}
-#else /* !APR_HAS_SENDFILE */
-
-#define FILE_LENGTH    200000
-
-#define FILE_DATA_CHAR '0'
-
-#define HDR1           "1234567890ABCD\n"
-#define HDR2           "EFGH\n"
-#define HDR3_LEN       80000
-#define HDR3_CHAR      '^'
-#define TRL1           "IJKLMNOPQRSTUVWXYZ\n"
-#define TRL2           "!@#$%&*()\n"
-#define TRL3_LEN       90000
-#define TRL3_CHAR      '@'
-
-#define TESTSF_PORT    8021
-
-#define TESTFILE       "testsf.dat"
-
-typedef enum {BLK, NONBLK, TIMEOUT} client_socket_mode_t;
-
-static void apr_setup(apr_pool_t **p, apr_socket_t **sock, int *family)
-{
-    char buf[120];
-    apr_status_t rv;
-
-    rv = apr_initialize();
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_initialize()->%d/%s\n",
-                rv,
-                apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    atexit(apr_terminate);
-
-    rv = apr_pool_create(p, NULL);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_pool_create()->%d/%s\n",
-                rv,
-                apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    *sock = NULL;
-    rv = apr_socket_create(sock, *family, SOCK_STREAM, 0, *p);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_create()->%d/%s\n",
-                rv,
-                apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    if (*family == APR_UNSPEC) {
-        apr_sockaddr_t *localsa;
-
-        rv = apr_socket_addr_get(&localsa, APR_LOCAL, *sock);
-        if (rv != APR_SUCCESS) {
-            fprintf(stderr, "apr_socket_addr_get()->%d/%s\n",
-                    rv,
-                    apr_strerror(rv, buf, sizeof buf));
-            exit(1);
-        }
-        *family = localsa->family;
-    }
-}
-
-static void create_testfile(apr_pool_t *p, const char *fname)
-{
-    apr_file_t *f = NULL;
-    apr_status_t rv;
-    char buf[120];
-    int i;
-    apr_finfo_t finfo;
-
-    printf("Creating a test file...\n");
-    rv = apr_file_open(&f, fname, 
-                 APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_TRUNCATE | APR_FOPEN_BUFFERED,
-                 APR_UREAD | APR_UWRITE, p);
-    if (rv) {
-        fprintf(stderr, "apr_file_open()->%d/%s\n",
-                rv, apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    
-    buf[0] = FILE_DATA_CHAR;
-    buf[1] = '\0';
-    for (i = 0; i < FILE_LENGTH; i++) {
-        /* exercise apr_file_putc() and apr_file_puts() on buffered files */
-        if ((i % 2) == 0) {
-            rv = apr_file_putc(buf[0], f);
-            if (rv) {
-                fprintf(stderr, "apr_file_putc()->%d/%s\n",
-                        rv, apr_strerror(rv, buf, sizeof buf));
-                exit(1);
-            }
-        }
-        else {
-            rv = apr_file_puts(buf, f);
-            if (rv) {
-                fprintf(stderr, "apr_file_puts()->%d/%s\n",
-                        rv, apr_strerror(rv, buf, sizeof buf));
-                exit(1);
-            }
-        }
-    }
-
-    rv = apr_file_close(f);
-    if (rv) {
-        fprintf(stderr, "apr_file_close()->%d/%s\n",
-                rv, apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    rv = apr_stat(&finfo, fname, APR_FINFO_NORM, p);
-    if (rv != APR_SUCCESS && ! APR_STATUS_IS_INCOMPLETE(rv)) {
-        fprintf(stderr, "apr_stat()->%d/%s\n",
-                rv, apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    if (finfo.size != FILE_LENGTH) {
-        fprintf(stderr, 
-                "test file %s should be %ld-bytes long\n"
-                "instead it is %ld-bytes long\n",
-                fname,
-                (long int)FILE_LENGTH,
-                (long int)finfo.size);
-        exit(1);
-    }
-}
-
-static int client(client_socket_mode_t socket_mode, char *host)
-{
-    apr_status_t rv, tmprv;
-    apr_socket_t *sock;
-    apr_pool_t *p;
-    char buf[120];
-    apr_file_t *f = NULL;
-    apr_size_t len;
-    apr_size_t expected_len;
-    apr_off_t current_file_offset;
-    apr_hdtr_t hdtr;
-    struct iovec headers[3];
-    struct iovec trailers[3];
-    apr_size_t bytes_read;
-    apr_pollset_t *pset;
-    apr_int32_t nsocks;
-    int i;
-    int family;
-    apr_sockaddr_t *destsa;
-
-    family = APR_INET;
-    apr_setup(&p, &sock, &family);
-    create_testfile(p, TESTFILE);
-
-    rv = apr_file_open(&f, TESTFILE, APR_FOPEN_READ, 0, p);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_file_open()->%d/%s\n",
-                rv,
-                apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    if (!host) {
-        host = "127.0.0.1";
-    }
-    rv = apr_sockaddr_info_get(&destsa, host, family, TESTSF_PORT, 0, p);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_sockaddr_info_get()->%d/%s\n",
-                rv,
-                apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    rv = apr_socket_connect(sock, destsa);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_connect()->%d/%s\n", 
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    switch(socket_mode) {
-    case BLK:
-        /* leave it blocking */
-        break;
-    case NONBLK:
-        /* set it non-blocking */
-        rv = apr_socket_opt_set(sock, APR_SO_NONBLOCK, 1);
-        if (rv != APR_SUCCESS) {
-            fprintf(stderr, "apr_socket_opt_set(APR_SO_NONBLOCK)->%d/%s\n", 
-                    rv,
-                    apr_strerror(rv, buf, sizeof buf));
-            exit(1);
-        }
-        break;
-    case TIMEOUT:
-        /* set a timeout */
-        rv = apr_socket_timeout_set(sock, 100 * APR_USEC_PER_SEC);
-        if (rv != APR_SUCCESS) {
-            fprintf(stderr, "apr_socket_opt_set(APR_SO_NONBLOCK)->%d/%s\n", 
-                    rv,
-                    apr_strerror(rv, buf, sizeof buf));
-            exit(1);
-        }
-        break;
-    default:
-        assert(1 != 1);
-    }
-
-    printf("Sending the file...\n");
-
-    hdtr.headers = headers;
-    hdtr.numheaders = 3;
-    hdtr.headers[0].iov_base = HDR1;
-    hdtr.headers[0].iov_len  = strlen(hdtr.headers[0].iov_base);
-    hdtr.headers[1].iov_base = HDR2;
-    hdtr.headers[1].iov_len  = strlen(hdtr.headers[1].iov_base);
-    hdtr.headers[2].iov_base = malloc(HDR3_LEN);
-    assert(hdtr.headers[2].iov_base);
-    memset(hdtr.headers[2].iov_base, HDR3_CHAR, HDR3_LEN);
-    hdtr.headers[2].iov_len  = HDR3_LEN;
-
-    hdtr.trailers = trailers;
-    hdtr.numtrailers = 3;
-    hdtr.trailers[0].iov_base = TRL1;
-    hdtr.trailers[0].iov_len  = strlen(hdtr.trailers[0].iov_base);
-    hdtr.trailers[1].iov_base = TRL2;
-    hdtr.trailers[1].iov_len  = strlen(hdtr.trailers[1].iov_base);
-    hdtr.trailers[2].iov_base = malloc(TRL3_LEN);
-    memset(hdtr.trailers[2].iov_base, TRL3_CHAR, TRL3_LEN);
-    assert(hdtr.trailers[2].iov_base);
-    hdtr.trailers[2].iov_len  = TRL3_LEN;
-
-    expected_len = 
-        strlen(HDR1) + strlen(HDR2) + HDR3_LEN +
-        strlen(TRL1) + strlen(TRL2) + TRL3_LEN +
-        FILE_LENGTH;
-    
-    if (socket_mode == BLK) {
-        current_file_offset = 0;
-        len = FILE_LENGTH;
-        rv = apr_socket_sendfile(sock, f, &hdtr, &current_file_offset, &len, 0);
-        if (rv != APR_SUCCESS) {
-            fprintf(stderr, "apr_socket_sendfile()->%d/%s\n",
-                    rv,
-                    apr_strerror(rv, buf, sizeof buf));
-            exit(1);
-        }
-        
-        printf("apr_socket_sendfile() updated offset with %ld\n",
-               (long int)current_file_offset);
-        
-        printf("apr_socket_sendfile() updated len with %ld\n",
-               (long int)len);
-        
-        printf("bytes really sent: %" APR_SIZE_T_FMT "\n",
-               expected_len);
-
-        if (len != expected_len) {
-            fprintf(stderr, "apr_socket_sendfile() didn't report the correct "
-                    "number of bytes sent!\n");
-            exit(1);
-        }
-    }
-    else {
-        /* non-blocking... wooooooo */
-        apr_size_t total_bytes_sent;
-        apr_pollfd_t pfd;
-
-        pset = NULL;
-        rv = apr_pollset_create(&pset, 1, p, 0);
-        assert(!rv);
-        pfd.p = p;
-        pfd.desc_type = APR_POLL_SOCKET;
-        pfd.reqevents = APR_POLLOUT;
-        pfd.rtnevents = 0;
-        pfd.desc.s = sock;
-        pfd.client_data = NULL;
-
-        rv = apr_pollset_add(pset, &pfd);        
-        assert(!rv);
-
-        total_bytes_sent = 0;
-        current_file_offset = 0;
-        len = FILE_LENGTH;
-        do {
-            apr_size_t tmplen;
-
-            tmplen = len; /* bytes remaining to send from the file */
-            printf("Calling apr_socket_sendfile()...\n");
-            printf("Headers (%d):\n", hdtr.numheaders);
-            for (i = 0; i < hdtr.numheaders; i++) {
-                printf("\t%ld bytes (%c)\n",
-                       (long)hdtr.headers[i].iov_len,
-                       *(char *)hdtr.headers[i].iov_base);
-            }
-            printf("File: %ld bytes from offset %ld\n",
-                   (long)tmplen, (long)current_file_offset);
-            printf("Trailers (%d):\n", hdtr.numtrailers);
-            for (i = 0; i < hdtr.numtrailers; i++) {
-                printf("\t%ld bytes\n",
-                       (long)hdtr.trailers[i].iov_len);
-            }
-
-            rv = apr_socket_sendfile(sock, f, &hdtr, &current_file_offset, &tmplen, 0);
-            printf("apr_socket_sendfile()->%d, sent %ld bytes\n", rv, (long)tmplen);
-            if (rv) {
-                if (APR_STATUS_IS_EAGAIN(rv)) {
-                    assert(tmplen == 0);
-                    nsocks = 1;
-                    tmprv = apr_pollset_poll(pset, -1, &nsocks, NULL);
-                    assert(!tmprv);
-                    assert(nsocks == 1);
-                    /* continue; */
-                }
-            }
-
-            total_bytes_sent += tmplen;
-
-            /* Adjust hdtr to compensate for partially-written
-             * data.
-             */
-
-            /* First, skip over any header data which might have
-             * been written.
-             */
-            while (tmplen && hdtr.numheaders) {
-                if (tmplen >= hdtr.headers[0].iov_len) {
-                    tmplen -= hdtr.headers[0].iov_len;
-                    --hdtr.numheaders;
-                    ++hdtr.headers;
-                }
-                else {
-                    hdtr.headers[0].iov_len -= tmplen;
-                    hdtr.headers[0].iov_base = 
-			(char*) hdtr.headers[0].iov_base + tmplen;
-                    tmplen = 0;
-                }
-            }
-
-            /* Now, skip over any file data which might have been
-             * written.
-             */
-
-            if (tmplen <= len) {
-                current_file_offset += tmplen;
-                len -= tmplen;
-                tmplen = 0;
-            }
-            else {
-                tmplen -= len;
-                len = 0;
-                current_file_offset = 0;
-            }
-
-            /* Last, skip over any trailer data which might have
-             * been written.
-             */
-
-            while (tmplen && hdtr.numtrailers) {
-                if (tmplen >= hdtr.trailers[0].iov_len) {
-                    tmplen -= hdtr.trailers[0].iov_len;
-                    --hdtr.numtrailers;
-                    ++hdtr.trailers;
-                }
-                else {
-                    hdtr.trailers[0].iov_len -= tmplen;
-                    hdtr.trailers[0].iov_base = 
-			(char *)hdtr.trailers[0].iov_base + tmplen;
-                    tmplen = 0;
-                }
-            }
-
-        } while (total_bytes_sent < expected_len &&
-                 (rv == APR_SUCCESS || 
-                 (APR_STATUS_IS_EAGAIN(rv) && socket_mode != TIMEOUT)));
-        if (total_bytes_sent != expected_len) {
-            fprintf(stderr,
-                    "client problem: sent %ld of %ld bytes\n",
-                    (long)total_bytes_sent, (long)expected_len);
-            exit(1);
-        }
-
-        if (rv) {
-            fprintf(stderr,
-                    "client problem: rv %d\n",
-                    rv);
-            exit(1);
-        }
-    }
-    
-    current_file_offset = 0;
-    rv = apr_file_seek(f, APR_CUR, &current_file_offset);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_file_seek()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    printf("After apr_socket_sendfile(), the kernel file pointer is "
-           "at offset %ld.\n",
-           (long int)current_file_offset);
-
-    rv = apr_socket_shutdown(sock, APR_SHUTDOWN_WRITE);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_shutdown()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    /* in case this is the non-blocking test, set socket timeout;
-     * we're just waiting for EOF */
-
-    rv = apr_socket_timeout_set(sock, apr_time_from_sec(3));
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_timeout_set()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    
-    bytes_read = 1;
-    rv = apr_socket_recv(sock, buf, &bytes_read);
-    if (rv != APR_EOF) {
-        fprintf(stderr, "apr_socket_recv()->%d/%s (expected APR_EOF)\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    if (bytes_read != 0) {
-        fprintf(stderr, "We expected to get 0 bytes read with APR_EOF\n"
-                "but instead we read %ld bytes.\n",
-                (long int)bytes_read);
-        exit(1);
-    }
-
-    printf("client: apr_socket_sendfile() worked as expected!\n");
-
-    rv = apr_file_remove(TESTFILE, p);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_file_remove()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    return 0;
-}
-
-static int server(void)
-{
-    apr_status_t rv;
-    apr_socket_t *sock;
-    apr_pool_t *p;
-    char buf[120];
-    int i;
-    apr_socket_t *newsock = NULL;
-    apr_size_t bytes_read;
-    apr_sockaddr_t *localsa;
-    int family;
-
-    family = APR_UNSPEC;
-    apr_setup(&p, &sock, &family);
-
-    rv = apr_socket_opt_set(sock, APR_SO_REUSEADDR, 1);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_opt_set()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    rv = apr_sockaddr_info_get(&localsa, NULL, family, TESTSF_PORT, 0, p);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_sockaddr_info_get()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    rv = apr_socket_bind(sock, localsa);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_bind()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    rv = apr_socket_listen(sock, 5);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_listen()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    printf("Waiting for a client to connect...\n");
-
-    rv = apr_socket_accept(&newsock, sock, p);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_accept()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-
-    printf("Processing a client...\n");
-
-    assert(sizeof buf > strlen(HDR1));
-    bytes_read = strlen(HDR1);
-    rv = apr_socket_recv(newsock, buf, &bytes_read);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_recv()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    if (bytes_read != strlen(HDR1)) {
-        fprintf(stderr, "wrong data read (1)\n");
-        exit(1);
-    }
-    if (memcmp(buf, HDR1, strlen(HDR1))) {
-        fprintf(stderr, "wrong data read (2)\n");
-        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
-                (int)bytes_read, buf, HDR1);
-        exit(1);
-    }
-        
-    assert(sizeof buf > strlen(HDR2));
-    bytes_read = strlen(HDR2);
-    rv = apr_socket_recv(newsock, buf, &bytes_read);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_recv()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    if (bytes_read != strlen(HDR2)) {
-        fprintf(stderr, "wrong data read (3)\n");
-        exit(1);
-    }
-    if (memcmp(buf, HDR2, strlen(HDR2))) {
-        fprintf(stderr, "wrong data read (4)\n");
-        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
-                (int)bytes_read, buf, HDR2);
-        exit(1);
-    }
-
-    for (i = 0; i < HDR3_LEN; i++) {
-        bytes_read = 1;
-        rv = apr_socket_recv(newsock, buf, &bytes_read);
-        if (rv != APR_SUCCESS) {
-            fprintf(stderr, "apr_socket_recv()->%d/%s\n",
-                    rv,
-                    apr_strerror(rv, buf, sizeof buf));
-            exit(1);
-        }
-        if (bytes_read != 1) {
-            fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n",
-                    (long int)bytes_read);
-            exit(1);
-        }
-        if (buf[0] != HDR3_CHAR) {
-            fprintf(stderr,
-                    "problem with data read (byte %d of hdr 3):\n",
-                    i);
-            fprintf(stderr, "read `%c' (0x%x) from client; expected "
-                    "`%c'\n",
-                    buf[0], buf[0], HDR3_CHAR);
-            exit(1);
-        }
-    }
-        
-    for (i = 0; i < FILE_LENGTH; i++) {
-        bytes_read = 1;
-        rv = apr_socket_recv(newsock, buf, &bytes_read);
-        if (rv != APR_SUCCESS) {
-            fprintf(stderr, "apr_socket_recv()->%d/%s\n",
-                    rv,
-                    apr_strerror(rv, buf, sizeof buf));
-            exit(1);
-        }
-        if (bytes_read != 1) {
-            fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n",
-                    (long int)bytes_read);
-            exit(1);
-        }
-        if (buf[0] != FILE_DATA_CHAR) {
-            fprintf(stderr,
-                    "problem with data read (byte %d of file):\n",
-                    i);
-            fprintf(stderr, "read `%c' (0x%x) from client; expected "
-                    "`%c'\n",
-                    buf[0], buf[0], FILE_DATA_CHAR);
-            exit(1);
-        }
-    }
-        
-    assert(sizeof buf > strlen(TRL1));
-    bytes_read = strlen(TRL1);
-    rv = apr_socket_recv(newsock, buf, &bytes_read);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_recv()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    if (bytes_read != strlen(TRL1)) {
-        fprintf(stderr, "wrong data read (5)\n");
-        exit(1);
-    }
-    if (memcmp(buf, TRL1, strlen(TRL1))) {
-        fprintf(stderr, "wrong data read (6)\n");
-        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
-                (int)bytes_read, buf, TRL1);
-        exit(1);
-    }
-        
-    assert(sizeof buf > strlen(TRL2));
-    bytes_read = strlen(TRL2);
-    rv = apr_socket_recv(newsock, buf, &bytes_read);
-    if (rv != APR_SUCCESS) {
-        fprintf(stderr, "apr_socket_recv()->%d/%s\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    if (bytes_read != strlen(TRL2)) {
-        fprintf(stderr, "wrong data read (7)\n");
-        exit(1);
-    }
-    if (memcmp(buf, TRL2, strlen(TRL2))) {
-        fprintf(stderr, "wrong data read (8)\n");
-        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
-                (int)bytes_read, buf, TRL2);
-        exit(1);
-    }
-
-    for (i = 0; i < TRL3_LEN; i++) {
-        bytes_read = 1;
-        rv = apr_socket_recv(newsock, buf, &bytes_read);
-        if (rv != APR_SUCCESS) {
-            fprintf(stderr, "apr_socket_recv()->%d/%s\n",
-                    rv,
-                    apr_strerror(rv, buf, sizeof buf));
-            exit(1);
-        }
-        if (bytes_read != 1) {
-            fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n",
-                    (long int)bytes_read);
-            exit(1);
-        }
-        if (buf[0] != TRL3_CHAR) {
-            fprintf(stderr,
-                    "problem with data read (byte %d of trl 3):\n",
-                    i);
-            fprintf(stderr, "read `%c' (0x%x) from client; expected "
-                    "`%c'\n",
-                    buf[0], buf[0], TRL3_CHAR);
-            exit(1);
-        }
-    }
-        
-    bytes_read = 1;
-    rv = apr_socket_recv(newsock, buf, &bytes_read);
-    if (rv != APR_EOF) {
-        fprintf(stderr, "apr_socket_recv()->%d/%s (expected APR_EOF)\n",
-                rv,
-		apr_strerror(rv, buf, sizeof buf));
-        exit(1);
-    }
-    if (bytes_read != 0) {
-        fprintf(stderr, "We expected to get 0 bytes read with APR_EOF\n"
-                "but instead we read %ld bytes (%c).\n",
-                (long int)bytes_read, buf[0]);
-        exit(1);
-    }
-
-    printf("server: apr_socket_sendfile() worked as expected!\n");
-
-    return 0;
-}
-
-int main(int argc, char *argv[])
-{
-#ifdef SIGPIPE
-    signal(SIGPIPE, SIG_IGN);
-#endif
-
-    /* Gee whiz this is goofy logic but I wanna drive sendfile right now, 
-     * not dork around with the command line!
-     */
-    if (argc >= 3 && !strcmp(argv[1], "client")) {
-        char *host = 0;
-        if (argv[3]) {
-            host = argv[3];
-        }	
-        if (!strcmp(argv[2], "blocking")) {
-            return client(BLK, host);
-        }
-        else if (!strcmp(argv[2], "timeout")) {
-            return client(TIMEOUT, host);
-        }
-        else if (!strcmp(argv[2], "nonblocking")) {
-            return client(NONBLK, host);
-        }
-    }
-    else if (argc == 2 && !strcmp(argv[1], "server")) {
-        return server();
-    }
-
-    fprintf(stderr, 
-            "Usage: %s client {blocking|nonblocking|timeout}\n"
-            "       %s server\n",
-            argv[0], argv[0]);
-    return -1;
-}
-
-#endif /* !APR_HAS_SENDFILE */

Copied: vendor/apache/apr/1.5.2/test/sendfile.c (from rev 9273, vendor/apache/apr/dist/test/sendfile.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/sendfile.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/sendfile.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,770 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include "apr_network_io.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_poll.h"
+#include "apr_thread_proc.h"
+
+#include "testutil.h"
+
+#if !APR_HAS_SENDFILE
+int main(void)
+{
+    fprintf(stderr, 
+            "This program won't work on this platform because there is no "
+            "support for sendfile().\n");
+    return 0;
+}
+#else /* !APR_HAS_SENDFILE */
+
+#define FILE_LENGTH    200000
+
+#define FILE_DATA_CHAR '0'
+
+#define HDR1           "1234567890ABCD\n"
+#define HDR2           "EFGH\n"
+#define HDR3_LEN       80000
+#define HDR3_CHAR      '^'
+#define TRL1           "IJKLMNOPQRSTUVWXYZ\n"
+#define TRL2           "!@#$%&*()\n"
+#define TRL3_LEN       90000
+#define TRL3_CHAR      '@'
+
+#define TESTSF_PORT    8021
+
+#define TESTFILE       "testsf.dat"
+
+typedef enum {BLK, NONBLK, TIMEOUT} client_socket_mode_t;
+
+static void aprerr(const char *fn, apr_status_t rv)
+{
+    char buf[120];
+
+    fprintf(stderr, "%s->%d/%s\n",
+            fn, rv, apr_strerror(rv, buf, sizeof buf));
+    exit(1);
+}
+
+static void apr_setup(apr_pool_t *p, apr_socket_t **sock, int *family)
+{
+    apr_status_t rv;
+
+    *sock = NULL;
+    rv = apr_socket_create(sock, *family, SOCK_STREAM, 0, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_create()", rv);
+    }
+
+    if (*family == APR_UNSPEC) {
+        apr_sockaddr_t *localsa;
+
+        rv = apr_socket_addr_get(&localsa, APR_LOCAL, *sock);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_socket_addr_get()", rv);
+        }
+        *family = localsa->family;
+    }
+}
+
+static void create_testfile(apr_pool_t *p, const char *fname)
+{
+    apr_file_t *f = NULL;
+    apr_status_t rv;
+    char buf[120];
+    int i;
+    apr_finfo_t finfo;
+
+    printf("Creating a test file...\n");
+    rv = apr_file_open(&f, fname, 
+                 APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_TRUNCATE | APR_FOPEN_BUFFERED,
+                 APR_UREAD | APR_UWRITE, p);
+    if (rv) {
+        aprerr("apr_file_open()", rv);
+    }
+    
+    buf[0] = FILE_DATA_CHAR;
+    buf[1] = '\0';
+    for (i = 0; i < FILE_LENGTH; i++) {
+        /* exercise apr_file_putc() and apr_file_puts() on buffered files */
+        if ((i % 2) == 0) {
+            rv = apr_file_putc(buf[0], f);
+            if (rv) {
+                aprerr("apr_file_putc()", rv);
+            }
+        }
+        else {
+            rv = apr_file_puts(buf, f);
+            if (rv) {
+                aprerr("apr_file_puts()", rv);
+            }
+        }
+    }
+
+    rv = apr_file_close(f);
+    if (rv) {
+        aprerr("apr_file_close()", rv);
+    }
+
+    rv = apr_stat(&finfo, fname, APR_FINFO_NORM, p);
+    if (rv != APR_SUCCESS && ! APR_STATUS_IS_INCOMPLETE(rv)) {
+        aprerr("apr_stat()", rv);
+    }
+
+    if (finfo.size != FILE_LENGTH) {
+        fprintf(stderr, 
+                "test file %s should be %ld-bytes long\n"
+                "instead it is %ld-bytes long\n",
+                fname,
+                (long int)FILE_LENGTH,
+                (long int)finfo.size);
+        exit(1);
+    }
+}
+
+static void spawn_server(apr_pool_t *p, apr_proc_t *out_proc)
+{
+    apr_proc_t proc = {0};
+    apr_procattr_t *procattr;
+    apr_status_t rv;
+    const char *args[3];
+
+    rv = apr_procattr_create(&procattr, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_procattr_create()", rv);
+    }
+
+    rv = apr_procattr_io_set(procattr, APR_CHILD_BLOCK, APR_CHILD_BLOCK,
+                             APR_CHILD_BLOCK);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_procattr_io_set()", rv);
+    }
+
+    rv = apr_procattr_cmdtype_set(procattr, APR_PROGRAM_ENV);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_procattr_cmdtype_set()", rv);
+    }
+
+    rv = apr_procattr_error_check_set(procattr, 1);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_procattr_error_check_set()", rv);
+    }
+
+    args[0] = "sendfile" EXTENSION;
+    args[1] = "server";
+    args[2] = NULL;
+    rv = apr_proc_create(&proc, TESTBINPATH "sendfile" EXTENSION, args, NULL, procattr, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_proc_create()", rv);
+    }
+
+    *out_proc = proc;
+}
+
+static int client(apr_pool_t *p, client_socket_mode_t socket_mode,
+                  const char *host, int start_server)
+{
+    apr_status_t rv, tmprv;
+    apr_socket_t *sock;
+    char buf[120];
+    apr_file_t *f = NULL;
+    apr_size_t len;
+    apr_size_t expected_len;
+    apr_off_t current_file_offset;
+    apr_hdtr_t hdtr;
+    struct iovec headers[3];
+    struct iovec trailers[3];
+    apr_size_t bytes_read;
+    apr_pollset_t *pset;
+    apr_int32_t nsocks;
+    int connect_tries = 1;
+    int i;
+    int family;
+    apr_sockaddr_t *destsa;
+    apr_proc_t server;
+    apr_interval_time_t connect_retry_interval = apr_time_from_msec(50);
+
+    if (start_server) {
+        spawn_server(p, &server);
+        connect_tries = 5; /* give it a chance to start up */
+    }
+
+    create_testfile(p, TESTFILE);
+
+    rv = apr_file_open(&f, TESTFILE, APR_FOPEN_READ, 0, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_file_open()", rv);
+    }
+
+    if (!host) {
+        host = "127.0.0.1";
+    }
+    family = APR_INET;
+    rv = apr_sockaddr_info_get(&destsa, host, family, TESTSF_PORT, 0, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_sockaddr_info_get()", rv);
+    }
+
+    while (connect_tries--) {
+        apr_setup(p, &sock, &family);
+        rv = apr_socket_connect(sock, destsa);
+        if (connect_tries && APR_STATUS_IS_ECONNREFUSED(rv)) {
+            apr_status_t tmprv = apr_socket_close(sock);
+            if (tmprv != APR_SUCCESS) {
+                aprerr("apr_socket_close()", tmprv);
+            }
+            apr_sleep(connect_retry_interval);
+            connect_retry_interval *= 2;
+        }
+        else {
+            break;
+        }
+    }
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_connect()", rv);
+    }
+
+    switch(socket_mode) {
+    case BLK:
+        /* leave it blocking */
+        break;
+    case NONBLK:
+        /* set it non-blocking */
+        rv = apr_socket_opt_set(sock, APR_SO_NONBLOCK, 1);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_socket_opt_set(APR_SO_NONBLOCK)", rv);
+        }
+        break;
+    case TIMEOUT:
+        /* set a timeout */
+        rv = apr_socket_timeout_set(sock, 100 * APR_USEC_PER_SEC);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_socket_opt_set(APR_SO_NONBLOCK)", rv);
+            exit(1);
+        }
+        break;
+    default:
+        assert(1 != 1);
+    }
+
+    printf("Sending the file...\n");
+
+    hdtr.headers = headers;
+    hdtr.numheaders = 3;
+    hdtr.headers[0].iov_base = HDR1;
+    hdtr.headers[0].iov_len  = strlen(hdtr.headers[0].iov_base);
+    hdtr.headers[1].iov_base = HDR2;
+    hdtr.headers[1].iov_len  = strlen(hdtr.headers[1].iov_base);
+    hdtr.headers[2].iov_base = malloc(HDR3_LEN);
+    assert(hdtr.headers[2].iov_base);
+    memset(hdtr.headers[2].iov_base, HDR3_CHAR, HDR3_LEN);
+    hdtr.headers[2].iov_len  = HDR3_LEN;
+
+    hdtr.trailers = trailers;
+    hdtr.numtrailers = 3;
+    hdtr.trailers[0].iov_base = TRL1;
+    hdtr.trailers[0].iov_len  = strlen(hdtr.trailers[0].iov_base);
+    hdtr.trailers[1].iov_base = TRL2;
+    hdtr.trailers[1].iov_len  = strlen(hdtr.trailers[1].iov_base);
+    hdtr.trailers[2].iov_base = malloc(TRL3_LEN);
+    memset(hdtr.trailers[2].iov_base, TRL3_CHAR, TRL3_LEN);
+    assert(hdtr.trailers[2].iov_base);
+    hdtr.trailers[2].iov_len  = TRL3_LEN;
+
+    expected_len = 
+        strlen(HDR1) + strlen(HDR2) + HDR3_LEN +
+        strlen(TRL1) + strlen(TRL2) + TRL3_LEN +
+        FILE_LENGTH;
+    
+    if (socket_mode == BLK) {
+        current_file_offset = 0;
+        len = FILE_LENGTH;
+        rv = apr_socket_sendfile(sock, f, &hdtr, &current_file_offset, &len, 0);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_socket_sendfile()", rv);
+        }
+        
+        printf("apr_socket_sendfile() updated offset with %ld\n",
+               (long int)current_file_offset);
+        
+        printf("apr_socket_sendfile() updated len with %ld\n",
+               (long int)len);
+        
+        printf("bytes really sent: %" APR_SIZE_T_FMT "\n",
+               expected_len);
+
+        if (len != expected_len) {
+            fprintf(stderr, "apr_socket_sendfile() didn't report the correct "
+                    "number of bytes sent!\n");
+            exit(1);
+        }
+    }
+    else {
+        /* non-blocking... wooooooo */
+        apr_size_t total_bytes_sent;
+        apr_pollfd_t pfd;
+
+        pset = NULL;
+        rv = apr_pollset_create(&pset, 1, p, 0);
+        assert(!rv);
+        pfd.p = p;
+        pfd.desc_type = APR_POLL_SOCKET;
+        pfd.reqevents = APR_POLLOUT;
+        pfd.rtnevents = 0;
+        pfd.desc.s = sock;
+        pfd.client_data = NULL;
+
+        rv = apr_pollset_add(pset, &pfd);        
+        assert(!rv);
+
+        total_bytes_sent = 0;
+        current_file_offset = 0;
+        len = FILE_LENGTH;
+        do {
+            apr_size_t tmplen;
+
+            tmplen = len; /* bytes remaining to send from the file */
+            printf("Calling apr_socket_sendfile()...\n");
+            printf("Headers (%d):\n", hdtr.numheaders);
+            for (i = 0; i < hdtr.numheaders; i++) {
+                printf("\t%ld bytes (%c)\n",
+                       (long)hdtr.headers[i].iov_len,
+                       *(char *)hdtr.headers[i].iov_base);
+            }
+            printf("File: %ld bytes from offset %ld\n",
+                   (long)tmplen, (long)current_file_offset);
+            printf("Trailers (%d):\n", hdtr.numtrailers);
+            for (i = 0; i < hdtr.numtrailers; i++) {
+                printf("\t%ld bytes\n",
+                       (long)hdtr.trailers[i].iov_len);
+            }
+
+            rv = apr_socket_sendfile(sock, f, &hdtr, &current_file_offset, &tmplen, 0);
+            printf("apr_socket_sendfile()->%d, sent %ld bytes\n", rv, (long)tmplen);
+            if (rv) {
+                if (APR_STATUS_IS_EAGAIN(rv)) {
+                    assert(tmplen == 0);
+                    nsocks = 1;
+                    tmprv = apr_pollset_poll(pset, -1, &nsocks, NULL);
+                    assert(!tmprv);
+                    assert(nsocks == 1);
+                    /* continue; */
+                }
+            }
+
+            total_bytes_sent += tmplen;
+
+            /* Adjust hdtr to compensate for partially-written
+             * data.
+             */
+
+            /* First, skip over any header data which might have
+             * been written.
+             */
+            while (tmplen && hdtr.numheaders) {
+                if (tmplen >= hdtr.headers[0].iov_len) {
+                    tmplen -= hdtr.headers[0].iov_len;
+                    --hdtr.numheaders;
+                    ++hdtr.headers;
+                }
+                else {
+                    hdtr.headers[0].iov_len -= tmplen;
+                    hdtr.headers[0].iov_base = 
+			(char*) hdtr.headers[0].iov_base + tmplen;
+                    tmplen = 0;
+                }
+            }
+
+            /* Now, skip over any file data which might have been
+             * written.
+             */
+
+            if (tmplen <= len) {
+                current_file_offset += tmplen;
+                len -= tmplen;
+                tmplen = 0;
+            }
+            else {
+                tmplen -= len;
+                len = 0;
+                current_file_offset = 0;
+            }
+
+            /* Last, skip over any trailer data which might have
+             * been written.
+             */
+
+            while (tmplen && hdtr.numtrailers) {
+                if (tmplen >= hdtr.trailers[0].iov_len) {
+                    tmplen -= hdtr.trailers[0].iov_len;
+                    --hdtr.numtrailers;
+                    ++hdtr.trailers;
+                }
+                else {
+                    hdtr.trailers[0].iov_len -= tmplen;
+                    hdtr.trailers[0].iov_base = 
+			(char *)hdtr.trailers[0].iov_base + tmplen;
+                    tmplen = 0;
+                }
+            }
+
+        } while (total_bytes_sent < expected_len &&
+                 (rv == APR_SUCCESS || 
+                 (APR_STATUS_IS_EAGAIN(rv) && socket_mode != TIMEOUT)));
+        if (total_bytes_sent != expected_len) {
+            fprintf(stderr,
+                    "client problem: sent %ld of %ld bytes\n",
+                    (long)total_bytes_sent, (long)expected_len);
+            exit(1);
+        }
+
+        if (rv) {
+            fprintf(stderr,
+                    "client problem: rv %d\n",
+                    rv);
+            exit(1);
+        }
+    }
+    
+    current_file_offset = 0;
+    rv = apr_file_seek(f, APR_CUR, &current_file_offset);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_file_seek()", rv);
+    }
+
+    printf("After apr_socket_sendfile(), the kernel file pointer is "
+           "at offset %ld.\n",
+           (long int)current_file_offset);
+
+    rv = apr_socket_shutdown(sock, APR_SHUTDOWN_WRITE);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_shutdown()", rv);
+    }
+
+    /* in case this is the non-blocking test, set socket timeout;
+     * we're just waiting for EOF */
+
+    rv = apr_socket_timeout_set(sock, apr_time_from_sec(3));
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_timeout_set()", rv);
+    }
+    
+    bytes_read = 1;
+    rv = apr_socket_recv(sock, buf, &bytes_read);
+    if (rv != APR_EOF) {
+        aprerr("apr_socket_recv() (expected APR_EOF)", rv);
+    }
+    if (bytes_read != 0) {
+        fprintf(stderr, "We expected to get 0 bytes read with APR_EOF\n"
+                "but instead we read %ld bytes.\n",
+                (long int)bytes_read);
+        exit(1);
+    }
+
+    printf("client: apr_socket_sendfile() worked as expected!\n");
+
+    rv = apr_file_remove(TESTFILE, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_file_remove()", rv);
+    }
+
+    if (start_server) {
+        apr_exit_why_e exitwhy;
+        apr_size_t nbytes;
+        char responsebuf[1024];
+        int exitcode;
+
+        rv = apr_file_pipe_timeout_set(server.out, apr_time_from_sec(2));
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_file_pipe_timeout_set()", rv);
+        }
+        nbytes = sizeof(responsebuf);
+        rv = apr_file_read(server.out, responsebuf, &nbytes);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_file_read() messages from server", rv);
+        }
+        printf("%.*s", (int)nbytes, responsebuf);
+        rv = apr_proc_wait(&server, &exitcode, &exitwhy, APR_WAIT);
+        if (rv != APR_CHILD_DONE) {
+            aprerr("apr_proc_wait() (expected APR_CHILD_DONE)", rv);
+        }
+        if (exitcode != 0) {
+            fprintf(stderr, "sendfile server returned %d\n", exitcode);
+            exit(1);
+        }
+    }
+
+    return 0;
+}
+
+static int server(apr_pool_t *p)
+{
+    apr_status_t rv;
+    apr_socket_t *sock;
+    char buf[120];
+    int i;
+    apr_socket_t *newsock = NULL;
+    apr_size_t bytes_read;
+    apr_sockaddr_t *localsa;
+    int family;
+
+    family = APR_INET;
+    apr_setup(p, &sock, &family);
+
+    rv = apr_socket_opt_set(sock, APR_SO_REUSEADDR, 1);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_opt_set()", rv);
+    }
+
+    rv = apr_sockaddr_info_get(&localsa, NULL, family, TESTSF_PORT, 0, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_sockaddr_info_get()", rv);
+    }
+
+    rv = apr_socket_bind(sock, localsa);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_bind()", rv);
+    }
+
+    rv = apr_socket_listen(sock, 5);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_listen()", rv);
+    }
+
+    printf("Waiting for a client to connect...\n");
+
+    rv = apr_socket_accept(&newsock, sock, p);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_accept()", rv);
+    }
+
+    printf("Processing a client...\n");
+
+    assert(sizeof buf > strlen(HDR1));
+    bytes_read = strlen(HDR1);
+    rv = apr_socket_recv(newsock, buf, &bytes_read);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_recv()", rv);
+    }
+    if (bytes_read != strlen(HDR1)) {
+        fprintf(stderr, "wrong data read (1)\n");
+        exit(1);
+    }
+    if (memcmp(buf, HDR1, strlen(HDR1))) {
+        fprintf(stderr, "wrong data read (2)\n");
+        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
+                (int)bytes_read, buf, HDR1);
+        exit(1);
+    }
+        
+    assert(sizeof buf > strlen(HDR2));
+    bytes_read = strlen(HDR2);
+    rv = apr_socket_recv(newsock, buf, &bytes_read);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_recv()", rv);
+    }
+    if (bytes_read != strlen(HDR2)) {
+        fprintf(stderr, "wrong data read (3)\n");
+        exit(1);
+    }
+    if (memcmp(buf, HDR2, strlen(HDR2))) {
+        fprintf(stderr, "wrong data read (4)\n");
+        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
+                (int)bytes_read, buf, HDR2);
+        exit(1);
+    }
+
+    for (i = 0; i < HDR3_LEN; i++) {
+        bytes_read = 1;
+        rv = apr_socket_recv(newsock, buf, &bytes_read);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_socket_recv()", rv);
+        }
+        if (bytes_read != 1) {
+            fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n",
+                    (long int)bytes_read);
+            exit(1);
+        }
+        if (buf[0] != HDR3_CHAR) {
+            fprintf(stderr,
+                    "problem with data read (byte %d of hdr 3):\n",
+                    i);
+            fprintf(stderr, "read `%c' (0x%x) from client; expected "
+                    "`%c'\n",
+                    buf[0], buf[0], HDR3_CHAR);
+            exit(1);
+        }
+    }
+        
+    for (i = 0; i < FILE_LENGTH; i++) {
+        bytes_read = 1;
+        rv = apr_socket_recv(newsock, buf, &bytes_read);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_socket_recv()", rv);
+        }
+        if (bytes_read != 1) {
+            fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n",
+                    (long int)bytes_read);
+            exit(1);
+        }
+        if (buf[0] != FILE_DATA_CHAR) {
+            fprintf(stderr,
+                    "problem with data read (byte %d of file):\n",
+                    i);
+            fprintf(stderr, "read `%c' (0x%x) from client; expected "
+                    "`%c'\n",
+                    buf[0], buf[0], FILE_DATA_CHAR);
+            exit(1);
+        }
+    }
+        
+    assert(sizeof buf > strlen(TRL1));
+    bytes_read = strlen(TRL1);
+    rv = apr_socket_recv(newsock, buf, &bytes_read);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_recv()", rv);
+    }
+    if (bytes_read != strlen(TRL1)) {
+        fprintf(stderr, "wrong data read (5)\n");
+        exit(1);
+    }
+    if (memcmp(buf, TRL1, strlen(TRL1))) {
+        fprintf(stderr, "wrong data read (6)\n");
+        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
+                (int)bytes_read, buf, TRL1);
+        exit(1);
+    }
+        
+    assert(sizeof buf > strlen(TRL2));
+    bytes_read = strlen(TRL2);
+    rv = apr_socket_recv(newsock, buf, &bytes_read);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_socket_recv()", rv);
+    }
+    if (bytes_read != strlen(TRL2)) {
+        fprintf(stderr, "wrong data read (7)\n");
+        exit(1);
+    }
+    if (memcmp(buf, TRL2, strlen(TRL2))) {
+        fprintf(stderr, "wrong data read (8)\n");
+        fprintf(stderr, "received: `%.*s'\nexpected: `%s'\n",
+                (int)bytes_read, buf, TRL2);
+        exit(1);
+    }
+
+    for (i = 0; i < TRL3_LEN; i++) {
+        bytes_read = 1;
+        rv = apr_socket_recv(newsock, buf, &bytes_read);
+        if (rv != APR_SUCCESS) {
+            aprerr("apr_socket_recv()", rv);
+        }
+        if (bytes_read != 1) {
+            fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n",
+                    (long int)bytes_read);
+            exit(1);
+        }
+        if (buf[0] != TRL3_CHAR) {
+            fprintf(stderr,
+                    "problem with data read (byte %d of trl 3):\n",
+                    i);
+            fprintf(stderr, "read `%c' (0x%x) from client; expected "
+                    "`%c'\n",
+                    buf[0], buf[0], TRL3_CHAR);
+            exit(1);
+        }
+    }
+        
+    bytes_read = 1;
+    rv = apr_socket_recv(newsock, buf, &bytes_read);
+    if (rv != APR_EOF) {
+        aprerr("apr_socket_recv() (expected APR_EOF)", rv);
+    }
+    if (bytes_read != 0) {
+        fprintf(stderr, "We expected to get 0 bytes read with APR_EOF\n"
+                "but instead we read %ld bytes (%c).\n",
+                (long int)bytes_read, buf[0]);
+        exit(1);
+    }
+
+    printf("server: apr_socket_sendfile() worked as expected!\n");
+
+    return 0;
+}
+
+int main(int argc, char *argv[])
+{
+    apr_pool_t *p;
+    apr_status_t rv;
+
+#ifdef SIGPIPE
+    signal(SIGPIPE, SIG_IGN);
+#endif
+
+    rv = apr_initialize();
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_initialize()", rv);
+    }
+
+    atexit(apr_terminate);
+
+    rv = apr_pool_create(&p, NULL);
+    if (rv != APR_SUCCESS) {
+        aprerr("apr_pool_create()", rv);
+    }
+
+    if (argc >= 2 && !strcmp(argv[1], "client")) {
+        const char *host = NULL;
+        int mode = BLK;
+        int start_server = 0;
+        int i;
+
+        for (i = 2; i < argc; i++) {
+            if (!strcmp(argv[i], "blocking")) {
+                mode = BLK;
+            }
+            else if (!strcmp(argv[i], "timeout")) {
+                mode = TIMEOUT;
+            }
+            else if (!strcmp(argv[i], "nonblocking")) {
+                mode = NONBLK;
+            }
+            else if (!strcmp(argv[i], "startserver")) {
+                start_server = 1;
+            }
+            else {
+                host = argv[i];
+            }	
+        }
+        return client(p, mode, host, start_server);
+    }
+    else if (argc == 2 && !strcmp(argv[1], "server")) {
+        return server(p);
+    }
+
+    fprintf(stderr, 
+            "Usage: %s client {blocking|nonblocking|timeout} [startserver] [server-host]\n"
+            "       %s server\n",
+            argv[0], argv[0]);
+    return -1;
+}
+
+#endif /* !APR_HAS_SENDFILE */

Deleted: vendor/apache/apr/1.5.2/test/sockchild.c
===================================================================
--- vendor/apache/apr/dist/test/sockchild.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/sockchild.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,84 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include "testsock.h"
-#include "apr_network_io.h"
-#include "apr_pools.h"
-
-int main(int argc, char *argv[])
-{
-    apr_pool_t *p;
-    apr_socket_t *sock;
-    apr_status_t rv;
-    apr_sockaddr_t *remote_sa;
-
-    apr_initialize();
-    atexit(apr_terminate);
-    apr_pool_create(&p, NULL);
-
-    if (argc < 2) {
-        exit(-1);
-    }
-
-    rv = apr_sockaddr_info_get(&remote_sa, "127.0.0.1", APR_UNSPEC, 8021, 0, p);
-    if (rv != APR_SUCCESS) {
-        exit(-1);
-    }
-
-    if (apr_socket_create(&sock, remote_sa->family, SOCK_STREAM, 0,
-                p) != APR_SUCCESS) {
-        exit(-1);
-    }
-
-    rv = apr_socket_timeout_set(sock, apr_time_from_sec(3));
-    if (rv) {
-        exit(-1);
-    }
-
-    apr_socket_connect(sock, remote_sa);
-        
-    if (!strcmp("read", argv[1])) {
-        char datarecv[STRLEN];
-        apr_size_t length = STRLEN;
-        apr_status_t rv;
-
-        memset(datarecv, 0, STRLEN);
-        rv = apr_socket_recv(sock, datarecv, &length);
-        apr_socket_close(sock);
-        if (APR_STATUS_IS_TIMEUP(rv)) {
-            exit(SOCKET_TIMEOUT); 
-        }
-
-        if (strcmp(datarecv, DATASTR)) {
-            exit(-1);
-        }
-        
-        exit((int)length);
-    }
-    else if (!strcmp("write", argv[1])) {
-        apr_size_t length = strlen(DATASTR);
-        apr_socket_send(sock, DATASTR, &length);
-
-        apr_socket_close(sock);
-        exit((int)length);
-    }
-    else if (!strcmp("close", argv[1])) {
-        apr_socket_close(sock);
-        exit(0);
-    }
-    exit(-1);
-}

Copied: vendor/apache/apr/1.5.2/test/sockchild.c (from rev 9273, vendor/apache/apr/dist/test/sockchild.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/sockchild.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/sockchild.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,90 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include "testsock.h"
+#include "apr_network_io.h"
+#include "apr_pools.h"
+
+int main(int argc, char *argv[])
+{
+    apr_pool_t *p;
+    apr_socket_t *sock;
+    apr_status_t rv;
+    apr_sockaddr_t *remote_sa;
+
+    apr_initialize();
+    atexit(apr_terminate);
+    apr_pool_create(&p, NULL);
+
+    if (argc < 2) {
+        exit(-1);
+    }
+
+    rv = apr_sockaddr_info_get(&remote_sa, "127.0.0.1", APR_UNSPEC, 8021, 0, p);
+    if (rv != APR_SUCCESS) {
+        exit(-1);
+    }
+
+    if (apr_socket_create(&sock, remote_sa->family, SOCK_STREAM, 0,
+                p) != APR_SUCCESS) {
+        exit(-1);
+    }
+
+    rv = apr_socket_timeout_set(sock, apr_time_from_sec(3));
+    if (rv) {
+        exit(-1);
+    }
+
+    apr_socket_connect(sock, remote_sa);
+        
+    if (!strcmp("read", argv[1])) {
+        char datarecv[STRLEN];
+        apr_size_t length = STRLEN;
+        apr_status_t rv;
+
+        memset(datarecv, 0, STRLEN);
+        rv = apr_socket_recv(sock, datarecv, &length);
+        apr_socket_close(sock);
+        if (APR_STATUS_IS_TIMEUP(rv)) {
+            exit(SOCKET_TIMEOUT); 
+        }
+
+        if (strcmp(datarecv, DATASTR)) {
+            exit(-1);
+        }
+        
+        exit((int)length);
+    }
+    else if (!strcmp("write", argv[1])
+             || !strcmp("write_after_delay", argv[1])) {
+        apr_size_t length = strlen(DATASTR);
+
+        if (!strcmp("write_after_delay", argv[1])) {
+            apr_sleep(apr_time_from_sec(2));
+        }
+
+        apr_socket_send(sock, DATASTR, &length);
+
+        apr_socket_close(sock);
+        exit((int)length);
+    }
+    else if (!strcmp("close", argv[1])) {
+        apr_socket_close(sock);
+        exit(0);
+    }
+    exit(-1);
+}

Deleted: vendor/apache/apr/1.5.2/test/testatomic.c
===================================================================
--- vendor/apache/apr/dist/test/testatomic.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testatomic.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,524 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-#include "apr_strings.h"
-#include "apr_thread_proc.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_atomic.h"
-#include "apr_time.h"
-
-/* Use pthread_setconcurrency where it is available and not a nullop,
- * i.e. platforms using M:N or M:1 thread models: */
-#if APR_HAS_THREADS && \
-   ((defined(SOLARIS2) && SOLARIS2 > 6) || defined(_AIX))
-/* also HP-UX, IRIX? ... */
-#define HAVE_PTHREAD_SETCONCURRENCY
-#endif
-
-#ifdef HAVE_PTHREAD_SETCONCURRENCY
-#include <pthread.h>
-#endif
-
-static void test_init(abts_case *tc, void *data)
-{
-    APR_ASSERT_SUCCESS(tc, "Could not initliaze atomics", apr_atomic_init(p));
-}
-
-static void test_set32(abts_case *tc, void *data)
-{
-    apr_uint32_t y32;
-    apr_atomic_set32(&y32, 2);
-    ABTS_INT_EQUAL(tc, 2, y32);
-}
-
-static void test_read32(abts_case *tc, void *data)
-{
-    apr_uint32_t y32;
-    apr_atomic_set32(&y32, 2);
-    ABTS_INT_EQUAL(tc, 2, apr_atomic_read32(&y32));
-}
-
-static void test_dec32(abts_case *tc, void *data)
-{
-    apr_uint32_t y32;
-    int rv;
-
-    apr_atomic_set32(&y32, 2);
-
-    rv = apr_atomic_dec32(&y32);
-    ABTS_INT_EQUAL(tc, 1, y32);
-    ABTS_ASSERT(tc, "atomic_dec returned zero when it shouldn't", rv != 0);
-
-    rv = apr_atomic_dec32(&y32);
-    ABTS_INT_EQUAL(tc, 0, y32);
-    ABTS_ASSERT(tc, "atomic_dec didn't returned zero when it should", rv == 0);
-}
-
-static void test_xchg32(abts_case *tc, void *data)
-{
-    apr_uint32_t oldval;
-    apr_uint32_t y32;
-
-    apr_atomic_set32(&y32, 100);
-    oldval = apr_atomic_xchg32(&y32, 50);
-
-    ABTS_INT_EQUAL(tc, 100, oldval);
-    ABTS_INT_EQUAL(tc, 50, y32);
-}
-
-static void test_xchgptr(abts_case *tc, void *data)
-{
-    int a;
-    void *ref = "little piggy";
-    volatile void *target_ptr = ref;
-    void *old_ptr;
-
-    old_ptr = apr_atomic_xchgptr(&target_ptr, &a);
-    ABTS_PTR_EQUAL(tc, ref, old_ptr);
-    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
-}
-
-static void test_cas_equal(abts_case *tc, void *data)
-{
-    apr_uint32_t casval = 0;
-    apr_uint32_t oldval;
-
-    oldval = apr_atomic_cas32(&casval, 12, 0);
-    ABTS_INT_EQUAL(tc, 0, oldval);
-    ABTS_INT_EQUAL(tc, 12, casval);
-}
-
-static void test_cas_equal_nonnull(abts_case *tc, void *data)
-{
-    apr_uint32_t casval = 12;
-    apr_uint32_t oldval;
-
-    oldval = apr_atomic_cas32(&casval, 23, 12);
-    ABTS_INT_EQUAL(tc, 12, oldval);
-    ABTS_INT_EQUAL(tc, 23, casval);
-}
-
-static void test_cas_notequal(abts_case *tc, void *data)
-{
-    apr_uint32_t casval = 12;
-    apr_uint32_t oldval;
-
-    oldval = apr_atomic_cas32(&casval, 23, 2);
-    ABTS_INT_EQUAL(tc, 12, oldval);
-    ABTS_INT_EQUAL(tc, 12, casval);
-}
-
-static void test_casptr_equal(abts_case *tc, void *data)
-{
-    int a;
-    volatile void *target_ptr = NULL;
-    void *old_ptr;
-
-    old_ptr = apr_atomic_casptr(&target_ptr, &a, NULL);
-    ABTS_PTR_EQUAL(tc, NULL, old_ptr);
-    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
-}
-
-static void test_casptr_equal_nonnull(abts_case *tc, void *data)
-{
-    int a, b;
-    volatile void *target_ptr = &a;
-    void *old_ptr;
-
-    old_ptr = apr_atomic_casptr(&target_ptr, &b, &a);
-    ABTS_PTR_EQUAL(tc, &a, old_ptr);
-    ABTS_PTR_EQUAL(tc, &b, (void *) target_ptr);
-}
-
-static void test_casptr_notequal(abts_case *tc, void *data)
-{
-    int a, b;
-    volatile void *target_ptr = &a;
-    void *old_ptr;
-
-    old_ptr = apr_atomic_casptr(&target_ptr, &a, &b);
-    ABTS_PTR_EQUAL(tc, &a, old_ptr);
-    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
-}
-
-static void test_add32(abts_case *tc, void *data)
-{
-    apr_uint32_t oldval;
-    apr_uint32_t y32;
-
-    apr_atomic_set32(&y32, 23);
-    oldval = apr_atomic_add32(&y32, 4);
-    ABTS_INT_EQUAL(tc, 23, oldval);
-    ABTS_INT_EQUAL(tc, 27, y32);
-}
-
-static void test_inc32(abts_case *tc, void *data)
-{
-    apr_uint32_t oldval;
-    apr_uint32_t y32;
-
-    apr_atomic_set32(&y32, 23);
-    oldval = apr_atomic_inc32(&y32);
-    ABTS_INT_EQUAL(tc, 23, oldval);
-    ABTS_INT_EQUAL(tc, 24, y32);
-}
-
-static void test_set_add_inc_sub(abts_case *tc, void *data)
-{
-    apr_uint32_t y32;
-
-    apr_atomic_set32(&y32, 0);
-    apr_atomic_add32(&y32, 20);
-    apr_atomic_inc32(&y32);
-    apr_atomic_sub32(&y32, 10);
-
-    ABTS_INT_EQUAL(tc, 11, y32);
-}
-
-static void test_wrap_zero(abts_case *tc, void *data)
-{
-    apr_uint32_t y32;
-    apr_uint32_t rv;
-    apr_uint32_t minus1 = -1;
-    char *str;
-
-    apr_atomic_set32(&y32, 0);
-    rv = apr_atomic_dec32(&y32);
-
-    ABTS_ASSERT(tc, "apr_atomic_dec32 on zero returned zero.", rv != 0);
-    str = apr_psprintf(p, "zero wrap failed: 0 - 1 = %d", y32);
-    ABTS_ASSERT(tc, str, y32 == minus1);
-}
-
-static void test_inc_neg1(abts_case *tc, void *data)
-{
-    apr_uint32_t y32 = -1;
-    apr_uint32_t minus1 = -1;
-    apr_uint32_t rv;
-    char *str;
-
-    rv = apr_atomic_inc32(&y32);
-
-    ABTS_ASSERT(tc, "apr_atomic_inc32 didn't return the old value.", rv == minus1);
-    str = apr_psprintf(p, "zero wrap failed: -1 + 1 = %d", y32);
-    ABTS_ASSERT(tc, str, y32 == 0);
-}
-
-
-#if APR_HAS_THREADS
-
-void *APR_THREAD_FUNC thread_func_mutex(apr_thread_t *thd, void *data);
-void *APR_THREAD_FUNC thread_func_atomic(apr_thread_t *thd, void *data);
-
-apr_thread_mutex_t *thread_lock;
-volatile apr_uint32_t mutex_locks = 0;
-volatile apr_uint32_t atomic_ops = 0;
-apr_status_t exit_ret_val = 123; /* just some made up number to check on later */
-
-#define NUM_THREADS 40
-#define NUM_ITERATIONS 20000
-
-void *APR_THREAD_FUNC thread_func_mutex(apr_thread_t *thd, void *data)
-{
-    int i;
-
-    for (i = 0; i < NUM_ITERATIONS; i++) {
-        apr_thread_mutex_lock(thread_lock);
-        mutex_locks++;
-        apr_thread_mutex_unlock(thread_lock);
-    }
-    apr_thread_exit(thd, exit_ret_val);
-    return NULL;
-}
-
-void *APR_THREAD_FUNC thread_func_atomic(apr_thread_t *thd, void *data)
-{
-    int i;
-
-    for (i = 0; i < NUM_ITERATIONS ; i++) {
-        apr_atomic_inc32(&atomic_ops);
-        apr_atomic_add32(&atomic_ops, 2);
-        apr_atomic_dec32(&atomic_ops);
-        apr_atomic_dec32(&atomic_ops);
-    }
-    apr_thread_exit(thd, exit_ret_val);
-    return NULL;
-}
-
-static void test_atomics_threaded(abts_case *tc, void *data)
-{
-    apr_thread_t *t1[NUM_THREADS];
-    apr_thread_t *t2[NUM_THREADS];
-    apr_status_t rv;
-    int i;
-
-#ifdef HAVE_PTHREAD_SETCONCURRENCY
-    pthread_setconcurrency(8);
-#endif
-
-    rv = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p);
-    APR_ASSERT_SUCCESS(tc, "Could not create lock", rv);
-
-    for (i = 0; i < NUM_THREADS; i++) {
-        apr_status_t r1, r2;
-        r1 = apr_thread_create(&t1[i], NULL, thread_func_mutex, NULL, p);
-        r2 = apr_thread_create(&t2[i], NULL, thread_func_atomic, NULL, p);
-        ABTS_ASSERT(tc, "Failed creating threads", !r1 && !r2);
-    }
-
-    for (i = 0; i < NUM_THREADS; i++) {
-        apr_status_t s1, s2;
-        apr_thread_join(&s1, t1[i]);
-        apr_thread_join(&s2, t2[i]);
-
-        ABTS_ASSERT(tc, "Invalid return value from thread_join",
-                    s1 == exit_ret_val && s2 == exit_ret_val);
-    }
-
-    ABTS_INT_EQUAL(tc, NUM_THREADS * NUM_ITERATIONS, mutex_locks);
-    ABTS_INT_EQUAL(tc, NUM_THREADS * NUM_ITERATIONS,
-                   apr_atomic_read32(&atomic_ops));
-
-    rv = apr_thread_mutex_destroy(thread_lock);
-    ABTS_ASSERT(tc, "Failed creating threads", rv == APR_SUCCESS);
-}
-
-#undef NUM_THREADS
-#define NUM_THREADS 7
-
-typedef struct tbox_t tbox_t;
-
-struct tbox_t {
-    abts_case *tc;
-    apr_uint32_t *mem;
-    apr_uint32_t preval;
-    apr_uint32_t postval;
-    apr_uint32_t loop;
-    void (*func)(tbox_t *box);
-};
-
-static APR_INLINE void busyloop_read32(tbox_t *tbox)
-{
-    apr_uint32_t val;
-
-    do {
-        val = apr_atomic_read32(tbox->mem);
-
-        if (val != tbox->preval)
-            apr_thread_yield();
-        else
-            break;
-    } while (1);
-}
-
-static void busyloop_set32(tbox_t *tbox)
-{
-    do {
-        busyloop_read32(tbox);
-        apr_atomic_set32(tbox->mem, tbox->postval);
-    } while (--tbox->loop);
-}
-
-static void busyloop_add32(tbox_t *tbox)
-{
-    apr_uint32_t val;
-
-    do {
-        busyloop_read32(tbox);
-        val = apr_atomic_add32(tbox->mem, tbox->postval);
-        apr_thread_mutex_lock(thread_lock);
-        ABTS_INT_EQUAL(tbox->tc, val, tbox->preval);
-        apr_thread_mutex_unlock(thread_lock);
-    } while (--tbox->loop);
-}
-
-static void busyloop_sub32(tbox_t *tbox)
-{
-    do {
-        busyloop_read32(tbox);
-        apr_atomic_sub32(tbox->mem, tbox->postval);
-    } while (--tbox->loop);
-}
-
-static void busyloop_inc32(tbox_t *tbox)
-{
-    apr_uint32_t val;
-
-    do {
-        busyloop_read32(tbox);
-        val = apr_atomic_inc32(tbox->mem);
-        apr_thread_mutex_lock(thread_lock);
-        ABTS_INT_EQUAL(tbox->tc, val, tbox->preval);
-        apr_thread_mutex_unlock(thread_lock);
-    } while (--tbox->loop);
-}
-
-static void busyloop_dec32(tbox_t *tbox)
-{
-    apr_uint32_t val;
-
-    do {
-        busyloop_read32(tbox);
-        val = apr_atomic_dec32(tbox->mem);
-        apr_thread_mutex_lock(thread_lock);
-        ABTS_INT_NEQUAL(tbox->tc, 0, val);
-        apr_thread_mutex_unlock(thread_lock);
-    } while (--tbox->loop);
-}
-
-static void busyloop_cas32(tbox_t *tbox)
-{
-    apr_uint32_t val;
-
-    do {
-        do {
-            val = apr_atomic_cas32(tbox->mem, tbox->postval, tbox->preval);
-
-            if (val != tbox->preval)
-                apr_thread_yield();
-            else
-                break;
-        } while (1);
-    } while (--tbox->loop);
-}
-
-static void busyloop_xchg32(tbox_t *tbox)
-{
-    apr_uint32_t val;
-
-    do {
-        busyloop_read32(tbox);
-        val = apr_atomic_xchg32(tbox->mem, tbox->postval);
-        apr_thread_mutex_lock(thread_lock);
-        ABTS_INT_EQUAL(tbox->tc, val, tbox->preval);
-        apr_thread_mutex_unlock(thread_lock);
-    } while (--tbox->loop);
-}
-
-static void *APR_THREAD_FUNC thread_func_busyloop(apr_thread_t *thd, void *data)
-{
-    tbox_t *tbox = data;
-
-    tbox->func(tbox);
-
-    apr_thread_exit(thd, 0);
-
-    return NULL;
-}
-
-static void test_atomics_busyloop_threaded(abts_case *tc, void *data)
-{
-    unsigned int i;
-    apr_status_t rv;
-    apr_uint32_t count = 0;
-    tbox_t tbox[NUM_THREADS];
-    apr_thread_t *thread[NUM_THREADS];
-
-    rv = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p);
-    APR_ASSERT_SUCCESS(tc, "Could not create lock", rv);
-
-    /* get ready */
-    for (i = 0; i < NUM_THREADS; i++) {
-        tbox[i].tc = tc;
-        tbox[i].mem = &count;
-        tbox[i].loop = 50;
-    }
-
-    tbox[0].preval = 98;
-    tbox[0].postval = 3891;
-    tbox[0].func = busyloop_add32;
-
-    tbox[1].preval = 3989;
-    tbox[1].postval = 1010;
-    tbox[1].func = busyloop_sub32;
-
-    tbox[2].preval = 2979;
-    tbox[2].postval = 0; /* not used */
-    tbox[2].func = busyloop_inc32;
-
-    tbox[3].preval = 2980;
-    tbox[3].postval = 16384;
-    tbox[3].func = busyloop_set32;
-
-    tbox[4].preval = 16384;
-    tbox[4].postval = 0; /* not used */
-    tbox[4].func = busyloop_dec32;
-
-    tbox[5].preval = 16383;
-    tbox[5].postval = 1048576;
-    tbox[5].func = busyloop_cas32;
-
-    tbox[6].preval = 1048576;
-    tbox[6].postval = 98; /* goto tbox[0] */
-    tbox[6].func = busyloop_xchg32;
-
-    /* get set */
-    for (i = 0; i < NUM_THREADS; i++) {
-        rv = apr_thread_create(&thread[i], NULL, thread_func_busyloop,
-                               &tbox[i], p);
-        ABTS_ASSERT(tc, "Failed creating thread", rv == APR_SUCCESS);
-    }
-
-    /* go! */
-    apr_atomic_set32(tbox->mem, 98);
-
-    for (i = 0; i < NUM_THREADS; i++) {
-        apr_status_t retval;
-        rv = apr_thread_join(&retval, thread[i]);
-        ABTS_ASSERT(tc, "Thread join failed", rv == APR_SUCCESS);
-        ABTS_ASSERT(tc, "Invalid return value from thread_join", retval == 0);
-    }
-
-    ABTS_INT_EQUAL(tbox->tc, 98, count);
-
-    rv = apr_thread_mutex_destroy(thread_lock);
-    ABTS_ASSERT(tc, "Failed creating threads", rv == APR_SUCCESS);
-}
-
-#endif /* !APR_HAS_THREADS */
-
-abts_suite *testatomic(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, test_init, NULL);
-    abts_run_test(suite, test_set32, NULL);
-    abts_run_test(suite, test_read32, NULL);
-    abts_run_test(suite, test_dec32, NULL);
-    abts_run_test(suite, test_xchg32, NULL);
-    abts_run_test(suite, test_xchgptr, NULL);
-    abts_run_test(suite, test_cas_equal, NULL);
-    abts_run_test(suite, test_cas_equal_nonnull, NULL);
-    abts_run_test(suite, test_cas_notequal, NULL);
-    abts_run_test(suite, test_casptr_equal, NULL);
-    abts_run_test(suite, test_casptr_equal_nonnull, NULL);
-    abts_run_test(suite, test_casptr_notequal, NULL);
-    abts_run_test(suite, test_add32, NULL);
-    abts_run_test(suite, test_inc32, NULL);
-    abts_run_test(suite, test_set_add_inc_sub, NULL);
-    abts_run_test(suite, test_wrap_zero, NULL);
-    abts_run_test(suite, test_inc_neg1, NULL);
-
-#if APR_HAS_THREADS
-    abts_run_test(suite, test_atomics_threaded, NULL);
-    abts_run_test(suite, test_atomics_busyloop_threaded, NULL);
-#endif
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testatomic.c (from rev 9273, vendor/apache/apr/dist/test/testatomic.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testatomic.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testatomic.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,536 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "apr_strings.h"
+#include "apr_thread_proc.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_atomic.h"
+#include "apr_time.h"
+
+/* Use pthread_setconcurrency where it is available and not a nullop,
+ * i.e. platforms using M:N or M:1 thread models: */
+#if APR_HAS_THREADS && \
+   ((defined(SOLARIS2) && SOLARIS2 > 6) || defined(_AIX))
+/* also HP-UX, IRIX? ... */
+#define HAVE_PTHREAD_SETCONCURRENCY
+#endif
+
+#ifdef HAVE_PTHREAD_SETCONCURRENCY
+#include <pthread.h>
+#endif
+
+static void test_init(abts_case *tc, void *data)
+{
+    APR_ASSERT_SUCCESS(tc, "Could not initliaze atomics", apr_atomic_init(p));
+}
+
+static void test_set32(abts_case *tc, void *data)
+{
+    apr_uint32_t y32;
+    apr_atomic_set32(&y32, 2);
+    ABTS_INT_EQUAL(tc, 2, y32);
+}
+
+static void test_read32(abts_case *tc, void *data)
+{
+    apr_uint32_t y32;
+    apr_atomic_set32(&y32, 2);
+    ABTS_INT_EQUAL(tc, 2, apr_atomic_read32(&y32));
+}
+
+static void test_dec32(abts_case *tc, void *data)
+{
+    apr_uint32_t y32;
+    int rv;
+
+    apr_atomic_set32(&y32, 2);
+
+    rv = apr_atomic_dec32(&y32);
+    ABTS_INT_EQUAL(tc, 1, y32);
+    ABTS_ASSERT(tc, "atomic_dec returned zero when it shouldn't", rv != 0);
+
+    rv = apr_atomic_dec32(&y32);
+    ABTS_INT_EQUAL(tc, 0, y32);
+    ABTS_ASSERT(tc, "atomic_dec didn't returned zero when it should", rv == 0);
+}
+
+static void test_xchg32(abts_case *tc, void *data)
+{
+    apr_uint32_t oldval;
+    apr_uint32_t y32;
+
+    apr_atomic_set32(&y32, 100);
+    oldval = apr_atomic_xchg32(&y32, 50);
+
+    ABTS_INT_EQUAL(tc, 100, oldval);
+    ABTS_INT_EQUAL(tc, 50, y32);
+}
+
+static void test_xchgptr(abts_case *tc, void *data)
+{
+    int a;
+    void *ref = "little piggy";
+    volatile void *target_ptr = ref;
+    void *old_ptr;
+
+    old_ptr = apr_atomic_xchgptr(&target_ptr, &a);
+    ABTS_PTR_EQUAL(tc, ref, old_ptr);
+    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
+}
+
+static void test_cas_equal(abts_case *tc, void *data)
+{
+    apr_uint32_t casval = 0;
+    apr_uint32_t oldval;
+
+    oldval = apr_atomic_cas32(&casval, 12, 0);
+    ABTS_INT_EQUAL(tc, 0, oldval);
+    ABTS_INT_EQUAL(tc, 12, casval);
+}
+
+static void test_cas_equal_nonnull(abts_case *tc, void *data)
+{
+    apr_uint32_t casval = 12;
+    apr_uint32_t oldval;
+
+    oldval = apr_atomic_cas32(&casval, 23, 12);
+    ABTS_INT_EQUAL(tc, 12, oldval);
+    ABTS_INT_EQUAL(tc, 23, casval);
+}
+
+static void test_cas_notequal(abts_case *tc, void *data)
+{
+    apr_uint32_t casval = 12;
+    apr_uint32_t oldval;
+
+    oldval = apr_atomic_cas32(&casval, 23, 2);
+    ABTS_INT_EQUAL(tc, 12, oldval);
+    ABTS_INT_EQUAL(tc, 12, casval);
+}
+
+static void test_casptr_equal(abts_case *tc, void *data)
+{
+    int a;
+    volatile void *target_ptr = NULL;
+    void *old_ptr;
+
+    old_ptr = apr_atomic_casptr(&target_ptr, &a, NULL);
+    ABTS_PTR_EQUAL(tc, NULL, old_ptr);
+    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
+}
+
+static void test_casptr_equal_nonnull(abts_case *tc, void *data)
+{
+    int a, b;
+    volatile void *target_ptr = &a;
+    void *old_ptr;
+
+    old_ptr = apr_atomic_casptr(&target_ptr, &b, &a);
+    ABTS_PTR_EQUAL(tc, &a, old_ptr);
+    ABTS_PTR_EQUAL(tc, &b, (void *) target_ptr);
+}
+
+static void test_casptr_notequal(abts_case *tc, void *data)
+{
+    int a, b;
+    volatile void *target_ptr = &a;
+    void *old_ptr;
+
+    old_ptr = apr_atomic_casptr(&target_ptr, &a, &b);
+    ABTS_PTR_EQUAL(tc, &a, old_ptr);
+    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
+}
+
+static void test_add32(abts_case *tc, void *data)
+{
+    apr_uint32_t oldval;
+    apr_uint32_t y32;
+
+    apr_atomic_set32(&y32, 23);
+    oldval = apr_atomic_add32(&y32, 4);
+    ABTS_INT_EQUAL(tc, 23, oldval);
+    ABTS_INT_EQUAL(tc, 27, y32);
+}
+
+static void test_add32_neg(abts_case *tc, void *data)
+{
+    apr_uint32_t oldval;
+    apr_uint32_t y32;
+
+    apr_atomic_set32(&y32, 23);
+    oldval = apr_atomic_add32(&y32, -10);
+    ABTS_INT_EQUAL(tc, 23, oldval);
+    ABTS_INT_EQUAL(tc, 13, y32);
+}
+
+static void test_inc32(abts_case *tc, void *data)
+{
+    apr_uint32_t oldval;
+    apr_uint32_t y32;
+
+    apr_atomic_set32(&y32, 23);
+    oldval = apr_atomic_inc32(&y32);
+    ABTS_INT_EQUAL(tc, 23, oldval);
+    ABTS_INT_EQUAL(tc, 24, y32);
+}
+
+static void test_set_add_inc_sub(abts_case *tc, void *data)
+{
+    apr_uint32_t y32;
+
+    apr_atomic_set32(&y32, 0);
+    apr_atomic_add32(&y32, 20);
+    apr_atomic_inc32(&y32);
+    apr_atomic_sub32(&y32, 10);
+
+    ABTS_INT_EQUAL(tc, 11, y32);
+}
+
+static void test_wrap_zero(abts_case *tc, void *data)
+{
+    apr_uint32_t y32;
+    apr_uint32_t rv;
+    apr_uint32_t minus1 = (apr_uint32_t)-1;
+    char *str;
+
+    apr_atomic_set32(&y32, 0);
+    rv = apr_atomic_dec32(&y32);
+
+    ABTS_ASSERT(tc, "apr_atomic_dec32 on zero returned zero.", rv != 0);
+    str = apr_psprintf(p, "zero wrap failed: 0 - 1 = %d", y32);
+    ABTS_ASSERT(tc, str, y32 == minus1);
+}
+
+static void test_inc_neg1(abts_case *tc, void *data)
+{
+    apr_uint32_t y32 = (apr_uint32_t)-1;
+    apr_uint32_t minus1 = (apr_uint32_t)-1;
+    apr_uint32_t rv;
+    char *str;
+
+    rv = apr_atomic_inc32(&y32);
+
+    ABTS_ASSERT(tc, "apr_atomic_inc32 didn't return the old value.", rv == minus1);
+    str = apr_psprintf(p, "zero wrap failed: -1 + 1 = %d", y32);
+    ABTS_ASSERT(tc, str, y32 == 0);
+}
+
+
+#if APR_HAS_THREADS
+
+void *APR_THREAD_FUNC thread_func_mutex(apr_thread_t *thd, void *data);
+void *APR_THREAD_FUNC thread_func_atomic(apr_thread_t *thd, void *data);
+
+apr_thread_mutex_t *thread_lock;
+volatile apr_uint32_t mutex_locks = 0;
+volatile apr_uint32_t atomic_ops = 0;
+apr_status_t exit_ret_val = 123; /* just some made up number to check on later */
+
+#define NUM_THREADS 40
+#define NUM_ITERATIONS 20000
+
+void *APR_THREAD_FUNC thread_func_mutex(apr_thread_t *thd, void *data)
+{
+    int i;
+
+    for (i = 0; i < NUM_ITERATIONS; i++) {
+        apr_thread_mutex_lock(thread_lock);
+        mutex_locks++;
+        apr_thread_mutex_unlock(thread_lock);
+    }
+    apr_thread_exit(thd, exit_ret_val);
+    return NULL;
+}
+
+void *APR_THREAD_FUNC thread_func_atomic(apr_thread_t *thd, void *data)
+{
+    int i;
+
+    for (i = 0; i < NUM_ITERATIONS ; i++) {
+        apr_atomic_inc32(&atomic_ops);
+        apr_atomic_add32(&atomic_ops, 2);
+        apr_atomic_dec32(&atomic_ops);
+        apr_atomic_dec32(&atomic_ops);
+    }
+    apr_thread_exit(thd, exit_ret_val);
+    return NULL;
+}
+
+static void test_atomics_threaded(abts_case *tc, void *data)
+{
+    apr_thread_t *t1[NUM_THREADS];
+    apr_thread_t *t2[NUM_THREADS];
+    apr_status_t rv;
+    int i;
+
+#ifdef HAVE_PTHREAD_SETCONCURRENCY
+    pthread_setconcurrency(8);
+#endif
+
+    rv = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p);
+    APR_ASSERT_SUCCESS(tc, "Could not create lock", rv);
+
+    for (i = 0; i < NUM_THREADS; i++) {
+        apr_status_t r1, r2;
+        r1 = apr_thread_create(&t1[i], NULL, thread_func_mutex, NULL, p);
+        r2 = apr_thread_create(&t2[i], NULL, thread_func_atomic, NULL, p);
+        ABTS_ASSERT(tc, "Failed creating threads", !r1 && !r2);
+    }
+
+    for (i = 0; i < NUM_THREADS; i++) {
+        apr_status_t s1, s2;
+        apr_thread_join(&s1, t1[i]);
+        apr_thread_join(&s2, t2[i]);
+
+        ABTS_ASSERT(tc, "Invalid return value from thread_join",
+                    s1 == exit_ret_val && s2 == exit_ret_val);
+    }
+
+    ABTS_INT_EQUAL(tc, NUM_THREADS * NUM_ITERATIONS, mutex_locks);
+    ABTS_INT_EQUAL(tc, NUM_THREADS * NUM_ITERATIONS,
+                   apr_atomic_read32(&atomic_ops));
+
+    rv = apr_thread_mutex_destroy(thread_lock);
+    ABTS_ASSERT(tc, "Failed creating threads", rv == APR_SUCCESS);
+}
+
+#undef NUM_THREADS
+#define NUM_THREADS 7
+
+typedef struct tbox_t tbox_t;
+
+struct tbox_t {
+    abts_case *tc;
+    apr_uint32_t *mem;
+    apr_uint32_t preval;
+    apr_uint32_t postval;
+    apr_uint32_t loop;
+    void (*func)(tbox_t *box);
+};
+
+static APR_INLINE void busyloop_read32(tbox_t *tbox)
+{
+    apr_uint32_t val;
+
+    do {
+        val = apr_atomic_read32(tbox->mem);
+
+        if (val != tbox->preval)
+            apr_thread_yield();
+        else
+            break;
+    } while (1);
+}
+
+static void busyloop_set32(tbox_t *tbox)
+{
+    do {
+        busyloop_read32(tbox);
+        apr_atomic_set32(tbox->mem, tbox->postval);
+    } while (--tbox->loop);
+}
+
+static void busyloop_add32(tbox_t *tbox)
+{
+    apr_uint32_t val;
+
+    do {
+        busyloop_read32(tbox);
+        val = apr_atomic_add32(tbox->mem, tbox->postval);
+        apr_thread_mutex_lock(thread_lock);
+        ABTS_INT_EQUAL(tbox->tc, val, tbox->preval);
+        apr_thread_mutex_unlock(thread_lock);
+    } while (--tbox->loop);
+}
+
+static void busyloop_sub32(tbox_t *tbox)
+{
+    do {
+        busyloop_read32(tbox);
+        apr_atomic_sub32(tbox->mem, tbox->postval);
+    } while (--tbox->loop);
+}
+
+static void busyloop_inc32(tbox_t *tbox)
+{
+    apr_uint32_t val;
+
+    do {
+        busyloop_read32(tbox);
+        val = apr_atomic_inc32(tbox->mem);
+        apr_thread_mutex_lock(thread_lock);
+        ABTS_INT_EQUAL(tbox->tc, val, tbox->preval);
+        apr_thread_mutex_unlock(thread_lock);
+    } while (--tbox->loop);
+}
+
+static void busyloop_dec32(tbox_t *tbox)
+{
+    apr_uint32_t val;
+
+    do {
+        busyloop_read32(tbox);
+        val = apr_atomic_dec32(tbox->mem);
+        apr_thread_mutex_lock(thread_lock);
+        ABTS_INT_NEQUAL(tbox->tc, 0, val);
+        apr_thread_mutex_unlock(thread_lock);
+    } while (--tbox->loop);
+}
+
+static void busyloop_cas32(tbox_t *tbox)
+{
+    apr_uint32_t val;
+
+    do {
+        do {
+            val = apr_atomic_cas32(tbox->mem, tbox->postval, tbox->preval);
+
+            if (val != tbox->preval)
+                apr_thread_yield();
+            else
+                break;
+        } while (1);
+    } while (--tbox->loop);
+}
+
+static void busyloop_xchg32(tbox_t *tbox)
+{
+    apr_uint32_t val;
+
+    do {
+        busyloop_read32(tbox);
+        val = apr_atomic_xchg32(tbox->mem, tbox->postval);
+        apr_thread_mutex_lock(thread_lock);
+        ABTS_INT_EQUAL(tbox->tc, val, tbox->preval);
+        apr_thread_mutex_unlock(thread_lock);
+    } while (--tbox->loop);
+}
+
+static void *APR_THREAD_FUNC thread_func_busyloop(apr_thread_t *thd, void *data)
+{
+    tbox_t *tbox = data;
+
+    tbox->func(tbox);
+
+    apr_thread_exit(thd, 0);
+
+    return NULL;
+}
+
+static void test_atomics_busyloop_threaded(abts_case *tc, void *data)
+{
+    unsigned int i;
+    apr_status_t rv;
+    apr_uint32_t count = 0;
+    tbox_t tbox[NUM_THREADS];
+    apr_thread_t *thread[NUM_THREADS];
+
+    rv = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p);
+    APR_ASSERT_SUCCESS(tc, "Could not create lock", rv);
+
+    /* get ready */
+    for (i = 0; i < NUM_THREADS; i++) {
+        tbox[i].tc = tc;
+        tbox[i].mem = &count;
+        tbox[i].loop = 50;
+    }
+
+    tbox[0].preval = 98;
+    tbox[0].postval = 3891;
+    tbox[0].func = busyloop_add32;
+
+    tbox[1].preval = 3989;
+    tbox[1].postval = 1010;
+    tbox[1].func = busyloop_sub32;
+
+    tbox[2].preval = 2979;
+    tbox[2].postval = 0; /* not used */
+    tbox[2].func = busyloop_inc32;
+
+    tbox[3].preval = 2980;
+    tbox[3].postval = 16384;
+    tbox[3].func = busyloop_set32;
+
+    tbox[4].preval = 16384;
+    tbox[4].postval = 0; /* not used */
+    tbox[4].func = busyloop_dec32;
+
+    tbox[5].preval = 16383;
+    tbox[5].postval = 1048576;
+    tbox[5].func = busyloop_cas32;
+
+    tbox[6].preval = 1048576;
+    tbox[6].postval = 98; /* goto tbox[0] */
+    tbox[6].func = busyloop_xchg32;
+
+    /* get set */
+    for (i = 0; i < NUM_THREADS; i++) {
+        rv = apr_thread_create(&thread[i], NULL, thread_func_busyloop,
+                               &tbox[i], p);
+        ABTS_ASSERT(tc, "Failed creating thread", rv == APR_SUCCESS);
+    }
+
+    /* go! */
+    apr_atomic_set32(tbox->mem, 98);
+
+    for (i = 0; i < NUM_THREADS; i++) {
+        apr_status_t retval;
+        rv = apr_thread_join(&retval, thread[i]);
+        ABTS_ASSERT(tc, "Thread join failed", rv == APR_SUCCESS);
+        ABTS_ASSERT(tc, "Invalid return value from thread_join", retval == 0);
+    }
+
+    ABTS_INT_EQUAL(tbox->tc, 98, count);
+
+    rv = apr_thread_mutex_destroy(thread_lock);
+    ABTS_ASSERT(tc, "Failed creating threads", rv == APR_SUCCESS);
+}
+
+#endif /* !APR_HAS_THREADS */
+
+abts_suite *testatomic(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, test_init, NULL);
+    abts_run_test(suite, test_set32, NULL);
+    abts_run_test(suite, test_read32, NULL);
+    abts_run_test(suite, test_dec32, NULL);
+    abts_run_test(suite, test_xchg32, NULL);
+    abts_run_test(suite, test_xchgptr, NULL);
+    abts_run_test(suite, test_cas_equal, NULL);
+    abts_run_test(suite, test_cas_equal_nonnull, NULL);
+    abts_run_test(suite, test_cas_notequal, NULL);
+    abts_run_test(suite, test_casptr_equal, NULL);
+    abts_run_test(suite, test_casptr_equal_nonnull, NULL);
+    abts_run_test(suite, test_casptr_notequal, NULL);
+    abts_run_test(suite, test_add32, NULL);
+    abts_run_test(suite, test_add32_neg, NULL);
+    abts_run_test(suite, test_inc32, NULL);
+    abts_run_test(suite, test_set_add_inc_sub, NULL);
+    abts_run_test(suite, test_wrap_zero, NULL);
+    abts_run_test(suite, test_inc_neg1, NULL);
+
+#if APR_HAS_THREADS
+    abts_run_test(suite, test_atomics_threaded, NULL);
+    abts_run_test(suite, test_atomics_busyloop_threaded, NULL);
+#endif
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testdir.c
===================================================================
--- vendor/apache/apr/dist/test/testdir.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testdir.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,264 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "apr_file_io.h"
-#include "apr_file_info.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "testutil.h"
-
-static void test_mkdir(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_finfo_t finfo;
-
-    rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
-}
-
-static void test_mkdir_recurs(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_finfo_t finfo;
-
-    rv = apr_dir_make_recursive("data/one/two/three", 
-                                APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_stat(&finfo, "data/one", APR_FINFO_TYPE, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
-
-    rv = apr_stat(&finfo, "data/one/two", APR_FINFO_TYPE, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
-
-    rv = apr_stat(&finfo, "data/one/two/three", APR_FINFO_TYPE, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
-}
-
-static void test_remove(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_finfo_t finfo;
-
-    rv = apr_dir_remove("data/testdir", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
-}
-
-static void test_removeall_fail(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_dir_remove("data/one", p);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOTEMPTY(rv));
-}
-
-static void test_removeall(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_dir_remove("data/one/two/three", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_dir_remove("data/one/two", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_dir_remove("data/one", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void test_remove_notthere(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_dir_remove("data/notthere", p);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
-}
-
-static void test_mkdir_twice(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EEXIST(rv));
-
-    rv = apr_dir_remove("data/testdir", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void test_opendir(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_dir_t *dir;
-
-    rv = apr_dir_open(&dir, "data", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    apr_dir_close(dir);
-}
-
-static void test_opendir_notthere(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_dir_t *dir;
-
-    rv = apr_dir_open(&dir, "notthere", p);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
-}
-
-static void test_closedir(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_dir_t *dir;
-
-    rv = apr_dir_open(&dir, "data", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_dir_close(dir);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void test_rewind(abts_case *tc, void *data)
-{
-    apr_dir_t *dir;
-    apr_finfo_t first, second;
-
-    APR_ASSERT_SUCCESS(tc, "apr_dir_open failed", apr_dir_open(&dir, "data", p));
-
-    APR_ASSERT_SUCCESS(tc, "apr_dir_read failed",
-                       apr_dir_read(&first, APR_FINFO_DIRENT, dir));
-
-    APR_ASSERT_SUCCESS(tc, "apr_dir_rewind failed", apr_dir_rewind(dir));
-
-    APR_ASSERT_SUCCESS(tc, "second apr_dir_read failed",
-                       apr_dir_read(&second, APR_FINFO_DIRENT, dir));
-
-    APR_ASSERT_SUCCESS(tc, "apr_dir_close failed", apr_dir_close(dir));
-
-    ABTS_STR_EQUAL(tc, first.name, second.name);
-}
-
-/* Test for a (fixed) bug in apr_dir_read().  This bug only happened
-   in threadless cases. */
-static void test_uncleared_errno(abts_case *tc, void *data)
-{
-    apr_file_t *thefile = NULL;
-    apr_finfo_t finfo;
-    apr_int32_t finfo_flags = APR_FINFO_TYPE | APR_FINFO_NAME;
-    apr_dir_t *this_dir;
-    apr_status_t rv; 
-
-    rv = apr_dir_make("dir1", APR_OS_DEFAULT, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_dir_make("dir2", APR_OS_DEFAULT, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_file_open(&thefile, "dir1/file1",
-                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE, APR_OS_DEFAULT, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_file_close(thefile);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    /* Try to remove dir1.  This should fail because it's not empty.
-       However, on a platform with threads disabled (such as FreeBSD),
-       `errno' will be set as a result. */
-    rv = apr_dir_remove("dir1", p);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOTEMPTY(rv));
-    
-    /* Read `.' and `..' out of dir2. */
-    rv = apr_dir_open(&this_dir, "dir2", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_dir_read(&finfo, finfo_flags, this_dir);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_dir_read(&finfo, finfo_flags, this_dir);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    /* Now, when we attempt to do a third read of empty dir2, and the
-       underlying system readdir() returns NULL, the old value of
-       errno shouldn't cause a false alarm.  We should get an ENOENT
-       back from apr_dir_read, and *not* the old errno. */
-    rv = apr_dir_read(&finfo, finfo_flags, this_dir);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
-
-    rv = apr_dir_close(this_dir);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-		 
-    /* Cleanup */
-    rv = apr_file_remove("dir1/file1", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_dir_remove("dir1", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_dir_remove("dir2", p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-}
-
-static void test_rmkdir_nocwd(abts_case *tc, void *data)
-{
-    char *cwd, *path;
-
-    APR_ASSERT_SUCCESS(tc, "make temp dir",
-                       apr_dir_make("dir3", APR_OS_DEFAULT, p));
-
-    APR_ASSERT_SUCCESS(tc, "obtain cwd", apr_filepath_get(&cwd, 0, p));
-
-    APR_ASSERT_SUCCESS(tc, "determine path to temp dir",
-                       apr_filepath_merge(&path, cwd, "dir3", 0, p));
-
-    APR_ASSERT_SUCCESS(tc, "change to temp dir", apr_filepath_set(path, p));
-
-    APR_ASSERT_SUCCESS(tc, "restore cwd", apr_filepath_set(cwd, p));
-
-    APR_ASSERT_SUCCESS(tc, "remove cwd", apr_dir_remove(path, p));
-}
-
-
-abts_suite *testdir(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, test_mkdir, NULL);
-    abts_run_test(suite, test_mkdir_recurs, NULL);
-    abts_run_test(suite, test_remove, NULL);
-    abts_run_test(suite, test_removeall_fail, NULL);
-    abts_run_test(suite, test_removeall, NULL);
-    abts_run_test(suite, test_remove_notthere, NULL);
-    abts_run_test(suite, test_mkdir_twice, NULL);
-    abts_run_test(suite, test_rmkdir_nocwd, NULL);
-
-    abts_run_test(suite, test_rewind, NULL);
-
-    abts_run_test(suite, test_opendir, NULL);
-    abts_run_test(suite, test_opendir_notthere, NULL);
-    abts_run_test(suite, test_closedir, NULL);
-    abts_run_test(suite, test_uncleared_errno, NULL);
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testdir.c (from rev 9273, vendor/apache/apr/dist/test/testdir.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testdir.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testdir.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,399 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "apr_file_io.h"
+#include "apr_file_info.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_lib.h"
+#include "apr_thread_proc.h"
+#include "testutil.h"
+
+static void test_mkdir(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_finfo_t finfo;
+
+    rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
+}
+
+static void test_mkdir_recurs(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_finfo_t finfo;
+
+    rv = apr_dir_make_recursive("data/one/two/three", 
+                                APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_stat(&finfo, "data/one", APR_FINFO_TYPE, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
+
+    rv = apr_stat(&finfo, "data/one/two", APR_FINFO_TYPE, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
+
+    rv = apr_stat(&finfo, "data/one/two/three", APR_FINFO_TYPE, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype);
+}
+
+struct thread_data
+{
+    abts_case *tc;
+    apr_pool_t *pool;
+};
+
+static void *APR_THREAD_FUNC thread_mkdir_func(apr_thread_t *thd, void *data)
+{
+    struct thread_data *td = data;
+    apr_status_t s1, s2, s3, s4, s5;
+
+    s1 = apr_dir_make_recursive("data/prll/one/thwo/three",
+                                APR_FPROT_UREAD | APR_FPROT_UWRITE | APR_FPROT_UEXECUTE,
+                                td->pool);
+    s2 = apr_dir_make_recursive("data/prll/four/five/six/seven/eight",
+                                APR_FPROT_UREAD | APR_FPROT_UWRITE | APR_FPROT_UEXECUTE,
+                                td->pool);
+    s3 = apr_dir_make_recursive("data/prll/nine/ten",
+                                APR_FPROT_UREAD | APR_FPROT_UWRITE | APR_FPROT_UEXECUTE,
+                                td->pool);
+    s4 = apr_dir_make_recursive("data/prll/11/12/13/14/15/16/17/18/19/20",
+                                APR_FPROT_UREAD | APR_FPROT_UWRITE | APR_FPROT_UEXECUTE,
+                                td->pool);
+    s5 = apr_dir_make_recursive("data/fortytwo",
+                                APR_FPROT_UREAD | APR_FPROT_UWRITE | APR_FPROT_UEXECUTE,
+                                td->pool);
+
+    ABTS_INT_EQUAL(td->tc, APR_SUCCESS, s1);
+    ABTS_INT_EQUAL(td->tc, APR_SUCCESS, s2);
+    ABTS_INT_EQUAL(td->tc, APR_SUCCESS, s3);
+    ABTS_INT_EQUAL(td->tc, APR_SUCCESS, s4);
+    ABTS_INT_EQUAL(td->tc, APR_SUCCESS, s5);
+    return NULL;
+}
+
+static void test_mkdir_recurs_parallel(abts_case *tc, void *data)
+{
+    struct thread_data td1, td2, td3, td4;
+    apr_thread_t *t1, *t2, *t3, *t4;
+    apr_status_t s1, s2, s3, s4;
+
+    td1.tc = td2.tc = td3.tc = td4.tc = tc;
+    apr_pool_create(&td1.pool, p);
+    apr_pool_create(&td2.pool, p);
+    apr_pool_create(&td3.pool, p);
+    apr_pool_create(&td4.pool, p);
+
+    s1 = apr_thread_create(&t1, NULL, thread_mkdir_func, &td1, td1.pool);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s1);
+    s2 = apr_thread_create(&t2, NULL, thread_mkdir_func, &td2, td2.pool);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s2);
+    s3 = apr_thread_create(&t3, NULL, thread_mkdir_func, &td3, td3.pool);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s3);
+    s4 = apr_thread_create(&t4, NULL, thread_mkdir_func, &td4, td4.pool);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s4);
+
+    apr_thread_join(&s1, t1);
+    apr_thread_join(&s2, t2);
+    apr_thread_join(&s3, t3);
+    apr_thread_join(&s4, t4);
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s1);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s2);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s3);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, s4);
+}
+
+static void test_remove(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_finfo_t finfo;
+
+    rv = apr_dir_remove("data/testdir", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
+}
+
+static void test_removeall_fail(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_dir_remove("data/one", p);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOTEMPTY(rv));
+}
+
+static void test_removeall(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_dir_remove("data/one/two/three", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/one/two", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/one", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/one/thwo/three", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/one/thwo", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/one", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/four/five/six/seven/eight", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/four/five/six/seven", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/four/five/six", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/four/five", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/four", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/nine/ten", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/nine", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13/14/15/16/17/18/19/20", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13/14/15/16/17/18/19", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13/14/15/16/17/18", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13/14/15/16/17", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13/14/15/16", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13/14/15", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13/14", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12/13", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11/12", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll/11", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/prll", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_remove("data/fortytwo", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void test_remove_notthere(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_dir_remove("data/notthere", p);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
+}
+
+static void test_mkdir_twice(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EEXIST(rv));
+
+    rv = apr_dir_remove("data/testdir", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void test_opendir(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_dir_t *dir;
+
+    rv = apr_dir_open(&dir, "data", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    apr_dir_close(dir);
+}
+
+static void test_opendir_notthere(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_dir_t *dir;
+
+    rv = apr_dir_open(&dir, "notthere", p);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
+}
+
+static void test_closedir(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_dir_t *dir;
+
+    rv = apr_dir_open(&dir, "data", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_dir_close(dir);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void test_rewind(abts_case *tc, void *data)
+{
+    apr_dir_t *dir;
+    apr_finfo_t first, second;
+
+    APR_ASSERT_SUCCESS(tc, "apr_dir_open failed", apr_dir_open(&dir, "data", p));
+
+    APR_ASSERT_SUCCESS(tc, "apr_dir_read failed",
+                       apr_dir_read(&first, APR_FINFO_DIRENT, dir));
+
+    APR_ASSERT_SUCCESS(tc, "apr_dir_rewind failed", apr_dir_rewind(dir));
+
+    APR_ASSERT_SUCCESS(tc, "second apr_dir_read failed",
+                       apr_dir_read(&second, APR_FINFO_DIRENT, dir));
+
+    APR_ASSERT_SUCCESS(tc, "apr_dir_close failed", apr_dir_close(dir));
+
+    ABTS_STR_EQUAL(tc, first.name, second.name);
+}
+
+/* Test for a (fixed) bug in apr_dir_read().  This bug only happened
+   in threadless cases. */
+static void test_uncleared_errno(abts_case *tc, void *data)
+{
+    apr_file_t *thefile = NULL;
+    apr_finfo_t finfo;
+    apr_int32_t finfo_flags = APR_FINFO_TYPE | APR_FINFO_NAME;
+    apr_dir_t *this_dir;
+    apr_status_t rv; 
+
+    rv = apr_dir_make("dir1", APR_OS_DEFAULT, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_dir_make("dir2", APR_OS_DEFAULT, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_open(&thefile, "dir1/file1",
+                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE, APR_OS_DEFAULT, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_close(thefile);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    /* Try to remove dir1.  This should fail because it's not empty.
+       However, on a platform with threads disabled (such as FreeBSD),
+       `errno' will be set as a result. */
+    rv = apr_dir_remove("dir1", p);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOTEMPTY(rv));
+    
+    /* Read `.' and `..' out of dir2. */
+    rv = apr_dir_open(&this_dir, "dir2", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_dir_read(&finfo, finfo_flags, this_dir);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_dir_read(&finfo, finfo_flags, this_dir);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    /* Now, when we attempt to do a third read of empty dir2, and the
+       underlying system readdir() returns NULL, the old value of
+       errno shouldn't cause a false alarm.  We should get an ENOENT
+       back from apr_dir_read, and *not* the old errno. */
+    rv = apr_dir_read(&finfo, finfo_flags, this_dir);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv));
+
+    rv = apr_dir_close(this_dir);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+		 
+    /* Cleanup */
+    rv = apr_file_remove("dir1/file1", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_dir_remove("dir1", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_dir_remove("dir2", p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+}
+
+static void test_rmkdir_nocwd(abts_case *tc, void *data)
+{
+    char *cwd, *path;
+
+    APR_ASSERT_SUCCESS(tc, "make temp dir",
+                       apr_dir_make("dir3", APR_OS_DEFAULT, p));
+
+    APR_ASSERT_SUCCESS(tc, "obtain cwd", apr_filepath_get(&cwd, 0, p));
+
+    APR_ASSERT_SUCCESS(tc, "determine path to temp dir",
+                       apr_filepath_merge(&path, cwd, "dir3", 0, p));
+
+    APR_ASSERT_SUCCESS(tc, "change to temp dir", apr_filepath_set(path, p));
+
+    APR_ASSERT_SUCCESS(tc, "restore cwd", apr_filepath_set(cwd, p));
+
+    APR_ASSERT_SUCCESS(tc, "remove cwd", apr_dir_remove(path, p));
+}
+
+
+abts_suite *testdir(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, test_mkdir, NULL);
+    abts_run_test(suite, test_mkdir_recurs, NULL);
+    abts_run_test(suite, test_mkdir_recurs_parallel, NULL);
+    abts_run_test(suite, test_remove, NULL);
+    abts_run_test(suite, test_removeall_fail, NULL);
+    abts_run_test(suite, test_removeall, NULL);
+    abts_run_test(suite, test_remove_notthere, NULL);
+    abts_run_test(suite, test_mkdir_twice, NULL);
+    abts_run_test(suite, test_rmkdir_nocwd, NULL);
+
+    abts_run_test(suite, test_rewind, NULL);
+
+    abts_run_test(suite, test_opendir, NULL);
+    abts_run_test(suite, test_opendir_notthere, NULL);
+    abts_run_test(suite, test_closedir, NULL);
+    abts_run_test(suite, test_uncleared_errno, NULL);
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testdll.dsp
===================================================================
--- vendor/apache/apr/dist/test/testdll.dsp	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testdll.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,442 +0,0 @@
-# Microsoft Developer Studio Project File - Name="testdll" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) External Target" 0x0106
-
-CFG=testdll - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "testdll.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "testdll.mak" CFG="testdll - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "testdll - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "testdll - Win32 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE "testdll - Win32 Release9x" (based on "Win32 (x86) External Target")
-!MESSAGE "testdll - Win32 Debug9x" (based on "Win32 (x86) External Target")
-!MESSAGE "testdll - x64 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "testdll - x64 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF  "$(CFG)" == "testdll - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=Release OUTDIR=Release MODEL=dynamic all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "Release\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=Release OUTDIR=Release MODEL=dynamic all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "Release\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testdll - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=Debug OUTDIR=Debug MODEL=dynamic _DEBUG=1 all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "Debug\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=Debug OUTDIR=Debug MODEL=dynamic _DEBUG=1 all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "Debug\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testdll - Win32 Release9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Release OUTDIR=9x\Release MODEL=dynamic all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "9x\Release\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Release OUTDIR=9x\Release MODEL=dynamic all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "9x\Release\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testdll - Win32 Debug9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Debug OUTDIR=9x\Debug MODEL=dynamic _DEBUG=1 all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "9x\Debug\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Debug OUTDIR=9x\Debug MODEL=dynamic _DEBUG=1 all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "9x\Debug\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testdll - x64 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Release OUTDIR=x64\Release MODEL=dynamic all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "x64\Release\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Release OUTDIR=x64\Release MODEL=dynamic all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "x64\Release\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testdll - x64 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Debug OUTDIR=x64\Debug MODEL=dynamic _DEBUG=1 all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "x64\Debug\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Debug OUTDIR=x64\Debug MODEL=dynamic _DEBUG=1 all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "x64\Debug\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ENDIF 
-
-# Begin Target
-
-# Name "testdll - Win32 Release"
-# Name "testdll - Win32 Debug"
-# Name "testdll - Win32 Release9x"
-# Name "testdll - Win32 Debug9x"
-# Name "testdll - x64 Release"
-# Name "testdll - x64 Debug"
-# Begin Group "testall Source Files"
-
-# PROP Default_Filter ".c"
-# Begin Source File
-
-SOURCE=.\abts.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\abts.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\abts_tests.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testapp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testargs.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testatomic.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testcond.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testdso.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testdup.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testenv.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfile.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfilecopy.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfileinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testflock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testflock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfmt.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfnmatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testglobalmutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testglobalmutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testhash.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testipsub.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testlfs.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testmmap.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testnames.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testoc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpipe.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpoll.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpools.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testproc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testrand.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshm.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshm.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsockets.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsockopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\teststr.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\teststrnatcmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testtable.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testtemp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testthread.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testtime.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testud.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testuser.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testutil.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testvsn.c
-# End Source File
-# End Group
-# Begin Group "Other Source Files"
-
-# PROP Default_Filter ".c"
-# Begin Source File
-
-SOURCE=.\globalmutexchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\mod_test.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\nw_misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\occhild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\proc_child.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\readchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\sendfile.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\sockchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testlockperf.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testmutexscope.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testprocmutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshmconsumer.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshmproducer.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\tryread.c
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\Makefile.win
-# End Source File
-# End Target
-# End Project

Copied: vendor/apache/apr/1.5.2/test/testdll.dsp (from rev 9273, vendor/apache/apr/dist/test/testdll.dsp)
===================================================================
--- vendor/apache/apr/1.5.2/test/testdll.dsp	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testdll.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,446 @@
+# Microsoft Developer Studio Project File - Name="testdll" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) External Target" 0x0106
+
+CFG=testdll - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "testdll.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "testdll.mak" CFG="testdll - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "testdll - Win32 Release" (based on "Win32 (x86) External Target")
+!MESSAGE "testdll - Win32 Debug" (based on "Win32 (x86) External Target")
+!MESSAGE "testdll - Win32 Release9x" (based on "Win32 (x86) External Target")
+!MESSAGE "testdll - Win32 Debug9x" (based on "Win32 (x86) External Target")
+!MESSAGE "testdll - x64 Release" (based on "Win32 (x86) External Target")
+!MESSAGE "testdll - x64 Debug" (based on "Win32 (x86) External Target")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF  "$(CFG)" == "testdll - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=Release OUTDIR=Release MODEL=dynamic all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "Release\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=Release OUTDIR=Release MODEL=dynamic all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "Release\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testdll - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=Debug OUTDIR=Debug MODEL=dynamic _DEBUG=1 all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "Debug\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=Debug OUTDIR=Debug MODEL=dynamic _DEBUG=1 all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "Debug\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testdll - Win32 Release9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Release OUTDIR=9x\Release MODEL=dynamic all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "9x\Release\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Release OUTDIR=9x\Release MODEL=dynamic all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "9x\Release\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testdll - Win32 Debug9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Debug OUTDIR=9x\Debug MODEL=dynamic _DEBUG=1 all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "9x\Debug\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\Debug OUTDIR=9x\Debug MODEL=dynamic _DEBUG=1 all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "9x\Debug\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testdll - x64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Release OUTDIR=x64\Release MODEL=dynamic all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "x64\Release\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Release OUTDIR=x64\Release MODEL=dynamic all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "x64\Release\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testdll - x64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Debug OUTDIR=x64\Debug MODEL=dynamic _DEBUG=1 all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "x64\Debug\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\Debug OUTDIR=x64\Debug MODEL=dynamic _DEBUG=1 all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "x64\Debug\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ENDIF 
+
+# Begin Target
+
+# Name "testdll - Win32 Release"
+# Name "testdll - Win32 Debug"
+# Name "testdll - Win32 Release9x"
+# Name "testdll - Win32 Debug9x"
+# Name "testdll - x64 Release"
+# Name "testdll - x64 Debug"
+# Begin Group "testall Source Files"
+
+# PROP Default_Filter ".c"
+# Begin Source File
+
+SOURCE=.\abts.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\abts.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\abts_tests.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testapp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testargs.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testatomic.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testcond.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testdir.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testdso.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testdup.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testenv.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfilecopy.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfileinfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testflock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testflock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfmt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfnmatch.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testglobalmutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testglobalmutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testhash.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testipsub.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testlfs.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testlock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testmmap.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testnames.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testoc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpath.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpipe.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpoll.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpools.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testproc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testrand.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshm.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testskiplist.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsleep.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsockets.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsockopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\teststr.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\teststrnatcmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testtable.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testtemp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testthread.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testtime.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testud.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testuser.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testutil.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testutil.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testvsn.c
+# End Source File
+# End Group
+# Begin Group "Other Source Files"
+
+# PROP Default_Filter ".c"
+# Begin Source File
+
+SOURCE=.\globalmutexchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\mod_test.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\nw_misc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\occhild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\proc_child.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\readchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\sendfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\sockchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testlockperf.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testmutexscope.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testprocmutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshmconsumer.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshmproducer.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\tryread.c
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\Makefile.win
+# End Source File
+# End Target
+# End Project

Copied: vendor/apache/apr/1.5.2/test/testescape.c (from rev 9273, vendor/apache/apr/dist/test/testescape.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testescape.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testescape.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,275 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "apr_escape.h"
+#include "apr_strings.h"
+
+#include "abts.h"
+#include "testutil.h"
+
+static void test_escape(abts_case *tc, void *data)
+{
+    apr_pool_t *pool;
+    const char *src, *target;
+    const char *dest;
+    const void *vdest;
+    apr_size_t len, vlen;
+
+    apr_pool_create(&pool, NULL);
+
+    src = "Hello World &;`'\"|*?~<>^()[]{}$\\";
+    target = "Hello World \\&\\;\\`\\'\\\"\\|\\*\\?\\~\\<\\>\\^\\(\\)\\[\\]\\{\\}\\$\\\\";
+    dest = apr_pescape_shell(pool, src);
+    ABTS_ASSERT(tc,
+                apr_psprintf(pool, "shell escaped (%s) does not match expected output (%s)",
+                             dest, target),
+                (strcmp(dest, target) == 0));
+    apr_escape_shell(NULL, src, APR_ESCAPE_STRING, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+#if !(defined(OS2) || defined(WIN32))
+    /* Now try with newline, which is converted to a space on OS/2 and Windows.
+     */
+    src = "Hello World &;`'\"|*?~<>^()[]{}$\\\n";
+    target = "Hello World \\&\\;\\`\\'\\\"\\|\\*\\?\\~\\<\\>\\^\\(\\)\\[\\]\\{\\}\\$\\\\\\\n";
+    dest = apr_pescape_shell(pool, src);
+    ABTS_ASSERT(tc,
+                apr_psprintf(pool, "shell escaped (%s) does not match expected output (%s)",
+                             dest, target),
+                (strcmp(dest, target) == 0));
+    apr_escape_shell(NULL, src, APR_ESCAPE_STRING, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+#endif
+
+    src = "Hello";
+    dest = apr_punescape_url(pool, src, NULL, NULL, 0);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "Hello";
+    dest = apr_punescape_url(pool, src, NULL, NULL, 1);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "Hello%20";
+    dest = apr_punescape_url(pool, src, " ", NULL, 0);
+    ABTS_PTR_EQUAL(tc, NULL, dest);
+
+    src = "Hello%20World";
+    target = "Hello World";
+    dest = apr_punescape_url(pool, src, NULL, NULL, 0);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_unescape_url(NULL, src, APR_ESCAPE_STRING, NULL, NULL, 0, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello+World";
+    target = "Hello World";
+    dest = apr_punescape_url(pool, src, NULL, NULL, 1);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_unescape_url(NULL, src, APR_ESCAPE_STRING, NULL, NULL, 1, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello%20World";
+    target = "Hello%20World";
+    dest = apr_punescape_url(pool, src, NULL, " ", 0);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_unescape_url(NULL, src, APR_ESCAPE_STRING, NULL, " ", 0, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello";
+    dest = apr_pescape_path_segment(pool, src);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "$-_.+!*'(),:@&=/~Hello World";
+    target = "$-_.+!*'(),:@&=%2f~Hello%20World";
+    dest = apr_pescape_path_segment(pool, src);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_path_segment(NULL, src, APR_ESCAPE_STRING, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello";
+    dest = apr_pescape_path(pool, src, 0);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "$-_.+!*'(),:@&=/~Hello World";
+    target = "./$-_.+!*'(),:@&=/~Hello%20World";
+    dest = apr_pescape_path(pool, src, 0);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_path(NULL, src, APR_ESCAPE_STRING, 0, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello";
+    dest = apr_pescape_path(pool, src, 1);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "$-_.+!*'(),:@&=/~Hello World";
+    target = "$-_.+!*'(),:@&=/~Hello%20World";
+    dest = apr_pescape_path(pool, src, 1);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_path(NULL, src, APR_ESCAPE_STRING, 1, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello";
+    dest = apr_pescape_urlencoded(pool, src);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "$-_.+!*'(),:@&=/~Hello World";
+    target = "%24-_.%2b%21*%27%28%29%2c%3a%40%26%3d%2f%7eHello+World";
+    dest = apr_pescape_urlencoded(pool, src);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_urlencoded(NULL, src, APR_ESCAPE_STRING, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello";
+    dest = apr_pescape_entity(pool, src, 0);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "\xFF<>&\'\"Hello World";
+    target = "\xFF<>&'"Hello World";
+    dest = apr_pescape_entity(pool, src, 0);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_entity(NULL, src, APR_ESCAPE_STRING, 0, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+#if !APR_CHARSET_EBCDIC
+    src = "Hello";
+    dest = apr_pescape_entity(pool, src, 1);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "\xFF<>&\'\"Hello World";
+    target = "&#255<>&'"Hello World";
+    dest = apr_pescape_entity(pool, src, 1);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_entity(NULL, src, APR_ESCAPE_STRING, 1, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "Hello";
+    dest = apr_punescape_entity(pool, src);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "\xFF<>&'"Hello World";
+    target = "\xFF<>&\'\"Hello World";
+    dest = apr_punescape_entity(pool, src);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_unescape_entity(NULL, src, APR_ESCAPE_STRING, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "ÿ<>&'"Hello World";
+    target = "\xFF<>&\'\"Hello World";
+    dest = apr_punescape_entity(pool, src);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_unescape_entity(NULL, src, APR_ESCAPE_STRING, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = " <>&'"Hello World";
+    target = " <>&\'\"Hello World";
+    dest = apr_punescape_entity(pool, src);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_unescape_entity(NULL, src, APR_ESCAPE_STRING, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+#endif
+
+    src = "Hello";
+    dest = apr_pescape_echo(pool, src, 0);
+    ABTS_PTR_EQUAL(tc, src, dest);
+
+    src = "\a\b\f\\n\r\t\v\"Hello World\"";
+    target = "\\a\\b\\f\\\\n\\r\\t\\v\"Hello World\"";
+    dest = apr_pescape_echo(pool, src, 0);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_echo(NULL, src, APR_ESCAPE_STRING, 0, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "\a\b\f\\n\r\t\v\"Hello World\"";
+    target = "\\a\\b\\f\\\\n\\r\\t\\v\\\"Hello World\\\"";
+    dest = apr_pescape_echo(pool, src, 1);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_echo(NULL, src, APR_ESCAPE_STRING, 1, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "\xFF\x00\xFF\x00";
+    target = "ff00ff00";
+    dest = apr_pescape_hex(pool, src, 4, 0);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_hex(NULL, src, 4, 0, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "\xFF\x00\xFF\x00";
+    target = "ff:00:ff:00";
+    dest = apr_pescape_hex(pool, src, 4, 1);
+    ABTS_STR_EQUAL(tc, target, dest);
+    apr_escape_hex(NULL, src, 4, 1, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, strlen(dest) + 1),
+            (len == strlen(dest) + 1));
+
+    src = "ff:00:ff:00";
+    target = "\xFF\x00\xFF\x00";
+    vdest = apr_punescape_hex(pool, src, 1, &vlen);
+    ABTS_ASSERT(tc, "apr_punescape_hex target!=dest", memcmp(target, vdest, 4) == 0);
+    ABTS_INT_EQUAL(tc, (int)vlen, 4);
+    apr_unescape_hex(NULL, src, APR_ESCAPE_STRING, 1, &len);
+    ABTS_ASSERT(tc,
+            apr_psprintf(pool, "size mismatch (%" APR_SIZE_T_FMT "!=%" APR_SIZE_T_FMT ")", len, (apr_size_t)4),
+            (len == 4));
+
+    apr_pool_destroy(pool);
+}
+
+abts_suite *testescape(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite);
+
+    abts_run_test(suite, test_escape, NULL);
+
+    return suite;
+}

Deleted: vendor/apache/apr/1.5.2/test/testfmt.c
===================================================================
--- vendor/apache/apr/dist/test/testfmt.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testfmt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,154 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-#include "apr.h"
-#include "apr_portable.h"
-#include "apr_strings.h"
-
-static void ssize_t_fmt(abts_case *tc, void *data)
-{
-    char buf[100];
-    apr_ssize_t var = 0;
-
-    sprintf(buf, "%" APR_SSIZE_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-    apr_snprintf(buf, sizeof(buf), "%" APR_SSIZE_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-}
-
-static void size_t_fmt(abts_case *tc, void *data)
-{
-    char buf[100];
-    apr_size_t var = 0;
-
-    sprintf(buf, "%" APR_SIZE_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-    apr_snprintf(buf, sizeof(buf), "%" APR_SIZE_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-}
-
-static void off_t_fmt(abts_case *tc, void *data)
-{
-    char buf[100];
-    apr_off_t var = 0;
-
-    sprintf(buf, "%" APR_OFF_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-    apr_snprintf(buf, sizeof(buf), "%" APR_OFF_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-}
-
-static void pid_t_fmt(abts_case *tc, void *data)
-{
-    char buf[100];
-    pid_t var = 0;
-
-    sprintf(buf, "%" APR_PID_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-    apr_snprintf(buf, sizeof(buf), "%" APR_PID_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-}
-
-static void int64_t_fmt(abts_case *tc, void *data)
-{
-    char buf[100];
-    apr_int64_t var = 0;
-
-    sprintf(buf, "%" APR_INT64_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-    apr_snprintf(buf, sizeof(buf), "%" APR_INT64_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "0", buf);
-}
-
-static void uint64_t_fmt(abts_case *tc, void *data)
-{
-    char buf[100];
-    apr_uint64_t var = APR_UINT64_C(14000000);
-
-    sprintf(buf, "%" APR_UINT64_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "14000000", buf);
-    apr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_FMT, var);
-    ABTS_STR_EQUAL(tc, "14000000", buf);
-}
-
-static void uint64_t_hex_fmt(abts_case *tc, void *data)
-{
-    char buf[100];
-    apr_uint64_t var = APR_UINT64_C(14000000);
-
-    sprintf(buf, "%" APR_UINT64_T_HEX_FMT, var);
-    ABTS_STR_EQUAL(tc, "d59f80", buf);
-    apr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_HEX_FMT, var);
-    ABTS_STR_EQUAL(tc, "d59f80", buf);
-}
-
-static void more_int64_fmts(abts_case *tc, void *data)
-{
-    char buf[100];
-    apr_int64_t i = APR_INT64_C(-42);
-    apr_int64_t ibig = APR_INT64_C(-314159265358979323);
-    apr_uint64_t ui = APR_UINT64_C(42);
-    apr_uint64_t big = APR_UINT64_C(10267677267010969076);
-
-    apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, i);
-    ABTS_STR_EQUAL(tc, "-42", buf);
-
-    apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, ui);
-    ABTS_STR_EQUAL(tc, "42", buf);
-
-    apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, big);
-    ABTS_STR_EQUAL(tc, "10267677267010969076", buf);
-
-    apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, ibig);
-    ABTS_STR_EQUAL(tc, "-314159265358979323", buf);
-}
-
-static void error_fmt(abts_case *tc, void *data)
-{
-    char ebuf[150], sbuf[150], *s;
-    apr_status_t rv;
-
-    rv = APR_SUCCESS;
-    apr_strerror(rv, ebuf, sizeof ebuf);
-    apr_snprintf(sbuf, sizeof sbuf, "%pm", &rv);
-    ABTS_STR_EQUAL(tc, sbuf, ebuf);
-
-    rv = APR_ENOTIMPL;
-    s = apr_pstrcat(p, "foo-",
-                    apr_strerror(rv, ebuf, sizeof ebuf),
-                    "-bar", NULL);
-    apr_snprintf(sbuf, sizeof sbuf, "foo-%pm-bar", &rv);
-    ABTS_STR_EQUAL(tc, sbuf, s);
-}
-
-abts_suite *testfmt(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, ssize_t_fmt, NULL);
-    abts_run_test(suite, size_t_fmt, NULL);
-    abts_run_test(suite, off_t_fmt, NULL);
-    abts_run_test(suite, pid_t_fmt, NULL);
-    abts_run_test(suite, int64_t_fmt, NULL);
-    abts_run_test(suite, uint64_t_fmt, NULL);
-    abts_run_test(suite, uint64_t_hex_fmt, NULL);
-    abts_run_test(suite, more_int64_fmts, NULL);
-    abts_run_test(suite, error_fmt, NULL);
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testfmt.c (from rev 9273, vendor/apache/apr/dist/test/testfmt.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testfmt.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testfmt.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,166 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "apr.h"
+#include "apr_portable.h"
+#include "apr_strings.h"
+
+static void ssize_t_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_ssize_t var = 0;
+
+    sprintf(buf, "%" APR_SSIZE_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_SSIZE_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+}
+
+static void size_t_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_size_t var = 0;
+
+    sprintf(buf, "%" APR_SIZE_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_SIZE_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+}
+
+static void time_t_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_time_t var = 1;
+
+    sprintf(buf, "%" APR_TIME_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "1", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_TIME_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "1", buf);
+}
+
+static void off_t_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_off_t var = 0;
+
+    sprintf(buf, "%" APR_OFF_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_OFF_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+}
+
+static void pid_t_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    pid_t var = 0;
+
+    sprintf(buf, "%" APR_PID_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_PID_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+}
+
+static void int64_t_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_int64_t var = 0;
+
+    sprintf(buf, "%" APR_INT64_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_INT64_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "0", buf);
+}
+
+static void uint64_t_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_uint64_t var = APR_UINT64_C(14000000);
+
+    sprintf(buf, "%" APR_UINT64_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "14000000", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_FMT, var);
+    ABTS_STR_EQUAL(tc, "14000000", buf);
+}
+
+static void uint64_t_hex_fmt(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_uint64_t var = APR_UINT64_C(14000000);
+
+    sprintf(buf, "%" APR_UINT64_T_HEX_FMT, var);
+    ABTS_STR_EQUAL(tc, "d59f80", buf);
+    apr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_HEX_FMT, var);
+    ABTS_STR_EQUAL(tc, "d59f80", buf);
+}
+
+static void more_int64_fmts(abts_case *tc, void *data)
+{
+    char buf[100];
+    apr_int64_t i = APR_INT64_C(-42);
+    apr_int64_t ibig = APR_INT64_C(-314159265358979323);
+    apr_uint64_t ui = APR_UINT64_C(42);
+    apr_uint64_t big = APR_UINT64_C(10267677267010969076);
+
+    apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, i);
+    ABTS_STR_EQUAL(tc, "-42", buf);
+
+    apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, ui);
+    ABTS_STR_EQUAL(tc, "42", buf);
+
+    apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, big);
+    ABTS_STR_EQUAL(tc, "10267677267010969076", buf);
+
+    apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, ibig);
+    ABTS_STR_EQUAL(tc, "-314159265358979323", buf);
+}
+
+static void error_fmt(abts_case *tc, void *data)
+{
+    char ebuf[150], sbuf[150], *s;
+    apr_status_t rv;
+
+    rv = APR_SUCCESS;
+    apr_strerror(rv, ebuf, sizeof ebuf);
+    apr_snprintf(sbuf, sizeof sbuf, "%pm", &rv);
+    ABTS_STR_EQUAL(tc, sbuf, ebuf);
+
+    rv = APR_ENOTIMPL;
+    s = apr_pstrcat(p, "foo-",
+                    apr_strerror(rv, ebuf, sizeof ebuf),
+                    "-bar", NULL);
+    apr_snprintf(sbuf, sizeof sbuf, "foo-%pm-bar", &rv);
+    ABTS_STR_EQUAL(tc, sbuf, s);
+}
+
+abts_suite *testfmt(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, ssize_t_fmt, NULL);
+    abts_run_test(suite, size_t_fmt, NULL);
+    abts_run_test(suite, time_t_fmt, NULL);
+    abts_run_test(suite, off_t_fmt, NULL);
+    abts_run_test(suite, pid_t_fmt, NULL);
+    abts_run_test(suite, int64_t_fmt, NULL);
+    abts_run_test(suite, uint64_t_fmt, NULL);
+    abts_run_test(suite, uint64_t_hex_fmt, NULL);
+    abts_run_test(suite, more_int64_fmts, NULL);
+    abts_run_test(suite, error_fmt, NULL);
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testhash.c
===================================================================
--- vendor/apache/apr/dist/test/testhash.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testhash.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,540 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-#include "apr.h"
-#include "apr_strings.h"
-#include "apr_general.h"
-#include "apr_pools.h"
-#include "apr_hash.h"
-
-#define MAX_LTH 256
-#define MAX_DEPTH 11
-
-static int comp_string(const void *str1, const void *str2)
-{
-    return strcmp(str1,str2);
-}
-
-static void dump_hash(apr_pool_t *p, apr_hash_t *h, char str[][MAX_LTH]) 
-{
-    apr_hash_index_t *hi;
-    char *val, *key;
-    apr_ssize_t len;
-    int i = 0;
-
-    for (hi = apr_hash_first(p, h); hi; hi = apr_hash_next(hi)) {
-        apr_hash_this(hi,(void*) &key, &len, (void*) &val);
-        str[i][0]='\0';
-        apr_snprintf(str[i], MAX_LTH, "%sKey %s (%" APR_SSIZE_T_FMT ") Value %s\n",
-                 str[i], key, len, val);
-        i++;
-    }
-    str[i][0]='\0';
-    apr_snprintf(str[i], MAX_LTH, "%s#entries %d\n", str[i], i);
-
-    /* Sort the result strings so that they can be checked for expected results easily,
-     * without having to worry about platform quirks
-     */
-    qsort(
-        str, /* Pointer to elements */
-        i,   /* number of elements */
-        MAX_LTH, /* size of one element */
-        comp_string /* Pointer to comparison routine */
-    );
-}
-
-static void sum_hash(apr_pool_t *p, apr_hash_t *h, int *pcount, int *keySum, int *valSum) 
-{
-    apr_hash_index_t *hi;
-    void *val, *key;
-    int count = 0;
-
-    *keySum = 0;
-    *valSum = 0;
-    *pcount = 0;
-    for (hi = apr_hash_first(p, h); hi; hi = apr_hash_next(hi)) {
-        apr_hash_this(hi, (void*)&key, NULL, &val);
-        *valSum += *(int *)val;
-        *keySum += *(int *)key;
-        count++;
-    }
-    *pcount=count;
-}
-
-static void hash_make(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-}
-
-static void hash_set(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    char *result = NULL;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
-    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "value", result);
-}
-
-static void hash_reset(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    char *result = NULL;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
-    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "value", result);
-
-    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "new");
-    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "new", result);
-}
-
-static void same_value(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    char *result = NULL;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "same1", APR_HASH_KEY_STRING, "same");
-    result = apr_hash_get(h, "same1", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "same", result);
-
-    apr_hash_set(h, "same2", APR_HASH_KEY_STRING, "same");
-    result = apr_hash_get(h, "same2", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "same", result);
-}
-
-static unsigned int hash_custom( const char *key, apr_ssize_t *klen)
-{
-    unsigned int hash = 0;
-    while( *klen ) {
-        (*klen) --;
-        hash = hash * 33 + key[ *klen ];
-    }
-    return hash;
-}
-
-static void same_value_custom(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    char *result = NULL;
-
-    h = apr_hash_make_custom(p, hash_custom);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "same1", 5, "same");
-    result = apr_hash_get(h, "same1", 5);
-    ABTS_STR_EQUAL(tc, "same", result);
-
-    apr_hash_set(h, "same2", 5, "same");
-    result = apr_hash_get(h, "same2", 5);
-    ABTS_STR_EQUAL(tc, "same", result);
-}
-
-static void key_space(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    char *result = NULL;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "key with space", APR_HASH_KEY_STRING, "value");
-    result = apr_hash_get(h, "key with space", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "value", result);
-}
-
-static void hash_clear(abts_case *tc, void *data)
-{
-    apr_hash_t *h;
-    int i, *e;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    for (i = 1; i <= 10; i++) {
-        e = apr_palloc(p, sizeof(int));
-        *e = i;
-        apr_hash_set(h, e, sizeof(*e), e);
-    }
-    apr_hash_clear(h);
-    i = apr_hash_count(h);
-    ABTS_INT_EQUAL(tc, 0, i);
-}
-
-/* This is kind of a hack, but I am just keeping an existing test.  This is
- * really testing apr_hash_first, apr_hash_next, and apr_hash_this which 
- * should be tested in three separate tests, but this will do for now.
- */
-static void hash_traverse(abts_case *tc, void *data)
-{
-    apr_hash_t *h;
-    char StrArray[MAX_DEPTH][MAX_LTH];
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "should not see this");
-    apr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3");
-    apr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3");
-    apr_hash_set(h, "FOO1", APR_HASH_KEY_STRING, "bar1");
-    apr_hash_set(h, "FOO2", APR_HASH_KEY_STRING, "bar2");
-    apr_hash_set(h, "FOO4", APR_HASH_KEY_STRING, "bar4");
-    apr_hash_set(h, "SAME1", APR_HASH_KEY_STRING, "same");
-    apr_hash_set(h, "SAME2", APR_HASH_KEY_STRING, "same");
-    apr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "Overwrite key");
-
-    dump_hash(p, h, StrArray);
-
-    ABTS_STR_EQUAL(tc, "Key FOO1 (4) Value bar1\n", StrArray[0]);
-    ABTS_STR_EQUAL(tc, "Key FOO2 (4) Value bar2\n", StrArray[1]);
-    ABTS_STR_EQUAL(tc, "Key FOO3 (4) Value bar3\n", StrArray[2]);
-    ABTS_STR_EQUAL(tc, "Key FOO4 (4) Value bar4\n", StrArray[3]);
-    ABTS_STR_EQUAL(tc, "Key OVERWRITE (9) Value Overwrite key\n", StrArray[4]);
-    ABTS_STR_EQUAL(tc, "Key SAME1 (5) Value same\n", StrArray[5]);
-    ABTS_STR_EQUAL(tc, "Key SAME2 (5) Value same\n", StrArray[6]);
-    ABTS_STR_EQUAL(tc, "#entries 7\n", StrArray[7]);
-}
-
-/* This is kind of a hack, but I am just keeping an existing test.  This is
- * really testing apr_hash_first, apr_hash_next, and apr_hash_this which 
- * should be tested in three separate tests, but this will do for now.
- */
-static void summation_test(abts_case *tc, void *data)
-{
-    apr_hash_t *h;
-    int sumKeys, sumVal, trySumKey, trySumVal;
-    int i, j, *val, *key;
-
-    h =apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    sumKeys = 0;
-    sumVal = 0;
-    trySumKey = 0;
-    trySumVal = 0;
-
-    for (i = 0; i < 100; i++) {
-        j = i * 10 + 1;
-        sumKeys += j;
-        sumVal += i;
-        key = apr_palloc(p, sizeof(int));
-        *key = j;
-        val = apr_palloc(p, sizeof(int));
-        *val = i;
-        apr_hash_set(h, key, sizeof(int), val);
-    }
-
-    sum_hash(p, h, &i, &trySumKey, &trySumVal);
-    ABTS_INT_EQUAL(tc, 100, i);
-    ABTS_INT_EQUAL(tc, sumVal, trySumVal);
-    ABTS_INT_EQUAL(tc, sumKeys, trySumKey);
-}
-
-static void delete_key(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    char *result = NULL;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
-    apr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2");
-
-    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "value", result);
-
-    result = apr_hash_get(h, "key2", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "value2", result);
-
-    apr_hash_set(h, "key", APR_HASH_KEY_STRING, NULL);
-
-    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
-    ABTS_PTR_EQUAL(tc, NULL, result);
-
-    result = apr_hash_get(h, "key2", APR_HASH_KEY_STRING);
-    ABTS_STR_EQUAL(tc, "value2", result);
-}
-
-static void hash_count_0(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    int count;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    count = apr_hash_count(h);
-    ABTS_INT_EQUAL(tc, 0, count);
-}
-
-static void hash_count_1(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    int count;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
-
-    count = apr_hash_count(h);
-    ABTS_INT_EQUAL(tc, 1, count);
-}
-
-static void hash_count_5(abts_case *tc, void *data)
-{
-    apr_hash_t *h = NULL;
-    int count;
-
-    h = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, h);
-
-    apr_hash_set(h, "key1", APR_HASH_KEY_STRING, "value1");
-    apr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2");
-    apr_hash_set(h, "key3", APR_HASH_KEY_STRING, "value3");
-    apr_hash_set(h, "key4", APR_HASH_KEY_STRING, "value4");
-    apr_hash_set(h, "key5", APR_HASH_KEY_STRING, "value5");
-
-    count = apr_hash_count(h);
-    ABTS_INT_EQUAL(tc, 5, count);
-}
-
-static void overlay_empty(abts_case *tc, void *data)
-{
-    apr_hash_t *base = NULL;
-    apr_hash_t *overlay = NULL;
-    apr_hash_t *result = NULL;
-    int count;
-    char StrArray[MAX_DEPTH][MAX_LTH];
-
-    base = apr_hash_make(p);
-    overlay = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, base);
-    ABTS_PTR_NOTNULL(tc, overlay);
-
-    apr_hash_set(base, "key1", APR_HASH_KEY_STRING, "value1");
-    apr_hash_set(base, "key2", APR_HASH_KEY_STRING, "value2");
-    apr_hash_set(base, "key3", APR_HASH_KEY_STRING, "value3");
-    apr_hash_set(base, "key4", APR_HASH_KEY_STRING, "value4");
-    apr_hash_set(base, "key5", APR_HASH_KEY_STRING, "value5");
-
-    result = apr_hash_overlay(p, overlay, base);
-
-    count = apr_hash_count(result);
-    ABTS_INT_EQUAL(tc, 5, count);
-
-    dump_hash(p, result, StrArray);
-
-    ABTS_STR_EQUAL(tc, "Key key1 (4) Value value1\n", StrArray[0]);
-    ABTS_STR_EQUAL(tc, "Key key2 (4) Value value2\n", StrArray[1]);
-    ABTS_STR_EQUAL(tc, "Key key3 (4) Value value3\n", StrArray[2]);
-    ABTS_STR_EQUAL(tc, "Key key4 (4) Value value4\n", StrArray[3]);
-    ABTS_STR_EQUAL(tc, "Key key5 (4) Value value5\n", StrArray[4]);
-    ABTS_STR_EQUAL(tc, "#entries 5\n", StrArray[5]);
-}
-
-static void overlay_2unique(abts_case *tc, void *data)
-{
-    apr_hash_t *base = NULL;
-    apr_hash_t *overlay = NULL;
-    apr_hash_t *result = NULL;
-    int count;
-    char StrArray[MAX_DEPTH][MAX_LTH];
-
-    base = apr_hash_make(p);
-    overlay = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, base);
-    ABTS_PTR_NOTNULL(tc, overlay);
-
-    apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1");
-    apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2");
-    apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3");
-    apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4");
-    apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5");
-
-    apr_hash_set(overlay, "overlay1", APR_HASH_KEY_STRING, "value1");
-    apr_hash_set(overlay, "overlay2", APR_HASH_KEY_STRING, "value2");
-    apr_hash_set(overlay, "overlay3", APR_HASH_KEY_STRING, "value3");
-    apr_hash_set(overlay, "overlay4", APR_HASH_KEY_STRING, "value4");
-    apr_hash_set(overlay, "overlay5", APR_HASH_KEY_STRING, "value5");
-
-    result = apr_hash_overlay(p, overlay, base);
-
-    count = apr_hash_count(result);
-    ABTS_INT_EQUAL(tc, 10, count);
-
-    dump_hash(p, result, StrArray);
-
-    ABTS_STR_EQUAL(tc, "Key base1 (5) Value value1\n", StrArray[0]);
-    ABTS_STR_EQUAL(tc, "Key base2 (5) Value value2\n", StrArray[1]);
-    ABTS_STR_EQUAL(tc, "Key base3 (5) Value value3\n", StrArray[2]);
-    ABTS_STR_EQUAL(tc, "Key base4 (5) Value value4\n", StrArray[3]);
-    ABTS_STR_EQUAL(tc, "Key base5 (5) Value value5\n", StrArray[4]);
-    ABTS_STR_EQUAL(tc, "Key overlay1 (8) Value value1\n", StrArray[5]);
-    ABTS_STR_EQUAL(tc, "Key overlay2 (8) Value value2\n", StrArray[6]);
-    ABTS_STR_EQUAL(tc, "Key overlay3 (8) Value value3\n", StrArray[7]);
-    ABTS_STR_EQUAL(tc, "Key overlay4 (8) Value value4\n", StrArray[8]);
-    ABTS_STR_EQUAL(tc, "Key overlay5 (8) Value value5\n", StrArray[9]);
-    ABTS_STR_EQUAL(tc, "#entries 10\n", StrArray[10]);
-}
-
-static void overlay_same(abts_case *tc, void *data)
-{
-    apr_hash_t *base = NULL;
-    apr_hash_t *result = NULL;
-    int count;
-    char StrArray[MAX_DEPTH][MAX_LTH];
-
-    base = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, base);
-
-    apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1");
-    apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2");
-    apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3");
-    apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4");
-    apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5");
-
-    result = apr_hash_overlay(p, base, base);
-
-    count = apr_hash_count(result);
-    ABTS_INT_EQUAL(tc, 5, count);
-
-    dump_hash(p, result, StrArray);
-
-    ABTS_STR_EQUAL(tc, "Key base1 (5) Value value1\n", StrArray[0]);
-    ABTS_STR_EQUAL(tc, "Key base2 (5) Value value2\n", StrArray[1]);
-    ABTS_STR_EQUAL(tc, "Key base3 (5) Value value3\n", StrArray[2]);
-    ABTS_STR_EQUAL(tc, "Key base4 (5) Value value4\n", StrArray[3]);
-    ABTS_STR_EQUAL(tc, "Key base5 (5) Value value5\n", StrArray[4]);
-    ABTS_STR_EQUAL(tc, "#entries 5\n", StrArray[5]);
-}
-
-static void overlay_fetch(abts_case *tc, void *data)
-{
-    apr_hash_t *base = NULL;
-    apr_hash_t *overlay = NULL;
-    apr_hash_t *result = NULL;
-    int count;
-
-    base = apr_hash_make(p);
-    overlay = apr_hash_make(p);
-    ABTS_PTR_NOTNULL(tc, base);
-    ABTS_PTR_NOTNULL(tc, overlay);
-
-    apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1");
-    apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2");
-    apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3");
-    apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4");
-    apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5");
-
-    apr_hash_set(overlay, "overlay1", APR_HASH_KEY_STRING, "value1");
-    apr_hash_set(overlay, "overlay2", APR_HASH_KEY_STRING, "value2");
-    apr_hash_set(overlay, "overlay3", APR_HASH_KEY_STRING, "value3");
-    apr_hash_set(overlay, "overlay4", APR_HASH_KEY_STRING, "value4");
-    apr_hash_set(overlay, "overlay5", APR_HASH_KEY_STRING, "value5");
-
-    result = apr_hash_overlay(p, overlay, base);
-
-    count = apr_hash_count(result);
-    ABTS_INT_EQUAL(tc, 10, count);
-
-    ABTS_STR_EQUAL(tc, "value1",
-                       apr_hash_get(result, "base1", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value2",
-                       apr_hash_get(result, "base2", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value3",
-                       apr_hash_get(result, "base3", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value4",
-                       apr_hash_get(result, "base4", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value5",
-                       apr_hash_get(result, "base5", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value1",
-                       apr_hash_get(result, "overlay1", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value2",
-                       apr_hash_get(result, "overlay2", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value3",
-                       apr_hash_get(result, "overlay3", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value4",
-                       apr_hash_get(result, "overlay4", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value5",
-                       apr_hash_get(result, "overlay5", APR_HASH_KEY_STRING));
-
-    ABTS_STR_EQUAL(tc, "value1",
-                       apr_hash_get(base, "base1", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value2",
-                       apr_hash_get(base, "base2", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value3",
-                       apr_hash_get(base, "base3", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value4",
-                       apr_hash_get(base, "base4", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value5",
-                       apr_hash_get(base, "base5", APR_HASH_KEY_STRING));
-
-    ABTS_STR_EQUAL(tc, "value1",
-                       apr_hash_get(overlay, "overlay1", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value2",
-                       apr_hash_get(overlay, "overlay2", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value3",
-                       apr_hash_get(overlay, "overlay3", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value4",
-                       apr_hash_get(overlay, "overlay4", APR_HASH_KEY_STRING));
-    ABTS_STR_EQUAL(tc, "value5",
-                       apr_hash_get(overlay, "overlay5", APR_HASH_KEY_STRING));
-}
-
-abts_suite *testhash(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, hash_make, NULL);
-    abts_run_test(suite, hash_set, NULL);
-    abts_run_test(suite, hash_reset, NULL);
-    abts_run_test(suite, same_value, NULL);
-    abts_run_test(suite, same_value_custom, NULL);
-    abts_run_test(suite, key_space, NULL);
-    abts_run_test(suite, delete_key, NULL);
-
-    abts_run_test(suite, hash_count_0, NULL);
-    abts_run_test(suite, hash_count_1, NULL);
-    abts_run_test(suite, hash_count_5, NULL);
-
-    abts_run_test(suite, hash_clear, NULL);
-    abts_run_test(suite, hash_traverse, NULL);
-    abts_run_test(suite, summation_test, NULL);
-
-    abts_run_test(suite, overlay_empty, NULL);
-    abts_run_test(suite, overlay_2unique, NULL);
-    abts_run_test(suite, overlay_same, NULL);
-    abts_run_test(suite, overlay_fetch, NULL);
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testhash.c (from rev 9273, vendor/apache/apr/dist/test/testhash.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testhash.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testhash.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,541 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "apr.h"
+#include "apr_strings.h"
+#include "apr_general.h"
+#include "apr_pools.h"
+#include "apr_hash.h"
+
+#define MAX_LTH 256
+#define MAX_DEPTH 11
+
+static int comp_string(const void *str1, const void *str2)
+{
+    return strcmp(str1,str2);
+}
+
+static void dump_hash(apr_pool_t *p, apr_hash_t *h, char str[][MAX_LTH]) 
+{
+    apr_hash_index_t *hi;
+    int i = 0;
+
+    for (hi = apr_hash_first(p, h); hi; hi = apr_hash_next(hi)) {
+        const char *key = apr_hash_this_key(hi);
+        apr_ssize_t len = apr_hash_this_key_len(hi);
+        char *val = apr_hash_this_val(hi);
+
+        str[i][0]='\0';
+        apr_snprintf(str[i], MAX_LTH, "%sKey %s (%" APR_SSIZE_T_FMT ") Value %s\n",
+                 str[i], key, len, val);
+        i++;
+    }
+    str[i][0]='\0';
+    apr_snprintf(str[i], MAX_LTH, "%s#entries %d\n", str[i], i);
+
+    /* Sort the result strings so that they can be checked for expected results easily,
+     * without having to worry about platform quirks
+     */
+    qsort(
+        str, /* Pointer to elements */
+        i,   /* number of elements */
+        MAX_LTH, /* size of one element */
+        comp_string /* Pointer to comparison routine */
+    );
+}
+
+static void sum_hash(apr_pool_t *p, apr_hash_t *h, int *pcount, int *keySum, int *valSum) 
+{
+    apr_hash_index_t *hi;
+    void *val, *key;
+    int count = 0;
+
+    *keySum = 0;
+    *valSum = 0;
+    *pcount = 0;
+    for (hi = apr_hash_first(p, h); hi; hi = apr_hash_next(hi)) {
+        apr_hash_this(hi, (void*)&key, NULL, &val);
+        *valSum += *(int *)val;
+        *keySum += *(int *)key;
+        count++;
+    }
+    *pcount=count;
+}
+
+static void hash_make(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+}
+
+static void hash_set(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    char *result = NULL;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
+    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "value", result);
+}
+
+static void hash_reset(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    char *result = NULL;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
+    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "value", result);
+
+    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "new");
+    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "new", result);
+}
+
+static void same_value(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    char *result = NULL;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "same1", APR_HASH_KEY_STRING, "same");
+    result = apr_hash_get(h, "same1", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "same", result);
+
+    apr_hash_set(h, "same2", APR_HASH_KEY_STRING, "same");
+    result = apr_hash_get(h, "same2", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "same", result);
+}
+
+static unsigned int hash_custom( const char *key, apr_ssize_t *klen)
+{
+    unsigned int hash = 0;
+    while( *klen ) {
+        (*klen) --;
+        hash = hash * 33 + key[ *klen ];
+    }
+    return hash;
+}
+
+static void same_value_custom(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    char *result = NULL;
+
+    h = apr_hash_make_custom(p, hash_custom);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "same1", 5, "same");
+    result = apr_hash_get(h, "same1", 5);
+    ABTS_STR_EQUAL(tc, "same", result);
+
+    apr_hash_set(h, "same2", 5, "same");
+    result = apr_hash_get(h, "same2", 5);
+    ABTS_STR_EQUAL(tc, "same", result);
+}
+
+static void key_space(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    char *result = NULL;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "key with space", APR_HASH_KEY_STRING, "value");
+    result = apr_hash_get(h, "key with space", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "value", result);
+}
+
+static void hash_clear(abts_case *tc, void *data)
+{
+    apr_hash_t *h;
+    int i, *e;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    for (i = 1; i <= 10; i++) {
+        e = apr_palloc(p, sizeof(int));
+        *e = i;
+        apr_hash_set(h, e, sizeof(*e), e);
+    }
+    apr_hash_clear(h);
+    i = apr_hash_count(h);
+    ABTS_INT_EQUAL(tc, 0, i);
+}
+
+/* This is kind of a hack, but I am just keeping an existing test.  This is
+ * really testing apr_hash_first, apr_hash_next, and apr_hash_this which 
+ * should be tested in three separate tests, but this will do for now.
+ */
+static void hash_traverse(abts_case *tc, void *data)
+{
+    apr_hash_t *h;
+    char StrArray[MAX_DEPTH][MAX_LTH];
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "should not see this");
+    apr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3");
+    apr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3");
+    apr_hash_set(h, "FOO1", APR_HASH_KEY_STRING, "bar1");
+    apr_hash_set(h, "FOO2", APR_HASH_KEY_STRING, "bar2");
+    apr_hash_set(h, "FOO4", APR_HASH_KEY_STRING, "bar4");
+    apr_hash_set(h, "SAME1", APR_HASH_KEY_STRING, "same");
+    apr_hash_set(h, "SAME2", APR_HASH_KEY_STRING, "same");
+    apr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "Overwrite key");
+
+    dump_hash(p, h, StrArray);
+
+    ABTS_STR_EQUAL(tc, "Key FOO1 (4) Value bar1\n", StrArray[0]);
+    ABTS_STR_EQUAL(tc, "Key FOO2 (4) Value bar2\n", StrArray[1]);
+    ABTS_STR_EQUAL(tc, "Key FOO3 (4) Value bar3\n", StrArray[2]);
+    ABTS_STR_EQUAL(tc, "Key FOO4 (4) Value bar4\n", StrArray[3]);
+    ABTS_STR_EQUAL(tc, "Key OVERWRITE (9) Value Overwrite key\n", StrArray[4]);
+    ABTS_STR_EQUAL(tc, "Key SAME1 (5) Value same\n", StrArray[5]);
+    ABTS_STR_EQUAL(tc, "Key SAME2 (5) Value same\n", StrArray[6]);
+    ABTS_STR_EQUAL(tc, "#entries 7\n", StrArray[7]);
+}
+
+/* This is kind of a hack, but I am just keeping an existing test.  This is
+ * really testing apr_hash_first, apr_hash_next, and apr_hash_this which 
+ * should be tested in three separate tests, but this will do for now.
+ */
+static void summation_test(abts_case *tc, void *data)
+{
+    apr_hash_t *h;
+    int sumKeys, sumVal, trySumKey, trySumVal;
+    int i, j, *val, *key;
+
+    h =apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    sumKeys = 0;
+    sumVal = 0;
+    trySumKey = 0;
+    trySumVal = 0;
+
+    for (i = 0; i < 100; i++) {
+        j = i * 10 + 1;
+        sumKeys += j;
+        sumVal += i;
+        key = apr_palloc(p, sizeof(int));
+        *key = j;
+        val = apr_palloc(p, sizeof(int));
+        *val = i;
+        apr_hash_set(h, key, sizeof(int), val);
+    }
+
+    sum_hash(p, h, &i, &trySumKey, &trySumVal);
+    ABTS_INT_EQUAL(tc, 100, i);
+    ABTS_INT_EQUAL(tc, sumVal, trySumVal);
+    ABTS_INT_EQUAL(tc, sumKeys, trySumKey);
+}
+
+static void delete_key(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    char *result = NULL;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
+    apr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2");
+
+    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "value", result);
+
+    result = apr_hash_get(h, "key2", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "value2", result);
+
+    apr_hash_set(h, "key", APR_HASH_KEY_STRING, NULL);
+
+    result = apr_hash_get(h, "key", APR_HASH_KEY_STRING);
+    ABTS_PTR_EQUAL(tc, NULL, result);
+
+    result = apr_hash_get(h, "key2", APR_HASH_KEY_STRING);
+    ABTS_STR_EQUAL(tc, "value2", result);
+}
+
+static void hash_count_0(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    int count;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    count = apr_hash_count(h);
+    ABTS_INT_EQUAL(tc, 0, count);
+}
+
+static void hash_count_1(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    int count;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value");
+
+    count = apr_hash_count(h);
+    ABTS_INT_EQUAL(tc, 1, count);
+}
+
+static void hash_count_5(abts_case *tc, void *data)
+{
+    apr_hash_t *h = NULL;
+    int count;
+
+    h = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, h);
+
+    apr_hash_set(h, "key1", APR_HASH_KEY_STRING, "value1");
+    apr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2");
+    apr_hash_set(h, "key3", APR_HASH_KEY_STRING, "value3");
+    apr_hash_set(h, "key4", APR_HASH_KEY_STRING, "value4");
+    apr_hash_set(h, "key5", APR_HASH_KEY_STRING, "value5");
+
+    count = apr_hash_count(h);
+    ABTS_INT_EQUAL(tc, 5, count);
+}
+
+static void overlay_empty(abts_case *tc, void *data)
+{
+    apr_hash_t *base = NULL;
+    apr_hash_t *overlay = NULL;
+    apr_hash_t *result = NULL;
+    int count;
+    char StrArray[MAX_DEPTH][MAX_LTH];
+
+    base = apr_hash_make(p);
+    overlay = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, base);
+    ABTS_PTR_NOTNULL(tc, overlay);
+
+    apr_hash_set(base, "key1", APR_HASH_KEY_STRING, "value1");
+    apr_hash_set(base, "key2", APR_HASH_KEY_STRING, "value2");
+    apr_hash_set(base, "key3", APR_HASH_KEY_STRING, "value3");
+    apr_hash_set(base, "key4", APR_HASH_KEY_STRING, "value4");
+    apr_hash_set(base, "key5", APR_HASH_KEY_STRING, "value5");
+
+    result = apr_hash_overlay(p, overlay, base);
+
+    count = apr_hash_count(result);
+    ABTS_INT_EQUAL(tc, 5, count);
+
+    dump_hash(p, result, StrArray);
+
+    ABTS_STR_EQUAL(tc, "Key key1 (4) Value value1\n", StrArray[0]);
+    ABTS_STR_EQUAL(tc, "Key key2 (4) Value value2\n", StrArray[1]);
+    ABTS_STR_EQUAL(tc, "Key key3 (4) Value value3\n", StrArray[2]);
+    ABTS_STR_EQUAL(tc, "Key key4 (4) Value value4\n", StrArray[3]);
+    ABTS_STR_EQUAL(tc, "Key key5 (4) Value value5\n", StrArray[4]);
+    ABTS_STR_EQUAL(tc, "#entries 5\n", StrArray[5]);
+}
+
+static void overlay_2unique(abts_case *tc, void *data)
+{
+    apr_hash_t *base = NULL;
+    apr_hash_t *overlay = NULL;
+    apr_hash_t *result = NULL;
+    int count;
+    char StrArray[MAX_DEPTH][MAX_LTH];
+
+    base = apr_hash_make(p);
+    overlay = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, base);
+    ABTS_PTR_NOTNULL(tc, overlay);
+
+    apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1");
+    apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2");
+    apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3");
+    apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4");
+    apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5");
+
+    apr_hash_set(overlay, "overlay1", APR_HASH_KEY_STRING, "value1");
+    apr_hash_set(overlay, "overlay2", APR_HASH_KEY_STRING, "value2");
+    apr_hash_set(overlay, "overlay3", APR_HASH_KEY_STRING, "value3");
+    apr_hash_set(overlay, "overlay4", APR_HASH_KEY_STRING, "value4");
+    apr_hash_set(overlay, "overlay5", APR_HASH_KEY_STRING, "value5");
+
+    result = apr_hash_overlay(p, overlay, base);
+
+    count = apr_hash_count(result);
+    ABTS_INT_EQUAL(tc, 10, count);
+
+    dump_hash(p, result, StrArray);
+
+    ABTS_STR_EQUAL(tc, "Key base1 (5) Value value1\n", StrArray[0]);
+    ABTS_STR_EQUAL(tc, "Key base2 (5) Value value2\n", StrArray[1]);
+    ABTS_STR_EQUAL(tc, "Key base3 (5) Value value3\n", StrArray[2]);
+    ABTS_STR_EQUAL(tc, "Key base4 (5) Value value4\n", StrArray[3]);
+    ABTS_STR_EQUAL(tc, "Key base5 (5) Value value5\n", StrArray[4]);
+    ABTS_STR_EQUAL(tc, "Key overlay1 (8) Value value1\n", StrArray[5]);
+    ABTS_STR_EQUAL(tc, "Key overlay2 (8) Value value2\n", StrArray[6]);
+    ABTS_STR_EQUAL(tc, "Key overlay3 (8) Value value3\n", StrArray[7]);
+    ABTS_STR_EQUAL(tc, "Key overlay4 (8) Value value4\n", StrArray[8]);
+    ABTS_STR_EQUAL(tc, "Key overlay5 (8) Value value5\n", StrArray[9]);
+    ABTS_STR_EQUAL(tc, "#entries 10\n", StrArray[10]);
+}
+
+static void overlay_same(abts_case *tc, void *data)
+{
+    apr_hash_t *base = NULL;
+    apr_hash_t *result = NULL;
+    int count;
+    char StrArray[MAX_DEPTH][MAX_LTH];
+
+    base = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, base);
+
+    apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1");
+    apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2");
+    apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3");
+    apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4");
+    apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5");
+
+    result = apr_hash_overlay(p, base, base);
+
+    count = apr_hash_count(result);
+    ABTS_INT_EQUAL(tc, 5, count);
+
+    dump_hash(p, result, StrArray);
+
+    ABTS_STR_EQUAL(tc, "Key base1 (5) Value value1\n", StrArray[0]);
+    ABTS_STR_EQUAL(tc, "Key base2 (5) Value value2\n", StrArray[1]);
+    ABTS_STR_EQUAL(tc, "Key base3 (5) Value value3\n", StrArray[2]);
+    ABTS_STR_EQUAL(tc, "Key base4 (5) Value value4\n", StrArray[3]);
+    ABTS_STR_EQUAL(tc, "Key base5 (5) Value value5\n", StrArray[4]);
+    ABTS_STR_EQUAL(tc, "#entries 5\n", StrArray[5]);
+}
+
+static void overlay_fetch(abts_case *tc, void *data)
+{
+    apr_hash_t *base = NULL;
+    apr_hash_t *overlay = NULL;
+    apr_hash_t *result = NULL;
+    int count;
+
+    base = apr_hash_make(p);
+    overlay = apr_hash_make(p);
+    ABTS_PTR_NOTNULL(tc, base);
+    ABTS_PTR_NOTNULL(tc, overlay);
+
+    apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1");
+    apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2");
+    apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3");
+    apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4");
+    apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5");
+
+    apr_hash_set(overlay, "overlay1", APR_HASH_KEY_STRING, "value1");
+    apr_hash_set(overlay, "overlay2", APR_HASH_KEY_STRING, "value2");
+    apr_hash_set(overlay, "overlay3", APR_HASH_KEY_STRING, "value3");
+    apr_hash_set(overlay, "overlay4", APR_HASH_KEY_STRING, "value4");
+    apr_hash_set(overlay, "overlay5", APR_HASH_KEY_STRING, "value5");
+
+    result = apr_hash_overlay(p, overlay, base);
+
+    count = apr_hash_count(result);
+    ABTS_INT_EQUAL(tc, 10, count);
+
+    ABTS_STR_EQUAL(tc, "value1",
+                       apr_hash_get(result, "base1", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value2",
+                       apr_hash_get(result, "base2", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value3",
+                       apr_hash_get(result, "base3", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value4",
+                       apr_hash_get(result, "base4", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value5",
+                       apr_hash_get(result, "base5", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value1",
+                       apr_hash_get(result, "overlay1", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value2",
+                       apr_hash_get(result, "overlay2", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value3",
+                       apr_hash_get(result, "overlay3", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value4",
+                       apr_hash_get(result, "overlay4", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value5",
+                       apr_hash_get(result, "overlay5", APR_HASH_KEY_STRING));
+
+    ABTS_STR_EQUAL(tc, "value1",
+                       apr_hash_get(base, "base1", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value2",
+                       apr_hash_get(base, "base2", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value3",
+                       apr_hash_get(base, "base3", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value4",
+                       apr_hash_get(base, "base4", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value5",
+                       apr_hash_get(base, "base5", APR_HASH_KEY_STRING));
+
+    ABTS_STR_EQUAL(tc, "value1",
+                       apr_hash_get(overlay, "overlay1", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value2",
+                       apr_hash_get(overlay, "overlay2", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value3",
+                       apr_hash_get(overlay, "overlay3", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value4",
+                       apr_hash_get(overlay, "overlay4", APR_HASH_KEY_STRING));
+    ABTS_STR_EQUAL(tc, "value5",
+                       apr_hash_get(overlay, "overlay5", APR_HASH_KEY_STRING));
+}
+
+abts_suite *testhash(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, hash_make, NULL);
+    abts_run_test(suite, hash_set, NULL);
+    abts_run_test(suite, hash_reset, NULL);
+    abts_run_test(suite, same_value, NULL);
+    abts_run_test(suite, same_value_custom, NULL);
+    abts_run_test(suite, key_space, NULL);
+    abts_run_test(suite, delete_key, NULL);
+
+    abts_run_test(suite, hash_count_0, NULL);
+    abts_run_test(suite, hash_count_1, NULL);
+    abts_run_test(suite, hash_count_5, NULL);
+
+    abts_run_test(suite, hash_clear, NULL);
+    abts_run_test(suite, hash_traverse, NULL);
+    abts_run_test(suite, summation_test, NULL);
+
+    abts_run_test(suite, overlay_empty, NULL);
+    abts_run_test(suite, overlay_2unique, NULL);
+    abts_run_test(suite, overlay_same, NULL);
+    abts_run_test(suite, overlay_fetch, NULL);
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testlib.dsp
===================================================================
--- vendor/apache/apr/dist/test/testlib.dsp	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testlib.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,442 +0,0 @@
-# Microsoft Developer Studio Project File - Name="testlib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) External Target" 0x0106
-
-CFG=testlib - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "testlib.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "testlib.mak" CFG="testlib - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "testlib - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "testlib - Win32 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE "testlib - Win32 Release9x" (based on "Win32 (x86) External Target")
-!MESSAGE "testlib - Win32 Debug9x" (based on "Win32 (x86) External Target")
-!MESSAGE "testlib - x64 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "testlib - x64 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF  "$(CFG)" == "testlib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=LibR OUTDIR=LibR MODEL=static all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "LibR\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=LibR OUTDIR=LibR MODEL=static all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "LibR\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testlib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=LibD OUTDIR=LibD MODEL=static _DEBUG=1 all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "LibD\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=LibD OUTDIR=LibD MODEL=static _DEBUG=1 all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "LibD\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testlib - Win32 Release9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibR OUTDIR=9x\LibR MODEL=static all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "9x\LibR\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibR OUTDIR=9x\LibR MODEL=static all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "9x\LibR\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testlib - Win32 Debug9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibD OUTDIR=9x\LibD MODEL=static _DEBUG=1 all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "9x\LibD\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibD OUTDIR=9x\LibD MODEL=static _DEBUG=1 all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "9x\LibD\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testlib - x64 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibR OUTDIR=x64\LibR MODEL=static all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "x64\LibR\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibR OUTDIR=x64\LibR MODEL=static all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "x64\LibR\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF  "$(CFG)" == "testlib - x64 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ""
-# PROP BASE Intermediate_Dir ""
-# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibD OUTDIR=x64\LibD MODEL=static _DEBUG=1 all check"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "x64\LibD\testall.exe"
-# PROP BASE Bsc_Name ""
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
-# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibD OUTDIR=x64\LibD MODEL=static _DEBUG=1 all check"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "x64\LibD\testall.exe"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ENDIF 
-
-# Begin Target
-
-# Name "testlib - Win32 Release"
-# Name "testlib - Win32 Debug"
-# Name "testlib - Win32 Release9x"
-# Name "testlib - Win32 Debug9x"
-# Name "testlib - x64 Release"
-# Name "testlib - x64 Debug"
-# Begin Group "testall Source Files"
-
-# PROP Default_Filter ".c"
-# Begin Source File
-
-SOURCE=.\abts.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\abts.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\abts_tests.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testapp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testargs.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testatomic.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testcond.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testdso.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testdup.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testenv.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfile.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfilecopy.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfileinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testflock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testflock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfmt.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testfnmatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testglobalmutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testglobalmutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testhash.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testipsub.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testlfs.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testmmap.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testnames.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testoc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpipe.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpoll.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testpools.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testproc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testrand.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshm.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshm.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsock.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsock.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsockets.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsockopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\teststr.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\teststrnatcmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testtable.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testtemp.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testthread.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testtime.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testud.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testuser.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testutil.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\testvsn.c
-# End Source File
-# End Group
-# Begin Group "Other Source Files"
-
-# PROP Default_Filter ".c"
-# Begin Source File
-
-SOURCE=.\globalmutexchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\mod_test.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\nw_misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\occhild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\proc_child.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\readchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\sendfile.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\sockchild.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testlockperf.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testmutexscope.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testprocmutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshmconsumer.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\testshmproducer.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\tryread.c
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\Makefile.win
-# End Source File
-# End Target
-# End Project

Copied: vendor/apache/apr/1.5.2/test/testlib.dsp (from rev 9273, vendor/apache/apr/dist/test/testlib.dsp)
===================================================================
--- vendor/apache/apr/1.5.2/test/testlib.dsp	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testlib.dsp	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,446 @@
+# Microsoft Developer Studio Project File - Name="testlib" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) External Target" 0x0106
+
+CFG=testlib - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "testlib.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "testlib.mak" CFG="testlib - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "testlib - Win32 Release" (based on "Win32 (x86) External Target")
+!MESSAGE "testlib - Win32 Debug" (based on "Win32 (x86) External Target")
+!MESSAGE "testlib - Win32 Release9x" (based on "Win32 (x86) External Target")
+!MESSAGE "testlib - Win32 Debug9x" (based on "Win32 (x86) External Target")
+!MESSAGE "testlib - x64 Release" (based on "Win32 (x86) External Target")
+!MESSAGE "testlib - x64 Debug" (based on "Win32 (x86) External Target")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF  "$(CFG)" == "testlib - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=LibR OUTDIR=LibR MODEL=static all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "LibR\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=LibR OUTDIR=LibR MODEL=static all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "LibR\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testlib - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=LibD OUTDIR=LibD MODEL=static _DEBUG=1 all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "LibD\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=LibD OUTDIR=LibD MODEL=static _DEBUG=1 all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "LibD\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testlib - Win32 Release9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibR OUTDIR=9x\LibR MODEL=static all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "9x\LibR\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibR OUTDIR=9x\LibR MODEL=static all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "9x\LibR\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testlib - Win32 Debug9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibD OUTDIR=9x\LibD MODEL=static _DEBUG=1 all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "9x\LibD\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=9x\LibD OUTDIR=9x\LibD MODEL=static _DEBUG=1 all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "9x\LibD\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testlib - x64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibR OUTDIR=x64\LibR MODEL=static all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "x64\LibR\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibR OUTDIR=x64\LibR MODEL=static all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "x64\LibR\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ELSEIF  "$(CFG)" == "testlib - x64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ""
+# PROP BASE Intermediate_Dir ""
+# PROP BASE Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibD OUTDIR=x64\LibD MODEL=static _DEBUG=1 all check"
+# PROP BASE Rebuild_Opt "/a"
+# PROP BASE Target_File "x64\LibD\testall.exe"
+# PROP BASE Bsc_Name ""
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir ""
+# PROP Cmd_Line "NMAKE /f Makefile.win INTDIR=x64\LibD OUTDIR=x64\LibD MODEL=static _DEBUG=1 all check"
+# PROP Rebuild_Opt "/a"
+# PROP Target_File "x64\LibD\testall.exe"
+# PROP Bsc_Name ""
+# PROP Target_Dir ""
+
+!ENDIF 
+
+# Begin Target
+
+# Name "testlib - Win32 Release"
+# Name "testlib - Win32 Debug"
+# Name "testlib - Win32 Release9x"
+# Name "testlib - Win32 Debug9x"
+# Name "testlib - x64 Release"
+# Name "testlib - x64 Debug"
+# Begin Group "testall Source Files"
+
+# PROP Default_Filter ".c"
+# Begin Source File
+
+SOURCE=.\abts.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\abts.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\abts_tests.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testapp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testargs.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testatomic.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testcond.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testdir.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testdso.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testdup.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testenv.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfilecopy.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfileinfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testflock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testflock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfmt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testfnmatch.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testglobalmutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testglobalmutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testhash.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testipsub.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testlfs.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testlock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testmmap.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testnames.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testoc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpath.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpipe.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpoll.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testpools.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testproc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testrand.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshm.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testskiplist.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsleep.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsockets.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testsockopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\teststr.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\teststrnatcmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testtable.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testtemp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testthread.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testtime.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testud.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testuser.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testutil.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testutil.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\testvsn.c
+# End Source File
+# End Group
+# Begin Group "Other Source Files"
+
+# PROP Default_Filter ".c"
+# Begin Source File
+
+SOURCE=.\globalmutexchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\mod_test.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\nw_misc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\occhild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\proc_child.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\readchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\sendfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\sockchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testlockperf.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testmutexscope.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testprocmutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshmconsumer.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testshmproducer.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\tryread.c
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\Makefile.win
+# End Source File
+# End Target
+# End Project

Deleted: vendor/apache/apr/1.5.2/test/testlockperf.c
===================================================================
--- vendor/apache/apr/dist/test/testlockperf.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testlockperf.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,282 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_thread_proc.h"
-#include "apr_thread_mutex.h"
-#include "apr_thread_rwlock.h"
-#include "apr_file_io.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_getopt.h"
-#include "errno.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "testutil.h"
-
-#if !APR_HAS_THREADS
-int main(void)
-{
-    printf("This program won't work on this platform because there is no "
-           "support for threads.\n");
-    return 0;
-}
-#else /* !APR_HAS_THREADS */
-
-#define MAX_COUNTER 1000000
-#define MAX_THREADS 6
-
-static int verbose = 0;
-static long mutex_counter;
-
-static apr_thread_mutex_t *thread_lock;
-void * APR_THREAD_FUNC thread_mutex_func(apr_thread_t *thd, void *data);
-apr_status_t test_thread_mutex(int num_threads); /* apr_thread_mutex_t */
-
-static apr_thread_rwlock_t *thread_rwlock;
-void * APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data);
-apr_status_t test_thread_rwlock(int num_threads); /* apr_thread_rwlock_t */
-
-int test_thread_mutex_nested(int num_threads);
-
-apr_pool_t *pool;
-int i = 0, x = 0;
-
-void * APR_THREAD_FUNC thread_mutex_func(apr_thread_t *thd, void *data)
-{
-    int i;
-
-    for (i = 0; i < MAX_COUNTER; i++) {
-        apr_thread_mutex_lock(thread_lock);
-        mutex_counter++;
-        apr_thread_mutex_unlock(thread_lock);
-    }
-    return NULL;
-}
-
-void * APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data)
-{
-    int i;
-
-    for (i = 0; i < MAX_COUNTER; i++) {
-        apr_thread_rwlock_wrlock(thread_rwlock);
-        mutex_counter++;
-        apr_thread_rwlock_unlock(thread_rwlock);
-    }
-    return NULL;
-}
-
-int test_thread_mutex(int num_threads)
-{
-    apr_thread_t *t[MAX_THREADS];
-    apr_status_t s[MAX_THREADS];
-    apr_time_t time_start, time_stop;
-    int i;
-
-    mutex_counter = 0;
-
-    printf("apr_thread_mutex_t Tests\n");
-    printf("%-60s", "    Initializing the apr_thread_mutex_t (UNNESTED)");
-    s[0] = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_UNNESTED, pool);
-    if (s[0] != APR_SUCCESS) {
-        printf("Failed!\n");
-        return s[0];
-    }
-    printf("OK\n");
-
-    apr_thread_mutex_lock(thread_lock);
-    /* set_concurrency(4)? -aaron */
-    printf("    Starting %d threads    ", num_threads); 
-    for (i = 0; i < num_threads; ++i) {
-        s[i] = apr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool);
-        if (s[i] != APR_SUCCESS) {
-            printf("Failed!\n");
-            return s[i];
-        }
-    }
-    printf("OK\n");
-
-    time_start = apr_time_now();
-    apr_thread_mutex_unlock(thread_lock);
-
-    /* printf("%-60s", "    Waiting for threads to exit"); */
-    for (i = 0; i < num_threads; ++i) {
-        apr_thread_join(&s[i], t[i]);
-    }
-    /* printf("OK\n"); */
-
-    time_stop = apr_time_now();
-    printf("microseconds: %" APR_INT64_T_FMT " usec\n",
-           (time_stop - time_start));
-    if (mutex_counter != MAX_COUNTER * num_threads)
-        printf("error: counter = %ld\n", mutex_counter);
-
-    return APR_SUCCESS;
-}
-
-int test_thread_mutex_nested(int num_threads)
-{
-    apr_thread_t *t[MAX_THREADS];
-    apr_status_t s[MAX_THREADS];
-    apr_time_t time_start, time_stop;
-    int i;
-
-    mutex_counter = 0;
-
-    printf("apr_thread_mutex_t Tests\n");
-    printf("%-60s", "    Initializing the apr_thread_mutex_t (NESTED)");
-    s[0] = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_NESTED, pool);
-    if (s[0] != APR_SUCCESS) {
-        printf("Failed!\n");
-        return s[0];
-    }
-    printf("OK\n");
-
-    apr_thread_mutex_lock(thread_lock);
-    /* set_concurrency(4)? -aaron */
-    printf("    Starting %d threads    ", num_threads); 
-    for (i = 0; i < num_threads; ++i) {
-        s[i] = apr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool);
-        if (s[i] != APR_SUCCESS) {
-            printf("Failed!\n");
-            return s[i];
-        }
-    }
-    printf("OK\n");
-
-    time_start = apr_time_now();
-    apr_thread_mutex_unlock(thread_lock);
-
-    /* printf("%-60s", "    Waiting for threads to exit"); */
-    for (i = 0; i < num_threads; ++i) {
-        apr_thread_join(&s[i], t[i]);
-    }
-    /* printf("OK\n"); */
-
-    time_stop = apr_time_now();
-    printf("microseconds: %" APR_INT64_T_FMT " usec\n",
-           (time_stop - time_start));
-    if (mutex_counter != MAX_COUNTER * num_threads)
-        printf("error: counter = %ld\n", mutex_counter);
-
-    return APR_SUCCESS;
-}
-
-int test_thread_rwlock(int num_threads)
-{
-    apr_thread_t *t[MAX_THREADS];
-    apr_status_t s[MAX_THREADS];
-    apr_time_t time_start, time_stop;
-    int i;
-
-    mutex_counter = 0;
-
-    printf("apr_thread_rwlock_t Tests\n");
-    printf("%-60s", "    Initializing the apr_thread_rwlock_t");
-    s[0] = apr_thread_rwlock_create(&thread_rwlock, pool);
-    if (s[0] != APR_SUCCESS) {
-        printf("Failed!\n");
-        return s[0];
-    }
-    printf("OK\n");
-
-    apr_thread_rwlock_wrlock(thread_rwlock);
-    /* set_concurrency(4)? -aaron */
-    printf("    Starting %d threads    ", num_threads); 
-    for (i = 0; i < num_threads; ++i) {
-        s[i] = apr_thread_create(&t[i], NULL, thread_rwlock_func, NULL, pool);
-        if (s[i] != APR_SUCCESS) {
-            printf("Failed!\n");
-            return s[i];
-        }
-    }
-    printf("OK\n");
-
-    time_start = apr_time_now();
-    apr_thread_rwlock_unlock(thread_rwlock);
-
-    /* printf("%-60s", "    Waiting for threads to exit"); */
-    for (i = 0; i < num_threads; ++i) {
-        apr_thread_join(&s[i], t[i]);
-    }
-    /* printf("OK\n"); */
-
-    time_stop = apr_time_now();
-    printf("microseconds: %" APR_INT64_T_FMT " usec\n",
-           (time_stop - time_start));
-    if (mutex_counter != MAX_COUNTER * num_threads)
-        printf("error: counter = %ld\n", mutex_counter);
-
-    return APR_SUCCESS;
-}
-
-int main(int argc, const char * const *argv)
-{
-    apr_status_t rv;
-    char errmsg[200];
-    apr_getopt_t *opt;
-    char optchar;
-    const char *optarg;
-
-    printf("APR Lock Performance Test\n==============\n\n");
-        
-    apr_initialize();
-    atexit(apr_terminate);
-
-    if (apr_pool_create(&pool, NULL) != APR_SUCCESS)
-        exit(-1);
-
-    if ((rv = apr_getopt_init(&opt, pool, argc, argv)) != APR_SUCCESS) {
-        fprintf(stderr, "Could not set up to parse options: [%d] %s\n",
-                rv, apr_strerror(rv, errmsg, sizeof errmsg));
-        exit(-1);
-    }
-        
-    while ((rv = apr_getopt(opt, "v", &optchar, &optarg)) == APR_SUCCESS) {
-        if (optchar == 'v') {
-            verbose = 1;
-        }
-    }
-
-    if (rv != APR_SUCCESS && rv != APR_EOF) {
-        fprintf(stderr, "Could not parse options: [%d] %s\n",
-                rv, apr_strerror(rv, errmsg, sizeof errmsg));
-        exit(-1);
-    }
-
-    for (i = 1; i <= MAX_THREADS; ++i) {
-        if ((rv = test_thread_mutex(i)) != APR_SUCCESS) {
-            fprintf(stderr,"thread_mutex test failed : [%d] %s\n",
-                    rv, apr_strerror(rv, (char*)errmsg, 200));
-            exit(-3);
-        }
-
-        if ((rv = test_thread_mutex_nested(i)) != APR_SUCCESS) {
-            fprintf(stderr,"thread_mutex (NESTED) test failed : [%d] %s\n",
-                    rv, apr_strerror(rv, (char*)errmsg, 200));
-            exit(-4);
-        }
-
-        if ((rv = test_thread_rwlock(i)) != APR_SUCCESS) {
-            fprintf(stderr,"thread_rwlock test failed : [%d] %s\n",
-                    rv, apr_strerror(rv, (char*)errmsg, 200));
-            exit(-6);
-        }
-    }
-
-    return 0;
-}
-
-#endif /* !APR_HAS_THREADS */

Copied: vendor/apache/apr/1.5.2/test/testlockperf.c (from rev 9273, vendor/apache/apr/dist/test/testlockperf.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testlockperf.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testlockperf.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,286 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_thread_proc.h"
+#include "apr_thread_mutex.h"
+#include "apr_thread_rwlock.h"
+#include "apr_file_io.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_getopt.h"
+#include "errno.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "testutil.h"
+
+#if !APR_HAS_THREADS
+int main(void)
+{
+    printf("This program won't work on this platform because there is no "
+           "support for threads.\n");
+    return 0;
+}
+#else /* !APR_HAS_THREADS */
+
+#define DEFAULT_MAX_COUNTER 1000000
+#define MAX_THREADS 6
+
+static int verbose = 0;
+static long mutex_counter;
+static long max_counter = DEFAULT_MAX_COUNTER;
+
+static apr_thread_mutex_t *thread_lock;
+void * APR_THREAD_FUNC thread_mutex_func(apr_thread_t *thd, void *data);
+apr_status_t test_thread_mutex(int num_threads); /* apr_thread_mutex_t */
+
+static apr_thread_rwlock_t *thread_rwlock;
+void * APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data);
+apr_status_t test_thread_rwlock(int num_threads); /* apr_thread_rwlock_t */
+
+int test_thread_mutex_nested(int num_threads);
+
+apr_pool_t *pool;
+int i = 0, x = 0;
+
+void * APR_THREAD_FUNC thread_mutex_func(apr_thread_t *thd, void *data)
+{
+    int i;
+
+    for (i = 0; i < max_counter; i++) {
+        apr_thread_mutex_lock(thread_lock);
+        mutex_counter++;
+        apr_thread_mutex_unlock(thread_lock);
+    }
+    return NULL;
+}
+
+void * APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data)
+{
+    int i;
+
+    for (i = 0; i < max_counter; i++) {
+        apr_thread_rwlock_wrlock(thread_rwlock);
+        mutex_counter++;
+        apr_thread_rwlock_unlock(thread_rwlock);
+    }
+    return NULL;
+}
+
+int test_thread_mutex(int num_threads)
+{
+    apr_thread_t *t[MAX_THREADS];
+    apr_status_t s[MAX_THREADS];
+    apr_time_t time_start, time_stop;
+    int i;
+
+    mutex_counter = 0;
+
+    printf("apr_thread_mutex_t Tests\n");
+    printf("%-60s", "    Initializing the apr_thread_mutex_t (UNNESTED)");
+    s[0] = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_UNNESTED, pool);
+    if (s[0] != APR_SUCCESS) {
+        printf("Failed!\n");
+        return s[0];
+    }
+    printf("OK\n");
+
+    apr_thread_mutex_lock(thread_lock);
+    /* set_concurrency(4)? -aaron */
+    printf("    Starting %d threads    ", num_threads); 
+    for (i = 0; i < num_threads; ++i) {
+        s[i] = apr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool);
+        if (s[i] != APR_SUCCESS) {
+            printf("Failed!\n");
+            return s[i];
+        }
+    }
+    printf("OK\n");
+
+    time_start = apr_time_now();
+    apr_thread_mutex_unlock(thread_lock);
+
+    /* printf("%-60s", "    Waiting for threads to exit"); */
+    for (i = 0; i < num_threads; ++i) {
+        apr_thread_join(&s[i], t[i]);
+    }
+    /* printf("OK\n"); */
+
+    time_stop = apr_time_now();
+    printf("microseconds: %" APR_INT64_T_FMT " usec\n",
+           (time_stop - time_start));
+    if (mutex_counter != max_counter * num_threads)
+        printf("error: counter = %ld\n", mutex_counter);
+
+    return APR_SUCCESS;
+}
+
+int test_thread_mutex_nested(int num_threads)
+{
+    apr_thread_t *t[MAX_THREADS];
+    apr_status_t s[MAX_THREADS];
+    apr_time_t time_start, time_stop;
+    int i;
+
+    mutex_counter = 0;
+
+    printf("apr_thread_mutex_t Tests\n");
+    printf("%-60s", "    Initializing the apr_thread_mutex_t (NESTED)");
+    s[0] = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_NESTED, pool);
+    if (s[0] != APR_SUCCESS) {
+        printf("Failed!\n");
+        return s[0];
+    }
+    printf("OK\n");
+
+    apr_thread_mutex_lock(thread_lock);
+    /* set_concurrency(4)? -aaron */
+    printf("    Starting %d threads    ", num_threads); 
+    for (i = 0; i < num_threads; ++i) {
+        s[i] = apr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool);
+        if (s[i] != APR_SUCCESS) {
+            printf("Failed!\n");
+            return s[i];
+        }
+    }
+    printf("OK\n");
+
+    time_start = apr_time_now();
+    apr_thread_mutex_unlock(thread_lock);
+
+    /* printf("%-60s", "    Waiting for threads to exit"); */
+    for (i = 0; i < num_threads; ++i) {
+        apr_thread_join(&s[i], t[i]);
+    }
+    /* printf("OK\n"); */
+
+    time_stop = apr_time_now();
+    printf("microseconds: %" APR_INT64_T_FMT " usec\n",
+           (time_stop - time_start));
+    if (mutex_counter != max_counter * num_threads)
+        printf("error: counter = %ld\n", mutex_counter);
+
+    return APR_SUCCESS;
+}
+
+int test_thread_rwlock(int num_threads)
+{
+    apr_thread_t *t[MAX_THREADS];
+    apr_status_t s[MAX_THREADS];
+    apr_time_t time_start, time_stop;
+    int i;
+
+    mutex_counter = 0;
+
+    printf("apr_thread_rwlock_t Tests\n");
+    printf("%-60s", "    Initializing the apr_thread_rwlock_t");
+    s[0] = apr_thread_rwlock_create(&thread_rwlock, pool);
+    if (s[0] != APR_SUCCESS) {
+        printf("Failed!\n");
+        return s[0];
+    }
+    printf("OK\n");
+
+    apr_thread_rwlock_wrlock(thread_rwlock);
+    /* set_concurrency(4)? -aaron */
+    printf("    Starting %d threads    ", num_threads); 
+    for (i = 0; i < num_threads; ++i) {
+        s[i] = apr_thread_create(&t[i], NULL, thread_rwlock_func, NULL, pool);
+        if (s[i] != APR_SUCCESS) {
+            printf("Failed!\n");
+            return s[i];
+        }
+    }
+    printf("OK\n");
+
+    time_start = apr_time_now();
+    apr_thread_rwlock_unlock(thread_rwlock);
+
+    /* printf("%-60s", "    Waiting for threads to exit"); */
+    for (i = 0; i < num_threads; ++i) {
+        apr_thread_join(&s[i], t[i]);
+    }
+    /* printf("OK\n"); */
+
+    time_stop = apr_time_now();
+    printf("microseconds: %" APR_INT64_T_FMT " usec\n",
+           (time_stop - time_start));
+    if (mutex_counter != max_counter * num_threads)
+        printf("error: counter = %ld\n", mutex_counter);
+
+    return APR_SUCCESS;
+}
+
+int main(int argc, const char * const *argv)
+{
+    apr_status_t rv;
+    char errmsg[200];
+    apr_getopt_t *opt;
+    char optchar;
+    const char *optarg;
+
+    printf("APR Lock Performance Test\n==============\n\n");
+        
+    apr_initialize();
+    atexit(apr_terminate);
+
+    if (apr_pool_create(&pool, NULL) != APR_SUCCESS)
+        exit(-1);
+
+    if ((rv = apr_getopt_init(&opt, pool, argc, argv)) != APR_SUCCESS) {
+        fprintf(stderr, "Could not set up to parse options: [%d] %s\n",
+                rv, apr_strerror(rv, errmsg, sizeof errmsg));
+        exit(-1);
+    }
+        
+    while ((rv = apr_getopt(opt, "c:v", &optchar, &optarg)) == APR_SUCCESS) {
+        if (optchar == 'c') {
+            max_counter = atol(optarg);
+        }
+        else if (optchar == 'v') {
+            verbose = 1;
+        }
+    }
+
+    if (rv != APR_SUCCESS && rv != APR_EOF) {
+        fprintf(stderr, "Could not parse options: [%d] %s\n",
+                rv, apr_strerror(rv, errmsg, sizeof errmsg));
+        exit(-1);
+    }
+
+    for (i = 1; i <= MAX_THREADS; ++i) {
+        if ((rv = test_thread_mutex(i)) != APR_SUCCESS) {
+            fprintf(stderr,"thread_mutex test failed : [%d] %s\n",
+                    rv, apr_strerror(rv, (char*)errmsg, 200));
+            exit(-3);
+        }
+
+        if ((rv = test_thread_mutex_nested(i)) != APR_SUCCESS) {
+            fprintf(stderr,"thread_mutex (NESTED) test failed : [%d] %s\n",
+                    rv, apr_strerror(rv, (char*)errmsg, 200));
+            exit(-4);
+        }
+
+        if ((rv = test_thread_rwlock(i)) != APR_SUCCESS) {
+            fprintf(stderr,"thread_rwlock test failed : [%d] %s\n",
+                    rv, apr_strerror(rv, (char*)errmsg, 200));
+            exit(-6);
+        }
+    }
+
+    return 0;
+}
+
+#endif /* !APR_HAS_THREADS */

Deleted: vendor/apache/apr/1.5.2/test/testmmap.c
===================================================================
--- vendor/apache/apr/dist/test/testmmap.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testmmap.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,155 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-#include "apr_mmap.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "apr_file_io.h"
-#include "apr_strings.h"
-
-/* hmmm, what is a truly portable define for the max path
- * length on a platform?
- */
-#define PATH_LEN 255
-#define TEST_STRING "This is the MMAP data file."APR_EOL_STR
-
-#if !APR_HAS_MMAP
-static void not_implemented(abts_case *tc, void *data)
-{
-    ABTS_NOT_IMPL(tc, "User functions");
-}
-
-#else
-
-static apr_mmap_t *themmap = NULL;
-static apr_file_t *thefile = NULL;
-static char *file1;
-static apr_finfo_t thisfinfo;
-static apr_size_t thisfsize;
-
-static void create_filename(abts_case *tc, void *data)
-{
-    char *oldfileptr;
-
-    apr_filepath_get(&file1, 0, p);
-#ifndef NETWARE
-#ifdef WIN32
-    ABTS_TRUE(tc, file1[1] == ':');
-#else
-    ABTS_TRUE(tc, file1[0] == '/');
-#endif
-#endif
-    ABTS_TRUE(tc, file1[strlen(file1) - 1] != '/');
-
-    oldfileptr = file1;
-    file1 = apr_pstrcat(p, file1,"/data/mmap_datafile.txt" ,NULL);
-    ABTS_TRUE(tc, oldfileptr != file1);
-}
-
-static void test_file_close(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_file_close(thefile);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-   
-static void test_file_open(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_file_open(&thefile, file1, APR_FOPEN_READ, APR_UREAD | APR_GREAD, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_PTR_NOTNULL(tc, thefile);
-}
-   
-static void test_get_filesize(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_file_info_get(&thisfinfo, APR_FINFO_NORM, thefile);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_ASSERT(tc, "File size mismatch", thisfsize == thisfinfo.size);
-}
-
-static void test_mmap_create(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_mmap_create(&themmap, thefile, 0, (apr_size_t) thisfinfo.size, 
-		                 APR_MMAP_READ, p);
-    ABTS_PTR_NOTNULL(tc, themmap);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void test_mmap_contents(abts_case *tc, void *data)
-{
-    
-    ABTS_PTR_NOTNULL(tc, themmap);
-    ABTS_PTR_NOTNULL(tc, themmap->mm);
-    ABTS_SIZE_EQUAL(tc, thisfsize, themmap->size);
-
-    /* Must use nEquals since the string is not guaranteed to be NULL terminated */
-    ABTS_STR_NEQUAL(tc, themmap->mm, TEST_STRING, thisfsize);
-}
-
-static void test_mmap_delete(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    ABTS_PTR_NOTNULL(tc, themmap);
-    rv = apr_mmap_delete(themmap);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void test_mmap_offset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    void *addr;
-
-    ABTS_PTR_NOTNULL(tc, themmap);
-    rv = apr_mmap_offset(&addr, themmap, 5);
-
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    /* Must use nEquals since the string is not guaranteed to be NULL terminated */
-    ABTS_STR_NEQUAL(tc, addr, TEST_STRING + 5, thisfsize-5);
-}
-#endif
-
-abts_suite *testmmap(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-#if APR_HAS_MMAP    
-    thisfsize = strlen(TEST_STRING);
-
-    abts_run_test(suite, create_filename, NULL);
-    abts_run_test(suite, test_file_open, NULL);
-    abts_run_test(suite, test_get_filesize, NULL);
-    abts_run_test(suite, test_mmap_create, NULL);
-    abts_run_test(suite, test_mmap_contents, NULL);
-    abts_run_test(suite, test_mmap_offset, NULL);
-    abts_run_test(suite, test_mmap_delete, NULL);
-    abts_run_test(suite, test_file_close, NULL);
-#else
-    abts_run_test(suite, not_implemented, NULL);
-#endif
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testmmap.c (from rev 9273, vendor/apache/apr/dist/test/testmmap.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testmmap.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testmmap.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,165 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "apr_mmap.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_lib.h"
+#include "apr_file_io.h"
+#include "apr_strings.h"
+
+/* hmmm, what is a truly portable define for the max path
+ * length on a platform?
+ */
+#define PATH_LEN 255
+
+#if !APR_HAS_MMAP
+static void not_implemented(abts_case *tc, void *data)
+{
+    ABTS_NOT_IMPL(tc, "MMAP functions");
+}
+
+#else
+
+static char test_string[256]; /* read from the datafile */
+static apr_mmap_t *themmap = NULL;
+static apr_file_t *thefile = NULL;
+static char *file1;
+static apr_finfo_t thisfinfo;
+static apr_size_t thisfsize;
+
+static void create_filename(abts_case *tc, void *data)
+{
+    char *oldfileptr;
+
+    apr_filepath_get(&file1, 0, p);
+#ifndef NETWARE
+#ifdef WIN32
+    ABTS_TRUE(tc, file1[1] == ':');
+#else
+    ABTS_TRUE(tc, file1[0] == '/');
+#endif
+#endif
+    ABTS_TRUE(tc, file1[strlen(file1) - 1] != '/');
+
+    oldfileptr = file1;
+    file1 = apr_pstrcat(p, file1,"/data/mmap_datafile.txt" ,NULL);
+    ABTS_TRUE(tc, oldfileptr != file1);
+}
+
+static void test_file_close(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_file_close(thefile);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+   
+static void read_expected_contents(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_size_t nbytes = sizeof(test_string) - 1;
+
+    rv = apr_file_read(thefile, test_string, &nbytes);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    test_string[nbytes] = '\0';
+    thisfsize = strlen(test_string);
+}
+
+static void test_file_open(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_file_open(&thefile, file1, APR_FOPEN_READ, APR_UREAD | APR_GREAD, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_PTR_NOTNULL(tc, thefile);
+}
+   
+static void test_get_filesize(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_file_info_get(&thisfinfo, APR_FINFO_NORM, thefile);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_ASSERT(tc, "File size mismatch", thisfsize == thisfinfo.size);
+}
+
+static void test_mmap_create(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_mmap_create(&themmap, thefile, 0, (apr_size_t) thisfinfo.size, 
+		                 APR_MMAP_READ, p);
+    ABTS_PTR_NOTNULL(tc, themmap);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void test_mmap_contents(abts_case *tc, void *data)
+{
+    
+    ABTS_PTR_NOTNULL(tc, themmap);
+    ABTS_PTR_NOTNULL(tc, themmap->mm);
+    ABTS_SIZE_EQUAL(tc, thisfsize, themmap->size);
+
+    /* Must use nEquals since the string is not guaranteed to be NULL terminated */
+    ABTS_STR_NEQUAL(tc, themmap->mm, test_string, thisfsize);
+}
+
+static void test_mmap_delete(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    ABTS_PTR_NOTNULL(tc, themmap);
+    rv = apr_mmap_delete(themmap);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void test_mmap_offset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    void *addr;
+
+    ABTS_PTR_NOTNULL(tc, themmap);
+    rv = apr_mmap_offset(&addr, themmap, 5);
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    /* Must use nEquals since the string is not guaranteed to be NULL terminated */
+    ABTS_STR_NEQUAL(tc, addr, test_string + 5, thisfsize-5);
+}
+#endif
+
+abts_suite *testmmap(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+#if APR_HAS_MMAP    
+    abts_run_test(suite, create_filename, NULL);
+    abts_run_test(suite, test_file_open, NULL);
+    abts_run_test(suite, read_expected_contents, NULL);
+    abts_run_test(suite, test_get_filesize, NULL);
+    abts_run_test(suite, test_mmap_create, NULL);
+    abts_run_test(suite, test_mmap_contents, NULL);
+    abts_run_test(suite, test_mmap_offset, NULL);
+    abts_run_test(suite, test_mmap_delete, NULL);
+    abts_run_test(suite, test_file_close, NULL);
+#else
+    abts_run_test(suite, not_implemented, NULL);
+#endif
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testmutexscope.c
===================================================================
--- vendor/apache/apr/dist/test/testmutexscope.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testmutexscope.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,219 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <assert.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "apr.h"
-#include "apr_general.h"
-#include "apr_proc_mutex.h"
-#include "apr_global_mutex.h"
-#include "apr_thread_proc.h"
-
-#if !APR_HAS_THREADS
-int main(void)
-{
-    printf("This test requires APR thread support.\n");
-    return 0;
-}
-
-#else /* APR_HAS_THREADS */
-
-static apr_thread_mutex_t *thread_mutex;
-static apr_proc_mutex_t *proc_mutex;
-static apr_global_mutex_t *global_mutex;
-static apr_pool_t *p;
-static volatile int counter;
-typedef enum {TEST_GLOBAL, TEST_PROC} test_mode_e;
-
-static void lock_init(apr_lockmech_e mech, test_mode_e test_mode)
-{
-    if (test_mode == TEST_PROC) {
-        assert(apr_proc_mutex_create(&proc_mutex,
-                                     NULL,
-                                     mech,
-                                     p) == APR_SUCCESS);
-    }
-    else {
-        assert(apr_global_mutex_create(&global_mutex,
-                                       NULL,
-                                       mech,
-                                       p) == APR_SUCCESS);
-    }
-}
-
-static void lock_destroy(test_mode_e test_mode)
-{
-    if (test_mode == TEST_PROC) {
-        assert(apr_proc_mutex_destroy(proc_mutex) == APR_SUCCESS);
-    }
-    else {
-        assert(apr_global_mutex_destroy(global_mutex) == APR_SUCCESS);
-    }
-}
-
-static void lock_grab(test_mode_e test_mode)
-{
-    if (test_mode == TEST_PROC) {
-        assert(apr_proc_mutex_lock(proc_mutex) == APR_SUCCESS);
-    }
-    else {
-        assert(apr_global_mutex_lock(global_mutex) == APR_SUCCESS);
-    }
-}
-
-static void lock_release(test_mode_e test_mode)
-{
-    if (test_mode == TEST_PROC) {
-        assert(apr_proc_mutex_unlock(proc_mutex) == APR_SUCCESS);
-    }
-    else {
-        assert(apr_global_mutex_unlock(global_mutex) == APR_SUCCESS);
-    }
-}
-
-static void * APR_THREAD_FUNC eachThread(apr_thread_t *id, void *p)
-{
-    test_mode_e test_mode = (test_mode_e)p;
-
-    lock_grab(test_mode);
-    ++counter;
-    assert(apr_thread_mutex_lock(thread_mutex) == APR_SUCCESS);
-    assert(apr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS);
-    lock_release(test_mode);
-    apr_thread_exit(id, 0);
-    return NULL;
-}
-
-static void test_mech_mode(apr_lockmech_e mech, const char *mech_name,
-                           test_mode_e test_mode)
-{
-  apr_thread_t *threads[20];
-  int numThreads = 5;
-  int i;
-  apr_status_t rv;
-
-  printf("Trying %s mutexes with mechanism `%s'...\n",
-         test_mode == TEST_GLOBAL ? "global" : "proc", mech_name);
-
-  assert(numThreads <= sizeof(threads) / sizeof(threads[0]));
-
-  assert(apr_pool_create(&p, NULL) == APR_SUCCESS);
-
-  assert(apr_thread_mutex_create(&thread_mutex, 0, p) == APR_SUCCESS);
-  assert(apr_thread_mutex_lock(thread_mutex) == APR_SUCCESS);
-  
-  lock_init(mech, test_mode);
-
-  counter = 0;
-
-  i = 0;
-  while (i < numThreads)
-  {
-    rv = apr_thread_create(&threads[i],
-                           NULL,
-                           eachThread,
-                           (void *)test_mode,
-                           p);
-    if (rv != APR_SUCCESS) {
-      fprintf(stderr, "apr_thread_create->%d\n", rv);
-      exit(1);
-    }
-    ++i;
-  }
-
-  apr_sleep(apr_time_from_sec(5));
-
-  if (test_mode == TEST_PROC) {
-      printf("  Mutex mechanism `%s' is %sglobal in scope on this platform.\n",
-             mech_name, counter == 1 ? "" : "not ");
-  }
-  else {
-      if (counter != 1) {
-          fprintf(stderr, "\n!!!apr_global_mutex operations are broken on this "
-                  "platform for mutex mechanism `%s'!\n"
-                  "They don't block out threads within the same process.\n",
-                  mech_name);
-          fprintf(stderr, "counter value: %d\n", counter);
-          exit(1);
-      }
-      else {
-          printf("  no problems encountered...\n");
-      }
-  }
-  
-  assert(apr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS);
-
-  i = 0;
-  while (i < numThreads)
-  {
-    apr_status_t ignored;
-
-    rv = apr_thread_join(&ignored,
-                         threads[i]);
-    assert(rv == APR_SUCCESS);
-    ++i;
-  }
-
-  lock_destroy(test_mode);
-  apr_thread_mutex_destroy(thread_mutex);
-  apr_pool_destroy(p);
-}
-
-static void test_mech(apr_lockmech_e mech, const char *mech_name)
-{
-    test_mech_mode(mech, mech_name, TEST_PROC);
-    test_mech_mode(mech, mech_name, TEST_GLOBAL);
-}
-
-int main(void)
-{
-    struct {
-        apr_lockmech_e mech;
-        const char *mech_name;
-    } lockmechs[] = {
-        {APR_LOCK_DEFAULT, "default"}
-#if APR_HAS_FLOCK_SERIALIZE
-        ,{APR_LOCK_FLOCK, "flock"}
-#endif
-#if APR_HAS_SYSVSEM_SERIALIZE
-        ,{APR_LOCK_SYSVSEM, "sysvsem"}
-#endif
-#if APR_HAS_POSIXSEM_SERIALIZE
-        ,{APR_LOCK_POSIXSEM, "posix"}
-#endif
-#if APR_HAS_FCNTL_SERIALIZE
-        ,{APR_LOCK_FCNTL, "fcntl"}
-#endif
-#if APR_HAS_PROC_PTHREAD_SERIALIZE
-        ,{APR_LOCK_PROC_PTHREAD, "proc_pthread"}
-#endif
-    };
-    int i;
-        
-    assert(apr_initialize() == APR_SUCCESS);
-
-    for (i = 0; i < sizeof(lockmechs) / sizeof(lockmechs[0]); i++) {
-        test_mech(lockmechs[i].mech, lockmechs[i].mech_name);
-    }
-    
-    apr_terminate();
-    return 0;
-}
-
-#endif /* APR_HAS_THREADS */

Copied: vendor/apache/apr/1.5.2/test/testmutexscope.c (from rev 9273, vendor/apache/apr/dist/test/testmutexscope.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testmutexscope.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testmutexscope.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,221 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* This program won't run or check correctly if assert() is disabled. */
+#undef NDEBUG
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "apr.h"
+#include "apr_general.h"
+#include "apr_proc_mutex.h"
+#include "apr_global_mutex.h"
+#include "apr_thread_proc.h"
+
+#if !APR_HAS_THREADS
+int main(void)
+{
+    printf("This test requires APR thread support.\n");
+    return 0;
+}
+
+#else /* APR_HAS_THREADS */
+
+static apr_thread_mutex_t *thread_mutex;
+static apr_proc_mutex_t *proc_mutex;
+static apr_global_mutex_t *global_mutex;
+static apr_pool_t *p;
+static volatile int counter;
+typedef enum {TEST_GLOBAL, TEST_PROC} test_mode_e;
+
+static void lock_init(apr_lockmech_e mech, test_mode_e test_mode)
+{
+    if (test_mode == TEST_PROC) {
+        assert(apr_proc_mutex_create(&proc_mutex,
+                                     NULL,
+                                     mech,
+                                     p) == APR_SUCCESS);
+    }
+    else {
+        assert(apr_global_mutex_create(&global_mutex,
+                                       NULL,
+                                       mech,
+                                       p) == APR_SUCCESS);
+    }
+}
+
+static void lock_destroy(test_mode_e test_mode)
+{
+    if (test_mode == TEST_PROC) {
+        assert(apr_proc_mutex_destroy(proc_mutex) == APR_SUCCESS);
+    }
+    else {
+        assert(apr_global_mutex_destroy(global_mutex) == APR_SUCCESS);
+    }
+}
+
+static void lock_grab(test_mode_e test_mode)
+{
+    if (test_mode == TEST_PROC) {
+        assert(apr_proc_mutex_lock(proc_mutex) == APR_SUCCESS);
+    }
+    else {
+        assert(apr_global_mutex_lock(global_mutex) == APR_SUCCESS);
+    }
+}
+
+static void lock_release(test_mode_e test_mode)
+{
+    if (test_mode == TEST_PROC) {
+        assert(apr_proc_mutex_unlock(proc_mutex) == APR_SUCCESS);
+    }
+    else {
+        assert(apr_global_mutex_unlock(global_mutex) == APR_SUCCESS);
+    }
+}
+
+static void * APR_THREAD_FUNC eachThread(apr_thread_t *id, void *p)
+{
+    test_mode_e test_mode = (test_mode_e)p;
+
+    lock_grab(test_mode);
+    ++counter;
+    assert(apr_thread_mutex_lock(thread_mutex) == APR_SUCCESS);
+    assert(apr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS);
+    lock_release(test_mode);
+    apr_thread_exit(id, 0);
+    return NULL;
+}
+
+static void test_mech_mode(apr_lockmech_e mech, const char *mech_name,
+                           test_mode_e test_mode)
+{
+  apr_thread_t *threads[20];
+  int numThreads = 5;
+  int i;
+  apr_status_t rv;
+
+  printf("Trying %s mutexes with mechanism `%s'...\n",
+         test_mode == TEST_GLOBAL ? "global" : "proc", mech_name);
+
+  assert(numThreads <= sizeof(threads) / sizeof(threads[0]));
+
+  assert(apr_pool_create(&p, NULL) == APR_SUCCESS);
+
+  assert(apr_thread_mutex_create(&thread_mutex, 0, p) == APR_SUCCESS);
+  assert(apr_thread_mutex_lock(thread_mutex) == APR_SUCCESS);
+  
+  lock_init(mech, test_mode);
+
+  counter = 0;
+
+  i = 0;
+  while (i < numThreads)
+  {
+    rv = apr_thread_create(&threads[i],
+                           NULL,
+                           eachThread,
+                           (void *)test_mode,
+                           p);
+    if (rv != APR_SUCCESS) {
+      fprintf(stderr, "apr_thread_create->%d\n", rv);
+      exit(1);
+    }
+    ++i;
+  }
+
+  apr_sleep(apr_time_from_sec(5));
+
+  if (test_mode == TEST_PROC) {
+      printf("  Mutex mechanism `%s' is %sglobal in scope on this platform.\n",
+             mech_name, counter == 1 ? "" : "not ");
+  }
+  else {
+      if (counter != 1) {
+          fprintf(stderr, "\n!!!apr_global_mutex operations are broken on this "
+                  "platform for mutex mechanism `%s'!\n"
+                  "They don't block out threads within the same process.\n",
+                  mech_name);
+          fprintf(stderr, "counter value: %d\n", counter);
+          exit(1);
+      }
+      else {
+          printf("  no problems encountered...\n");
+      }
+  }
+  
+  assert(apr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS);
+
+  i = 0;
+  while (i < numThreads)
+  {
+    apr_status_t ignored;
+
+    rv = apr_thread_join(&ignored,
+                         threads[i]);
+    assert(rv == APR_SUCCESS);
+    ++i;
+  }
+
+  lock_destroy(test_mode);
+  apr_thread_mutex_destroy(thread_mutex);
+  apr_pool_destroy(p);
+}
+
+static void test_mech(apr_lockmech_e mech, const char *mech_name)
+{
+    test_mech_mode(mech, mech_name, TEST_PROC);
+    test_mech_mode(mech, mech_name, TEST_GLOBAL);
+}
+
+int main(void)
+{
+    struct {
+        apr_lockmech_e mech;
+        const char *mech_name;
+    } lockmechs[] = {
+        {APR_LOCK_DEFAULT, "default"}
+#if APR_HAS_FLOCK_SERIALIZE
+        ,{APR_LOCK_FLOCK, "flock"}
+#endif
+#if APR_HAS_SYSVSEM_SERIALIZE
+        ,{APR_LOCK_SYSVSEM, "sysvsem"}
+#endif
+#if APR_HAS_POSIXSEM_SERIALIZE
+        ,{APR_LOCK_POSIXSEM, "posix"}
+#endif
+#if APR_HAS_FCNTL_SERIALIZE
+        ,{APR_LOCK_FCNTL, "fcntl"}
+#endif
+#if APR_HAS_PROC_PTHREAD_SERIALIZE
+        ,{APR_LOCK_PROC_PTHREAD, "proc_pthread"}
+#endif
+    };
+    int i;
+        
+    assert(apr_initialize() == APR_SUCCESS);
+
+    for (i = 0; i < sizeof(lockmechs) / sizeof(lockmechs[0]); i++) {
+        test_mech(lockmechs[i].mech, lockmechs[i].mech_name);
+    }
+    
+    apr_terminate();
+    return 0;
+}
+
+#endif /* APR_HAS_THREADS */

Deleted: vendor/apache/apr/1.5.2/test/testpoll.c
===================================================================
--- vendor/apache/apr/dist/test/testpoll.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testpoll.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,877 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-#include "apr_strings.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "apr_network_io.h"
-#include "apr_poll.h"
-
-#define SMALL_NUM_SOCKETS 3
-/* We can't use 64 here, because some platforms *ahem* Solaris *ahem* have
- * a default limit of 64 open file descriptors per process.  If we use
- * 64, the test will fail even though the code is correct.
- */
-#define LARGE_NUM_SOCKETS 50
-
-static apr_socket_t *s[LARGE_NUM_SOCKETS];
-static apr_sockaddr_t *sa[LARGE_NUM_SOCKETS];
-static apr_pollset_t *pollset;
-static apr_pollcb_t *pollcb;
-
-/* ###: tests surrounded by ifdef OLD_POLL_INTERFACE either need to be
- * converted to use the pollset interface or removed. */
-
-#ifdef OLD_POLL_INTERFACE
-static apr_pollfd_t *pollarray;
-static apr_pollfd_t *pollarray_large;
-#endif
-
-static void make_socket(apr_socket_t **sock, apr_sockaddr_t **sa, 
-                        apr_port_t port, apr_pool_t *p, abts_case *tc)
-{
-    apr_status_t rv;
-
-    rv = apr_sockaddr_info_get(sa, "127.0.0.1", APR_UNSPEC, port, 0, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_socket_create(sock, (*sa)->family, SOCK_DGRAM, 0, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_socket_bind((*sock), (*sa));
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-#ifdef OLD_POLL_INTERFACE
-static void check_sockets(const apr_pollfd_t *pollarray, 
-                          apr_socket_t **sockarray, int which, int pollin, 
-                          abts_case *tc)
-{
-    apr_status_t rv;
-    apr_int16_t event;
-    char *str;
-
-    rv = apr_poll_revents_get(&event, sockarray[which], 
-                              (apr_pollfd_t *)pollarray);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    if (pollin) {
-        str = apr_psprintf(p, "Socket %d not signalled when it should be",
-                           which);
-        ABTS_ASSERT(tc, str, event & APR_POLLIN);
-    } else {
-        str = apr_psprintf(p, "Socket %d signalled when it should not be",
-                           which);
-        ABTS_ASSERT(tc, str, !(event & APR_POLLIN));
-    }
-}
-#endif
-
-static void send_msg(apr_socket_t **sockarray, apr_sockaddr_t **sas, int which,
-                     abts_case *tc)
-{
-    apr_size_t len = 5;
-    apr_status_t rv;
-
-    ABTS_PTR_NOTNULL(tc, sockarray[which]);
-
-    rv = apr_socket_sendto(sockarray[which], sas[which], 0, "hello", &len);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_SIZE_EQUAL(tc, strlen("hello"), len);
-}
-
-static void recv_msg(apr_socket_t **sockarray, int which, apr_pool_t *p, 
-                     abts_case *tc)
-{
-    apr_size_t buflen = 5;
-    char *buffer = apr_pcalloc(p, sizeof(char) * (buflen + 1));
-    apr_sockaddr_t *recsa;
-    apr_status_t rv;
-
-    ABTS_PTR_NOTNULL(tc, sockarray[which]);
-
-    apr_sockaddr_info_get(&recsa, "127.0.0.1", APR_UNSPEC, 7770, 0, p);
-
-    rv = apr_socket_recvfrom(recsa, sockarray[which], 0, buffer, &buflen);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_SIZE_EQUAL(tc, strlen("hello"), buflen);
-    ABTS_STR_EQUAL(tc, "hello", buffer);
-}
-
-    
-static void create_all_sockets(abts_case *tc, void *data)
-{
-    int i;
-
-    for (i = 0; i < LARGE_NUM_SOCKETS; i++){
-        make_socket(&s[i], &sa[i], 7777 + i, p, tc);
-    }
-}
-       
-#ifdef OLD_POLL_INTERFACE
-static void setup_small_poll(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int i;
-
-    rv = apr_poll_setup(&pollarray, SMALL_NUM_SOCKETS, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    
-    for (i = 0; i < SMALL_NUM_SOCKETS;i++){
-        ABTS_INT_EQUAL(tc, 0, pollarray[i].reqevents);
-        ABTS_INT_EQUAL(tc, 0, pollarray[i].rtnevents);
-
-        rv = apr_poll_socket_add(pollarray, s[i], APR_POLLIN);
-        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-        ABTS_PTR_EQUAL(tc, s[i], pollarray[i].desc.s);
-    }
-}
-
-static void setup_large_poll(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int i;
-
-    rv = apr_poll_setup(&pollarray_large, LARGE_NUM_SOCKETS, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    
-    for (i = 0; i < LARGE_NUM_SOCKETS;i++){
-        ABTS_INT_EQUAL(tc, 0, pollarray_large[i].reqevents);
-        ABTS_INT_EQUAL(tc, 0, pollarray_large[i].rtnevents);
-
-        rv = apr_poll_socket_add(pollarray_large, s[i], APR_POLLIN);
-        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-        ABTS_PTR_EQUAL(tc, s[i], pollarray_large[i].desc.s);
-    }
-}
-
-static void nomessage(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int srv = SMALL_NUM_SOCKETS;
-
-    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    check_sockets(pollarray, s, 0, 0, tc);
-    check_sockets(pollarray, s, 1, 0, tc);
-    check_sockets(pollarray, s, 2, 0, tc);
-}
-
-static void send_2(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int srv = SMALL_NUM_SOCKETS;
-
-    send_msg(s, sa, 2, tc);
-
-    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    check_sockets(pollarray, s, 0, 0, tc);
-    check_sockets(pollarray, s, 1, 0, tc);
-    check_sockets(pollarray, s, 2, 1, tc);
-}
-
-static void recv_2_send_1(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int srv = SMALL_NUM_SOCKETS;
-
-    recv_msg(s, 2, p, tc);
-    send_msg(s, sa, 1, tc);
-
-    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    check_sockets(pollarray, s, 0, 0, tc);
-    check_sockets(pollarray, s, 1, 1, tc);
-    check_sockets(pollarray, s, 2, 0, tc);
-}
-
-static void send_2_signaled_1(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int srv = SMALL_NUM_SOCKETS;
-
-    send_msg(s, sa, 2, tc);
-
-    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    check_sockets(pollarray, s, 0, 0, tc);
-    check_sockets(pollarray, s, 1, 1, tc);
-    check_sockets(pollarray, s, 2, 1, tc);
-}
-
-static void recv_1_send_0(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int srv = SMALL_NUM_SOCKETS;
-
-    recv_msg(s, 1, p, tc);
-    send_msg(s, sa, 0, tc);
-
-    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    check_sockets(pollarray, s, 0, 1, tc);
-    check_sockets(pollarray, s, 1, 0, tc);
-    check_sockets(pollarray, s, 2, 1, tc);
-}
-
-static void clear_all_signalled(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int srv = SMALL_NUM_SOCKETS;
-
-    recv_msg(s, 0, p, tc);
-    recv_msg(s, 2, p, tc);
-
-    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    check_sockets(pollarray, s, 0, 0, tc);
-    check_sockets(pollarray, s, 1, 0, tc);
-    check_sockets(pollarray, s, 2, 0, tc);
-}
-
-static void send_large_pollarray(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int lrv = LARGE_NUM_SOCKETS;
-    int i;
-
-    send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc);
-
-    rv = apr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, 
-                  2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    for (i = 0; i < LARGE_NUM_SOCKETS; i++) {
-        if (i == (LARGE_NUM_SOCKETS - 1)) {
-            check_sockets(pollarray_large, s, i, 1, tc);
-        }
-        else {
-            check_sockets(pollarray_large, s, i, 0, tc);
-        }
-    }
-}
-
-static void recv_large_pollarray(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int lrv = LARGE_NUM_SOCKETS;
-    int i;
-
-    recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc);
-
-    rv = apr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, 
-                  2 * APR_USEC_PER_SEC);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-
-    for (i = 0; i < LARGE_NUM_SOCKETS; i++) {
-        check_sockets(pollarray_large, s, i, 0, tc);
-    }
-}
-#endif
-
-static void setup_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    rv = apr_pollset_create(&pollset, LARGE_NUM_SOCKETS, p, 0);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void multi_event_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_pollfd_t socket_pollfd;
-    int lrv;
-    const apr_pollfd_t *descs = NULL;
-
-    ABTS_PTR_NOTNULL(tc, s[0]);
-    socket_pollfd.desc_type = APR_POLL_SOCKET;
-    socket_pollfd.reqevents = APR_POLLIN | APR_POLLOUT;
-    socket_pollfd.desc.s = s[0];
-    socket_pollfd.client_data = s[0];
-    rv = apr_pollset_add(pollset, &socket_pollfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    send_msg(s, sa, 0, tc);
-
-    rv = apr_pollset_poll(pollset, -1, &lrv, &descs);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    if (lrv == 1) {
-        int ev = descs[0].rtnevents;
-        ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
-        ABTS_PTR_EQUAL(tc, s[0],  descs[0].client_data);
-        ABTS_ASSERT(tc, "either or both of APR_POLLIN, APR_POLLOUT returned",
-                    ((ev & APR_POLLIN) != 0) || ((ev & APR_POLLOUT) != 0));
-    }
-    else if (lrv == 2) {
-        ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
-        ABTS_PTR_EQUAL(tc, s[0], descs[0].client_data);
-        ABTS_PTR_EQUAL(tc, s[0], descs[1].desc.s);
-        ABTS_PTR_EQUAL(tc, s[0], descs[1].client_data);
-        ABTS_ASSERT(tc, "returned events incorrect",
-                    ((descs[0].rtnevents | descs[1].rtnevents)
-                     == (APR_POLLIN | APR_POLLOUT))
-                    && descs[0].rtnevents != descs[1].rtnevents);
-    }
-    else {
-        ABTS_ASSERT(tc, "either one or two events returned",
-                    lrv == 1 || lrv == 2);
-    }
-
-    recv_msg(s, 0, p, tc);
-
-    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
-    ABTS_INT_EQUAL(tc, 0, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 1, lrv);
-    ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
-    ABTS_INT_EQUAL(tc, APR_POLLOUT, descs[0].rtnevents);
-    ABTS_PTR_EQUAL(tc, s[0],  descs[0].client_data);
-
-    rv = apr_pollset_remove(pollset, &socket_pollfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-                         
-static void add_sockets_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int i;
-
-    for (i = 0; i < LARGE_NUM_SOCKETS;i++){
-        apr_pollfd_t socket_pollfd;
-
-        ABTS_PTR_NOTNULL(tc, s[i]);
-
-        socket_pollfd.desc_type = APR_POLL_SOCKET;
-        socket_pollfd.reqevents = APR_POLLIN;
-        socket_pollfd.desc.s = s[i];
-        socket_pollfd.client_data = s[i];
-        rv = apr_pollset_add(pollset, &socket_pollfd);
-        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    }
-}
-
-static void nomessage_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int lrv;
-    const apr_pollfd_t *descs = NULL;
-
-    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 0, lrv);
-    ABTS_PTR_EQUAL(tc, NULL, descs);
-}
-
-static void send0_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    const apr_pollfd_t *descs = NULL;
-    int num;
-
-    send_msg(s, sa, 0, tc);
-    rv = apr_pollset_poll(pollset, -1, &num, &descs);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, 1, num);
-    ABTS_PTR_NOTNULL(tc, descs);
-
-    ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
-    ABTS_PTR_EQUAL(tc, s[0], descs[0].client_data);
-}
-
-static void recv0_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int lrv;
-    const apr_pollfd_t *descs = NULL;
-
-    recv_msg(s, 0, p, tc);
-    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 0, lrv);
-    ABTS_PTR_EQUAL(tc, NULL, descs);
-}
-
-static void send_middle_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    const apr_pollfd_t *descs = NULL;
-    int num;
-    
-    send_msg(s, sa, 2, tc);
-    send_msg(s, sa, 5, tc);
-    rv = apr_pollset_poll(pollset, -1, &num, &descs);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_PTR_NOTNULL(tc, descs);
-    ABTS_ASSERT(tc, "either one or two events returned",
-                num == 1 || num == 2);
-
-    /* The poll might only see the first sent message, in which
-     * case we just don't bother checking this assertion */
-    if (num == 2) {
-        ABTS_ASSERT(tc, "Incorrect socket in result set",
-                    ((descs[0].desc.s == s[2]) && (descs[1].desc.s == s[5])) ||
-                    ((descs[0].desc.s == s[5]) && (descs[1].desc.s == s[2])));
-    }
-}
-
-static void clear_middle_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int lrv;
-    const apr_pollfd_t *descs = NULL;
-
-    recv_msg(s, 2, p, tc);
-    recv_msg(s, 5, p, tc);
-
-    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 0, lrv);
-    ABTS_PTR_EQUAL(tc, NULL, descs);
-}
-
-static void send_last_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    const apr_pollfd_t *descs = NULL;
-    int num;
-    
-    send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc);
-    rv = apr_pollset_poll(pollset, -1, &num, &descs);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, 1, num);
-    ABTS_PTR_NOTNULL(tc, descs);
-
-    ABTS_PTR_EQUAL(tc, s[LARGE_NUM_SOCKETS - 1], descs[0].desc.s);
-    ABTS_PTR_EQUAL(tc, s[LARGE_NUM_SOCKETS - 1], descs[0].client_data);
-}
-
-static void clear_last_pollset(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int lrv;
-    const apr_pollfd_t *descs = NULL;
-
-    recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc);
-
-    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 0, lrv);
-    ABTS_PTR_EQUAL(tc, NULL, descs);
-}
-
-static void close_all_sockets(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    int i;
-
-    for (i = 0; i < LARGE_NUM_SOCKETS; i++){
-        rv = apr_socket_close(s[i]);
-        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    }
-}
-
-static void pollset_remove(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_pollset_t *pollset;
-    const apr_pollfd_t *hot_files;
-    apr_pollfd_t pfd;
-    apr_int32_t num;
-
-    rv = apr_pollset_create(&pollset, 5, p, 0);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    pfd.p = p;
-    pfd.desc_type = APR_POLL_SOCKET;
-    pfd.reqevents = APR_POLLOUT;
-
-    pfd.desc.s = s[0];
-    pfd.client_data = (void *)1;
-    rv = apr_pollset_add(pollset, &pfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    pfd.desc.s = s[1];
-    pfd.client_data = (void *)2;
-    rv = apr_pollset_add(pollset, &pfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    pfd.desc.s = s[2];
-    pfd.client_data = (void *)3;
-    rv = apr_pollset_add(pollset, &pfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    pfd.desc.s = s[3];
-    pfd.client_data = (void *)4;
-    rv = apr_pollset_add(pollset, &pfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, 4, num);
-
-    /* now remove the pollset element referring to desc s[1] */
-    pfd.desc.s = s[1];
-    pfd.client_data = (void *)999; /* not used on this call */
-    rv = apr_pollset_remove(pollset, &pfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    /* this time only three should match */
-    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, 3, num);
-    ABTS_PTR_EQUAL(tc, (void *)1, hot_files[0].client_data);
-    ABTS_PTR_EQUAL(tc, s[0], hot_files[0].desc.s);
-    ABTS_PTR_EQUAL(tc, (void *)3, hot_files[1].client_data);
-    ABTS_PTR_EQUAL(tc, s[2], hot_files[1].desc.s);
-    ABTS_PTR_EQUAL(tc, (void *)4, hot_files[2].client_data);
-    ABTS_PTR_EQUAL(tc, s[3], hot_files[2].desc.s);
-    
-    /* now remove the pollset elements referring to desc s[2] */
-    pfd.desc.s = s[2];
-    pfd.client_data = (void *)999; /* not used on this call */
-    rv = apr_pollset_remove(pollset, &pfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    /* this time only two should match */
-    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, 2, num);
-    ABTS_ASSERT(tc, "Incorrect socket in result set",
-            ((hot_files[0].desc.s == s[0]) && (hot_files[1].desc.s == s[3]))  ||
-            ((hot_files[0].desc.s == s[3]) && (hot_files[1].desc.s == s[0])));
-    ABTS_ASSERT(tc, "Incorrect client data in result set",
-            ((hot_files[0].client_data == (void *)1) &&
-             (hot_files[1].client_data == (void *)4)) ||
-            ((hot_files[0].client_data == (void *)4) &&
-             (hot_files[1].client_data == (void *)1)));
-}
-
-#define POLLCB_PREREQ \
-    do { \
-        if (pollcb == NULL) { \
-            ABTS_NOT_IMPL(tc, "pollcb interface not supported"); \
-            return; \
-        } \
-    } while (0)
-
-static void setup_pollcb(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    rv = apr_pollcb_create(&pollcb, LARGE_NUM_SOCKETS, p, 0);
-    if (rv == APR_ENOTIMPL) {
-        pollcb = NULL;
-        ABTS_NOT_IMPL(tc, "pollcb interface not supported");
-    }
-    else {
-        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    }
-}
-
-typedef struct pollcb_baton_t {
-    abts_case *tc;
-    int count;
-} pollcb_baton_t;
-
-static apr_status_t trigger_pollcb_cb(void* baton, apr_pollfd_t *descriptor)
-{
-    pollcb_baton_t* pcb = (pollcb_baton_t*) baton;
-    ABTS_PTR_EQUAL(pcb->tc, s[0], descriptor->desc.s);
-    ABTS_PTR_EQUAL(pcb->tc, s[0], descriptor->client_data);
-    pcb->count++;
-    return APR_SUCCESS;
-}
-
-static void trigger_pollcb(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_pollfd_t socket_pollfd;
-    pollcb_baton_t pcb;
-    
-    POLLCB_PREREQ;
-
-    ABTS_PTR_NOTNULL(tc, s[0]);
-    socket_pollfd.desc_type = APR_POLL_SOCKET;
-    socket_pollfd.reqevents = APR_POLLIN;
-    socket_pollfd.desc.s = s[0];
-    socket_pollfd.client_data = s[0];
-    rv = apr_pollcb_add(pollcb, &socket_pollfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    
-    send_msg(s, sa, 0, tc);
-    pcb.tc = tc;
-    pcb.count = 0;
-    rv = apr_pollcb_poll(pollcb, -1, trigger_pollcb_cb, &pcb);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_INT_EQUAL(tc, 1, pcb.count);
-
-    rv = apr_pollcb_remove(pollcb, &socket_pollfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void timeout_pollcb(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    pollcb_baton_t pcb;
-
-    POLLCB_PREREQ;
-
-    pcb.count = 0;
-    pcb.tc = tc;
-
-    rv = apr_pollcb_poll(pollcb, 1, trigger_pollcb_cb, &pcb);    
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 0, pcb.count);
-}
-
-static void timeout_pollin_pollcb(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    pollcb_baton_t pcb;
-    apr_pollfd_t socket_pollfd;
-
-    POLLCB_PREREQ;
-
-    recv_msg(s, 0, p, tc);
-    
-    ABTS_PTR_NOTNULL(tc, s[0]);
-    socket_pollfd.desc_type = APR_POLL_SOCKET;
-    socket_pollfd.reqevents = APR_POLLIN;
-    socket_pollfd.desc.s = s[0];
-    socket_pollfd.client_data = s[0];
-    rv = apr_pollcb_add(pollcb, &socket_pollfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    
-    pcb.count = 0;
-    pcb.tc = tc;
-    
-    rv = apr_pollcb_poll(pollcb, 1, trigger_pollcb_cb, &pcb);    
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 0, pcb.count);
-
-    rv = apr_pollcb_remove(pollcb, &socket_pollfd);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-static void pollset_default(abts_case *tc, void *data)
-{
-    apr_status_t rv1, rv2;
-    apr_pollset_t *pollset;
-
-    /* verify that APR will successfully create a pollset if an invalid method
-     * is specified as long as APR_POLLSET_NODEFAULT isn't specified
-     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
-     * least one create call will succeed after having to switch to the default
-     * type)
-     */
-    rv1 = apr_pollset_create_ex(&pollset, 1, p, 0, APR_POLLSET_PORT);
-
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
-    ABTS_PTR_NOTNULL(tc, pollset);
-    
-    rv1 = apr_pollset_create_ex(&pollset, 1, p, 0, APR_POLLSET_KQUEUE);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
-    ABTS_PTR_NOTNULL(tc, pollset);
-
-    /* verify that APR will fail to create a pollset if an invalid method is
-     * specified along with APR_POLLSET_NODEFAULT
-     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
-     * least one create call will fail since it can't switch to the default
-     * type)
-     */
-    rv1 = apr_pollset_create_ex(&pollset, 1, p, APR_POLLSET_NODEFAULT,
-                               APR_POLLSET_PORT);
-
-    if (rv1 == APR_SUCCESS) {
-        ABTS_PTR_NOTNULL(tc, pollset);
-    }
-    
-    rv2 = apr_pollset_create_ex(&pollset, 1, p, APR_POLLSET_NODEFAULT,
-                               APR_POLLSET_KQUEUE);
-    if (rv2 == APR_SUCCESS) {
-        ABTS_PTR_NOTNULL(tc, pollset);
-    }
-    
-    ABTS_ASSERT(tc,
-                "failure using APR_POLLSET_NODEFAULT with unsupported method",
-                rv1 != APR_SUCCESS || rv2 != APR_SUCCESS);
-}
-
-static void pollcb_default(abts_case *tc, void *data)
-{
-    apr_status_t rv1, rv2;
-    apr_pollcb_t *pollcb;
-
-    /* verify that APR will successfully create a pollcb if an invalid method
-     * is specified as long as APR_POLLSET_NODEFAULT isn't specified
-     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
-     * least one create call will succeed after having to switch to the default
-     * type)
-     */
-    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, 0, APR_POLLSET_PORT);
-    if (rv1 == APR_ENOTIMPL) {
-        ABTS_NOT_IMPL(tc, "pollcb interface not supported");
-        return;
-    }
-
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
-    ABTS_PTR_NOTNULL(tc, pollcb);
-    
-    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, 0, APR_POLLSET_KQUEUE);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
-    ABTS_PTR_NOTNULL(tc, pollcb);
-
-    /* verify that APR will fail to create a pollcb if an invalid method is
-     * specified along with APR_POLLSET_NODEFAULT
-     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
-     * least one create call will fail since it can't switch to the default
-     * type)
-     */
-    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, APR_POLLSET_NODEFAULT,
-                               APR_POLLSET_PORT);
-
-    if (rv1 == APR_SUCCESS) {
-        ABTS_PTR_NOTNULL(tc, pollcb);
-    }
-    
-    rv2 = apr_pollcb_create_ex(&pollcb, 1, p, APR_POLLSET_NODEFAULT,
-                               APR_POLLSET_KQUEUE);
-    if (rv2 == APR_SUCCESS) {
-        ABTS_PTR_NOTNULL(tc, pollcb);
-    }
-    
-    ABTS_ASSERT(tc,
-                "failure using APR_POLLSET_NODEFAULT with unsupported method",
-                rv1 != APR_SUCCESS || rv2 != APR_SUCCESS);
-
-
-    /* verify basic behavior for another method fallback case (this caused
-     * APR to crash before r834029)
-     */
-
-    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, 0, APR_POLLSET_POLL);
-    if (rv1 != APR_ENOTIMPL) {
-        ABTS_INT_EQUAL(tc, rv1, APR_SUCCESS);
-        ABTS_PTR_NOTNULL(tc, pollcb);
-    }
-}
-
-static void justsleep(abts_case *tc, void *data)
-{
-    apr_int32_t nsds;
-    const apr_pollfd_t *hot_files;
-    apr_pollset_t *pollset;
-    apr_status_t rv;
-    apr_time_t t1, t2;
-    int i;
-    apr_pollset_method_e methods[] = {
-        APR_POLLSET_DEFAULT,
-        APR_POLLSET_SELECT,
-        APR_POLLSET_KQUEUE,
-        APR_POLLSET_PORT,
-        APR_POLLSET_EPOLL,
-        APR_POLLSET_POLL};
-
-    nsds = 1;
-    t1 = apr_time_now();
-    rv = apr_poll(NULL, 0, &nsds, apr_time_from_msec(200));
-    t2 = apr_time_now();
-    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-    ABTS_INT_EQUAL(tc, 0, nsds);
-    ABTS_ASSERT(tc,
-                "apr_poll() didn't sleep",
-                (t2 - t1) > apr_time_from_msec(100));
-
-    for (i = 0; i < sizeof methods / sizeof methods[0]; i++) {
-        rv = apr_pollset_create_ex(&pollset, 5, p, 0, methods[i]);
-        if (rv != APR_ENOTIMPL) {
-            ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-            nsds = 1;
-            t1 = apr_time_now();
-            rv = apr_pollset_poll(pollset, apr_time_from_msec(200), &nsds,
-                                  &hot_files);
-            t2 = apr_time_now();
-            ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-            ABTS_INT_EQUAL(tc, 0, nsds);
-            ABTS_ASSERT(tc,
-                        "apr_pollset_poll() didn't sleep",
-                        (t2 - t1) > apr_time_from_msec(100));
-
-            rv = apr_pollset_destroy(pollset);
-            ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-        }
-
-        rv = apr_pollcb_create_ex(&pollcb, 5, p, 0, methods[0]);
-        if (rv != APR_ENOTIMPL) {
-            ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-            t1 = apr_time_now();
-            rv = apr_pollcb_poll(pollcb, apr_time_from_msec(200), NULL, NULL);
-            t2 = apr_time_now();
-            ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
-            ABTS_ASSERT(tc,
-                        "apr_pollcb_poll() didn't sleep",
-                        (t2 - t1) > apr_time_from_msec(100));
-
-            /* no apr_pollcb_destroy() */
-        }
-    }
-}
-
-abts_suite *testpoll(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, create_all_sockets, NULL);
-
-#ifdef OLD_POLL_INTERFACE
-    abts_run_test(suite, setup_small_poll, NULL);
-    abts_run_test(suite, setup_large_poll, NULL);
-    abts_run_test(suite, nomessage, NULL);
-    abts_run_test(suite, send_2, NULL);
-    abts_run_test(suite, recv_2_send_1, NULL);
-    abts_run_test(suite, send_2_signaled_1, NULL);
-    abts_run_test(suite, recv_1_send_0, NULL);
-    abts_run_test(suite, clear_all_signalled, NULL);
-    abts_run_test(suite, send_large_pollarray, NULL);
-    abts_run_test(suite, recv_large_pollarray, NULL);
-#endif
-
-    abts_run_test(suite, setup_pollset, NULL);
-    abts_run_test(suite, multi_event_pollset, NULL);
-    abts_run_test(suite, add_sockets_pollset, NULL);
-    abts_run_test(suite, nomessage_pollset, NULL);
-    abts_run_test(suite, send0_pollset, NULL);
-    abts_run_test(suite, recv0_pollset, NULL);
-    abts_run_test(suite, send_middle_pollset, NULL);
-    abts_run_test(suite, clear_middle_pollset, NULL);
-    abts_run_test(suite, send_last_pollset, NULL);
-    abts_run_test(suite, clear_last_pollset, NULL);
-    abts_run_test(suite, pollset_remove, NULL);
-    abts_run_test(suite, close_all_sockets, NULL);
-    abts_run_test(suite, create_all_sockets, NULL);
-    abts_run_test(suite, setup_pollcb, NULL);
-    abts_run_test(suite, trigger_pollcb, NULL);
-    abts_run_test(suite, timeout_pollcb, NULL);
-    abts_run_test(suite, timeout_pollin_pollcb, NULL);
-    abts_run_test(suite, close_all_sockets, NULL);
-    abts_run_test(suite, pollset_default, NULL);
-    abts_run_test(suite, pollcb_default, NULL);
-    abts_run_test(suite, justsleep, NULL);
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testpoll.c (from rev 9273, vendor/apache/apr/dist/test/testpoll.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testpoll.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testpoll.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,926 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "apr_strings.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_lib.h"
+#include "apr_network_io.h"
+#include "apr_poll.h"
+
+#define SMALL_NUM_SOCKETS 3
+/* We can't use 64 here, because some platforms *ahem* Solaris *ahem* have
+ * a default limit of 64 open file descriptors per process.  If we use
+ * 64, the test will fail even though the code is correct.
+ */
+#define LARGE_NUM_SOCKETS 50
+
+static apr_socket_t *s[LARGE_NUM_SOCKETS];
+static apr_sockaddr_t *sa[LARGE_NUM_SOCKETS];
+static apr_pollset_t *pollset;
+static apr_pollcb_t *pollcb;
+
+/* ###: tests surrounded by ifdef OLD_POLL_INTERFACE either need to be
+ * converted to use the pollset interface or removed. */
+
+#ifdef OLD_POLL_INTERFACE
+static apr_pollfd_t *pollarray;
+static apr_pollfd_t *pollarray_large;
+#endif
+
+/* default_pollset_impl can be overridden temporarily to control
+ * testcases which don't specify an implementation explicitly
+ */
+static int default_pollset_impl = APR_POLLSET_DEFAULT;
+
+static void make_socket(apr_socket_t **sock, apr_sockaddr_t **sa, 
+                        apr_port_t port, apr_pool_t *p, abts_case *tc)
+{
+    apr_status_t rv;
+
+    rv = apr_sockaddr_info_get(sa, "127.0.0.1", APR_UNSPEC, port, 0, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_socket_create(sock, (*sa)->family, SOCK_DGRAM, 0, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_socket_bind((*sock), (*sa));
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+#ifdef OLD_POLL_INTERFACE
+static void check_sockets(const apr_pollfd_t *pollarray, 
+                          apr_socket_t **sockarray, int which, int pollin, 
+                          abts_case *tc)
+{
+    apr_status_t rv;
+    apr_int16_t event;
+    char *str;
+
+    rv = apr_poll_revents_get(&event, sockarray[which], 
+                              (apr_pollfd_t *)pollarray);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    if (pollin) {
+        str = apr_psprintf(p, "Socket %d not signalled when it should be",
+                           which);
+        ABTS_ASSERT(tc, str, event & APR_POLLIN);
+    } else {
+        str = apr_psprintf(p, "Socket %d signalled when it should not be",
+                           which);
+        ABTS_ASSERT(tc, str, !(event & APR_POLLIN));
+    }
+}
+#endif
+
+static void send_msg(apr_socket_t **sockarray, apr_sockaddr_t **sas, int which,
+                     abts_case *tc)
+{
+    apr_size_t len = 5;
+    apr_status_t rv;
+
+    ABTS_PTR_NOTNULL(tc, sockarray[which]);
+
+    rv = apr_socket_sendto(sockarray[which], sas[which], 0, "hello", &len);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_SIZE_EQUAL(tc, strlen("hello"), len);
+}
+
+static void recv_msg(apr_socket_t **sockarray, int which, apr_pool_t *p, 
+                     abts_case *tc)
+{
+    apr_size_t buflen = 5;
+    char *buffer = apr_pcalloc(p, sizeof(char) * (buflen + 1));
+    apr_sockaddr_t *recsa;
+    apr_status_t rv;
+
+    ABTS_PTR_NOTNULL(tc, sockarray[which]);
+
+    apr_sockaddr_info_get(&recsa, "127.0.0.1", APR_UNSPEC, 7770, 0, p);
+
+    rv = apr_socket_recvfrom(recsa, sockarray[which], 0, buffer, &buflen);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_SIZE_EQUAL(tc, strlen("hello"), buflen);
+    ABTS_STR_EQUAL(tc, "hello", buffer);
+}
+
+    
+static void create_all_sockets(abts_case *tc, void *data)
+{
+    int i;
+
+    for (i = 0; i < LARGE_NUM_SOCKETS; i++){
+        make_socket(&s[i], &sa[i], 7777 + i, p, tc);
+    }
+}
+       
+#ifdef OLD_POLL_INTERFACE
+static void setup_small_poll(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int i;
+
+    rv = apr_poll_setup(&pollarray, SMALL_NUM_SOCKETS, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    
+    for (i = 0; i < SMALL_NUM_SOCKETS;i++){
+        ABTS_INT_EQUAL(tc, 0, pollarray[i].reqevents);
+        ABTS_INT_EQUAL(tc, 0, pollarray[i].rtnevents);
+
+        rv = apr_poll_socket_add(pollarray, s[i], APR_POLLIN);
+        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+        ABTS_PTR_EQUAL(tc, s[i], pollarray[i].desc.s);
+    }
+}
+
+static void setup_large_poll(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int i;
+
+    rv = apr_poll_setup(&pollarray_large, LARGE_NUM_SOCKETS, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    
+    for (i = 0; i < LARGE_NUM_SOCKETS;i++){
+        ABTS_INT_EQUAL(tc, 0, pollarray_large[i].reqevents);
+        ABTS_INT_EQUAL(tc, 0, pollarray_large[i].rtnevents);
+
+        rv = apr_poll_socket_add(pollarray_large, s[i], APR_POLLIN);
+        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+        ABTS_PTR_EQUAL(tc, s[i], pollarray_large[i].desc.s);
+    }
+}
+
+static void nomessage(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int srv = SMALL_NUM_SOCKETS;
+
+    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    check_sockets(pollarray, s, 0, 0, tc);
+    check_sockets(pollarray, s, 1, 0, tc);
+    check_sockets(pollarray, s, 2, 0, tc);
+}
+
+static void send_2(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int srv = SMALL_NUM_SOCKETS;
+
+    send_msg(s, sa, 2, tc);
+
+    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    check_sockets(pollarray, s, 0, 0, tc);
+    check_sockets(pollarray, s, 1, 0, tc);
+    check_sockets(pollarray, s, 2, 1, tc);
+}
+
+static void recv_2_send_1(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int srv = SMALL_NUM_SOCKETS;
+
+    recv_msg(s, 2, p, tc);
+    send_msg(s, sa, 1, tc);
+
+    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    check_sockets(pollarray, s, 0, 0, tc);
+    check_sockets(pollarray, s, 1, 1, tc);
+    check_sockets(pollarray, s, 2, 0, tc);
+}
+
+static void send_2_signaled_1(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int srv = SMALL_NUM_SOCKETS;
+
+    send_msg(s, sa, 2, tc);
+
+    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    check_sockets(pollarray, s, 0, 0, tc);
+    check_sockets(pollarray, s, 1, 1, tc);
+    check_sockets(pollarray, s, 2, 1, tc);
+}
+
+static void recv_1_send_0(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int srv = SMALL_NUM_SOCKETS;
+
+    recv_msg(s, 1, p, tc);
+    send_msg(s, sa, 0, tc);
+
+    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    check_sockets(pollarray, s, 0, 1, tc);
+    check_sockets(pollarray, s, 1, 0, tc);
+    check_sockets(pollarray, s, 2, 1, tc);
+}
+
+static void clear_all_signalled(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int srv = SMALL_NUM_SOCKETS;
+
+    recv_msg(s, 0, p, tc);
+    recv_msg(s, 2, p, tc);
+
+    rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    check_sockets(pollarray, s, 0, 0, tc);
+    check_sockets(pollarray, s, 1, 0, tc);
+    check_sockets(pollarray, s, 2, 0, tc);
+}
+
+static void send_large_pollarray(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int lrv = LARGE_NUM_SOCKETS;
+    int i;
+
+    send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc);
+
+    rv = apr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, 
+                  2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    for (i = 0; i < LARGE_NUM_SOCKETS; i++) {
+        if (i == (LARGE_NUM_SOCKETS - 1)) {
+            check_sockets(pollarray_large, s, i, 1, tc);
+        }
+        else {
+            check_sockets(pollarray_large, s, i, 0, tc);
+        }
+    }
+}
+
+static void recv_large_pollarray(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int lrv = LARGE_NUM_SOCKETS;
+    int i;
+
+    recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc);
+
+    rv = apr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, 
+                  2 * APR_USEC_PER_SEC);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+
+    for (i = 0; i < LARGE_NUM_SOCKETS; i++) {
+        check_sockets(pollarray_large, s, i, 0, tc);
+    }
+}
+#endif
+
+static void setup_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    rv = apr_pollset_create_ex(&pollset, LARGE_NUM_SOCKETS, p, 0,
+                               default_pollset_impl);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void multi_event_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_pollfd_t socket_pollfd;
+    int lrv;
+    const apr_pollfd_t *descs = NULL;
+
+    ABTS_PTR_NOTNULL(tc, s[0]);
+    socket_pollfd.desc_type = APR_POLL_SOCKET;
+    socket_pollfd.reqevents = APR_POLLIN | APR_POLLOUT;
+    socket_pollfd.desc.s = s[0];
+    socket_pollfd.client_data = s[0];
+    rv = apr_pollset_add(pollset, &socket_pollfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    send_msg(s, sa, 0, tc);
+
+    rv = apr_pollset_poll(pollset, -1, &lrv, &descs);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    if (lrv == 1) {
+        int ev = descs[0].rtnevents;
+        ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
+        ABTS_PTR_EQUAL(tc, s[0],  descs[0].client_data);
+        ABTS_ASSERT(tc, "either or both of APR_POLLIN, APR_POLLOUT returned",
+                    ((ev & APR_POLLIN) != 0) || ((ev & APR_POLLOUT) != 0));
+    }
+    else if (lrv == 2) {
+        ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
+        ABTS_PTR_EQUAL(tc, s[0], descs[0].client_data);
+        ABTS_PTR_EQUAL(tc, s[0], descs[1].desc.s);
+        ABTS_PTR_EQUAL(tc, s[0], descs[1].client_data);
+        ABTS_ASSERT(tc, "returned events incorrect",
+                    ((descs[0].rtnevents | descs[1].rtnevents)
+                     == (APR_POLLIN | APR_POLLOUT))
+                    && descs[0].rtnevents != descs[1].rtnevents);
+    }
+    else {
+        ABTS_ASSERT(tc, "either one or two events returned",
+                    lrv == 1 || lrv == 2);
+    }
+
+    recv_msg(s, 0, p, tc);
+
+    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
+    ABTS_INT_EQUAL(tc, 0, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 1, lrv);
+    ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
+    ABTS_INT_EQUAL(tc, APR_POLLOUT, descs[0].rtnevents);
+    ABTS_PTR_EQUAL(tc, s[0],  descs[0].client_data);
+
+    rv = apr_pollset_remove(pollset, &socket_pollfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+                         
+static void add_sockets_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int i;
+
+    for (i = 0; i < LARGE_NUM_SOCKETS;i++){
+        apr_pollfd_t socket_pollfd;
+
+        ABTS_PTR_NOTNULL(tc, s[i]);
+
+        socket_pollfd.desc_type = APR_POLL_SOCKET;
+        socket_pollfd.reqevents = APR_POLLIN;
+        socket_pollfd.desc.s = s[i];
+        socket_pollfd.client_data = s[i];
+        rv = apr_pollset_add(pollset, &socket_pollfd);
+        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    }
+}
+
+static void nomessage_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int lrv;
+    const apr_pollfd_t *descs = NULL;
+
+    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 0, lrv);
+    ABTS_PTR_EQUAL(tc, NULL, descs);
+}
+
+static void send0_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    const apr_pollfd_t *descs = NULL;
+    int num;
+
+    send_msg(s, sa, 0, tc);
+    rv = apr_pollset_poll(pollset, -1, &num, &descs);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, 1, num);
+    ABTS_PTR_NOTNULL(tc, descs);
+
+    ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s);
+    ABTS_PTR_EQUAL(tc, s[0], descs[0].client_data);
+}
+
+static void recv0_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int lrv;
+    const apr_pollfd_t *descs = NULL;
+
+    recv_msg(s, 0, p, tc);
+    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 0, lrv);
+    ABTS_PTR_EQUAL(tc, NULL, descs);
+}
+
+static void send_middle_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    const apr_pollfd_t *descs = NULL;
+    int num;
+    
+    send_msg(s, sa, 2, tc);
+    send_msg(s, sa, 5, tc);
+    rv = apr_pollset_poll(pollset, -1, &num, &descs);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_PTR_NOTNULL(tc, descs);
+    ABTS_ASSERT(tc, "either one or two events returned",
+                num == 1 || num == 2);
+
+    /* The poll might only see the first sent message, in which
+     * case we just don't bother checking this assertion */
+    if (num == 2) {
+        ABTS_ASSERT(tc, "Incorrect socket in result set",
+                    ((descs[0].desc.s == s[2]) && (descs[1].desc.s == s[5])) ||
+                    ((descs[0].desc.s == s[5]) && (descs[1].desc.s == s[2])));
+    }
+}
+
+static void clear_middle_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int lrv;
+    const apr_pollfd_t *descs = NULL;
+
+    recv_msg(s, 2, p, tc);
+    recv_msg(s, 5, p, tc);
+
+    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 0, lrv);
+    ABTS_PTR_EQUAL(tc, NULL, descs);
+}
+
+static void send_last_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    const apr_pollfd_t *descs = NULL;
+    int num;
+    
+    send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc);
+    rv = apr_pollset_poll(pollset, -1, &num, &descs);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, 1, num);
+    ABTS_PTR_NOTNULL(tc, descs);
+
+    ABTS_PTR_EQUAL(tc, s[LARGE_NUM_SOCKETS - 1], descs[0].desc.s);
+    ABTS_PTR_EQUAL(tc, s[LARGE_NUM_SOCKETS - 1], descs[0].client_data);
+}
+
+static void clear_last_pollset(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int lrv;
+    const apr_pollfd_t *descs = NULL;
+
+    recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc);
+
+    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 0, lrv);
+    ABTS_PTR_EQUAL(tc, NULL, descs);
+}
+
+static void close_all_sockets(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    int i;
+
+    for (i = 0; i < LARGE_NUM_SOCKETS; i++){
+        rv = apr_socket_close(s[i]);
+        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    }
+}
+
+static void pollset_remove(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_pollset_t *pollset;
+    const apr_pollfd_t *hot_files;
+    apr_pollfd_t pfd;
+    apr_int32_t num;
+
+    rv = apr_pollset_create_ex(&pollset, 5, p, 0,
+                               default_pollset_impl);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    pfd.p = p;
+    pfd.desc_type = APR_POLL_SOCKET;
+    pfd.reqevents = APR_POLLOUT;
+
+    pfd.desc.s = s[0];
+    pfd.client_data = (void *)1;
+    rv = apr_pollset_add(pollset, &pfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    pfd.desc.s = s[1];
+    pfd.client_data = (void *)2;
+    rv = apr_pollset_add(pollset, &pfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    pfd.desc.s = s[2];
+    pfd.client_data = (void *)3;
+    rv = apr_pollset_add(pollset, &pfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    pfd.desc.s = s[3];
+    pfd.client_data = (void *)4;
+    rv = apr_pollset_add(pollset, &pfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, 4, num);
+
+    /* now remove the pollset element referring to desc s[1] */
+    pfd.desc.s = s[1];
+    pfd.client_data = (void *)999; /* not used on this call */
+    rv = apr_pollset_remove(pollset, &pfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    /* this time only three should match */
+    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, 3, num);
+    ABTS_PTR_EQUAL(tc, (void *)1, hot_files[0].client_data);
+    ABTS_PTR_EQUAL(tc, s[0], hot_files[0].desc.s);
+    ABTS_PTR_EQUAL(tc, (void *)3, hot_files[1].client_data);
+    ABTS_PTR_EQUAL(tc, s[2], hot_files[1].desc.s);
+    ABTS_PTR_EQUAL(tc, (void *)4, hot_files[2].client_data);
+    ABTS_PTR_EQUAL(tc, s[3], hot_files[2].desc.s);
+    
+    /* now remove the pollset elements referring to desc s[2] */
+    pfd.desc.s = s[2];
+    pfd.client_data = (void *)999; /* not used on this call */
+    rv = apr_pollset_remove(pollset, &pfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    /* this time only two should match */
+    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, 2, num);
+    ABTS_ASSERT(tc, "Incorrect socket in result set",
+            ((hot_files[0].desc.s == s[0]) && (hot_files[1].desc.s == s[3]))  ||
+            ((hot_files[0].desc.s == s[3]) && (hot_files[1].desc.s == s[0])));
+    ABTS_ASSERT(tc, "Incorrect client data in result set",
+            ((hot_files[0].client_data == (void *)1) &&
+             (hot_files[1].client_data == (void *)4)) ||
+            ((hot_files[0].client_data == (void *)4) &&
+             (hot_files[1].client_data == (void *)1)));
+}
+
+#define POLLCB_PREREQ \
+    do { \
+        if (pollcb == NULL) { \
+            ABTS_NOT_IMPL(tc, "pollcb interface not supported"); \
+            return; \
+        } \
+    } while (0)
+
+static void setup_pollcb(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    rv = apr_pollcb_create(&pollcb, LARGE_NUM_SOCKETS, p, 0);
+    if (rv == APR_ENOTIMPL) {
+        pollcb = NULL;
+        ABTS_NOT_IMPL(tc, "pollcb interface not supported");
+    }
+    else {
+        ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    }
+}
+
+typedef struct pollcb_baton_t {
+    abts_case *tc;
+    int count;
+} pollcb_baton_t;
+
+static apr_status_t trigger_pollcb_cb(void* baton, apr_pollfd_t *descriptor)
+{
+    pollcb_baton_t* pcb = (pollcb_baton_t*) baton;
+    ABTS_PTR_EQUAL(pcb->tc, s[0], descriptor->desc.s);
+    ABTS_PTR_EQUAL(pcb->tc, s[0], descriptor->client_data);
+    pcb->count++;
+    return APR_SUCCESS;
+}
+
+static void trigger_pollcb(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_pollfd_t socket_pollfd;
+    pollcb_baton_t pcb;
+    
+    POLLCB_PREREQ;
+
+    ABTS_PTR_NOTNULL(tc, s[0]);
+    socket_pollfd.desc_type = APR_POLL_SOCKET;
+    socket_pollfd.reqevents = APR_POLLIN;
+    socket_pollfd.desc.s = s[0];
+    socket_pollfd.client_data = s[0];
+    rv = apr_pollcb_add(pollcb, &socket_pollfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    
+    send_msg(s, sa, 0, tc);
+    pcb.tc = tc;
+    pcb.count = 0;
+    rv = apr_pollcb_poll(pollcb, -1, trigger_pollcb_cb, &pcb);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, 1, pcb.count);
+
+    rv = apr_pollcb_remove(pollcb, &socket_pollfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void timeout_pollcb(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    pollcb_baton_t pcb;
+
+    POLLCB_PREREQ;
+
+    pcb.count = 0;
+    pcb.tc = tc;
+
+    rv = apr_pollcb_poll(pollcb, 1, trigger_pollcb_cb, &pcb);    
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 0, pcb.count);
+}
+
+static void timeout_pollin_pollcb(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    pollcb_baton_t pcb;
+    apr_pollfd_t socket_pollfd;
+
+    POLLCB_PREREQ;
+
+    recv_msg(s, 0, p, tc);
+    
+    ABTS_PTR_NOTNULL(tc, s[0]);
+    socket_pollfd.desc_type = APR_POLL_SOCKET;
+    socket_pollfd.reqevents = APR_POLLIN;
+    socket_pollfd.desc.s = s[0];
+    socket_pollfd.client_data = s[0];
+    rv = apr_pollcb_add(pollcb, &socket_pollfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    
+    pcb.count = 0;
+    pcb.tc = tc;
+    
+    rv = apr_pollcb_poll(pollcb, 1, trigger_pollcb_cb, &pcb);    
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 0, pcb.count);
+
+    rv = apr_pollcb_remove(pollcb, &socket_pollfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+static void pollset_default(abts_case *tc, void *data)
+{
+    apr_status_t rv1, rv2;
+    apr_pollset_t *pollset;
+
+    /* verify that APR will successfully create a pollset if an invalid method
+     * is specified as long as APR_POLLSET_NODEFAULT isn't specified
+     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
+     * least one create call will succeed after having to switch to the default
+     * type)
+     */
+    rv1 = apr_pollset_create_ex(&pollset, 1, p, 0, APR_POLLSET_PORT);
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
+    ABTS_PTR_NOTNULL(tc, pollset);
+    
+    rv1 = apr_pollset_create_ex(&pollset, 1, p, 0, APR_POLLSET_KQUEUE);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
+    ABTS_PTR_NOTNULL(tc, pollset);
+
+    /* verify that APR will fail to create a pollset if an invalid method is
+     * specified along with APR_POLLSET_NODEFAULT
+     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
+     * least one create call will fail since it can't switch to the default
+     * type)
+     */
+    rv1 = apr_pollset_create_ex(&pollset, 1, p, APR_POLLSET_NODEFAULT,
+                               APR_POLLSET_PORT);
+
+    if (rv1 == APR_SUCCESS) {
+        ABTS_PTR_NOTNULL(tc, pollset);
+    }
+    
+    rv2 = apr_pollset_create_ex(&pollset, 1, p, APR_POLLSET_NODEFAULT,
+                               APR_POLLSET_KQUEUE);
+    if (rv2 == APR_SUCCESS) {
+        ABTS_PTR_NOTNULL(tc, pollset);
+    }
+    
+    ABTS_ASSERT(tc,
+                "failure using APR_POLLSET_NODEFAULT with unsupported method",
+                rv1 != APR_SUCCESS || rv2 != APR_SUCCESS);
+}
+
+static void pollcb_default(abts_case *tc, void *data)
+{
+    apr_status_t rv1, rv2;
+    apr_pollcb_t *pollcb;
+
+    /* verify that APR will successfully create a pollcb if an invalid method
+     * is specified as long as APR_POLLSET_NODEFAULT isn't specified
+     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
+     * least one create call will succeed after having to switch to the default
+     * type)
+     */
+    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, 0, APR_POLLSET_PORT);
+    if (rv1 == APR_ENOTIMPL) {
+        ABTS_NOT_IMPL(tc, "pollcb interface not supported");
+        return;
+    }
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
+    ABTS_PTR_NOTNULL(tc, pollcb);
+    
+    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, 0, APR_POLLSET_KQUEUE);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv1);
+    ABTS_PTR_NOTNULL(tc, pollcb);
+
+    /* verify that APR will fail to create a pollcb if an invalid method is
+     * specified along with APR_POLLSET_NODEFAULT
+     * (no platform has both APR_POLLSET_PORT and APR_POLLSET_KQUEUE, so at
+     * least one create call will fail since it can't switch to the default
+     * type)
+     */
+    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, APR_POLLSET_NODEFAULT,
+                               APR_POLLSET_PORT);
+
+    if (rv1 == APR_SUCCESS) {
+        ABTS_PTR_NOTNULL(tc, pollcb);
+    }
+    
+    rv2 = apr_pollcb_create_ex(&pollcb, 1, p, APR_POLLSET_NODEFAULT,
+                               APR_POLLSET_KQUEUE);
+    if (rv2 == APR_SUCCESS) {
+        ABTS_PTR_NOTNULL(tc, pollcb);
+    }
+    
+    ABTS_ASSERT(tc,
+                "failure using APR_POLLSET_NODEFAULT with unsupported method",
+                rv1 != APR_SUCCESS || rv2 != APR_SUCCESS);
+
+
+    /* verify basic behavior for another method fallback case (this caused
+     * APR to crash before r834029)
+     */
+
+    rv1 = apr_pollcb_create_ex(&pollcb, 1, p, 0, APR_POLLSET_POLL);
+    if (rv1 != APR_ENOTIMPL) {
+        ABTS_INT_EQUAL(tc, rv1, APR_SUCCESS);
+        ABTS_PTR_NOTNULL(tc, pollcb);
+    }
+}
+
+static void pollset_wakeup(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_pollfd_t socket_pollfd;
+    apr_pollset_t *pollset;
+    apr_int32_t num;
+    const apr_pollfd_t *descriptors;
+
+    rv = apr_pollset_create_ex(&pollset, 1, p, APR_POLLSET_WAKEABLE,
+                               default_pollset_impl);
+    if (rv == APR_ENOTIMPL) {
+        ABTS_NOT_IMPL(tc, "apr_pollset_wakeup() not supported");
+        return;
+    }
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    /* send wakeup but no data; apr_pollset_poll() should return APR_EINTR */
+    rv = apr_pollset_wakeup(pollset);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_pollset_poll(pollset, -1, &num, &descriptors);
+    ABTS_INT_EQUAL(tc, APR_EINTR, rv);
+
+    /* send wakeup and data; apr_pollset_poll() should return APR_SUCCESS */
+    socket_pollfd.desc_type = APR_POLL_SOCKET;
+    socket_pollfd.reqevents = APR_POLLIN;
+    socket_pollfd.desc.s = s[0];
+    socket_pollfd.client_data = s[0];
+    rv = apr_pollset_add(pollset, &socket_pollfd);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    send_msg(s, sa, 0, tc);
+
+    rv = apr_pollset_wakeup(pollset);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_pollset_poll(pollset, -1, &num, &descriptors);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_INT_EQUAL(tc, 1, num);
+}
+
+static void justsleep(abts_case *tc, void *data)
+{
+    apr_int32_t nsds;
+    const apr_pollfd_t *hot_files;
+    apr_pollset_t *pollset;
+    apr_status_t rv;
+    apr_time_t t1, t2;
+    int i;
+    apr_pollset_method_e methods[] = {
+        APR_POLLSET_DEFAULT,
+        APR_POLLSET_SELECT,
+        APR_POLLSET_KQUEUE,
+        APR_POLLSET_PORT,
+        APR_POLLSET_EPOLL,
+        APR_POLLSET_POLL};
+
+    nsds = 1;
+    t1 = apr_time_now();
+    rv = apr_poll(NULL, 0, &nsds, apr_time_from_msec(200));
+    t2 = apr_time_now();
+    ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+    ABTS_INT_EQUAL(tc, 0, nsds);
+    ABTS_ASSERT(tc,
+                "apr_poll() didn't sleep",
+                (t2 - t1) > apr_time_from_msec(100));
+
+    for (i = 0; i < sizeof methods / sizeof methods[0]; i++) {
+        rv = apr_pollset_create_ex(&pollset, 5, p, 0, methods[i]);
+        if (rv != APR_ENOTIMPL) {
+            ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+            nsds = 1;
+            t1 = apr_time_now();
+            rv = apr_pollset_poll(pollset, apr_time_from_msec(200), &nsds,
+                                  &hot_files);
+            t2 = apr_time_now();
+            ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+            ABTS_INT_EQUAL(tc, 0, nsds);
+            ABTS_ASSERT(tc,
+                        "apr_pollset_poll() didn't sleep",
+                        (t2 - t1) > apr_time_from_msec(100));
+
+            rv = apr_pollset_destroy(pollset);
+            ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+        }
+
+        rv = apr_pollcb_create_ex(&pollcb, 5, p, 0, methods[0]);
+        if (rv != APR_ENOTIMPL) {
+            ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+            t1 = apr_time_now();
+            rv = apr_pollcb_poll(pollcb, apr_time_from_msec(200), NULL, NULL);
+            t2 = apr_time_now();
+            ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv));
+            ABTS_ASSERT(tc,
+                        "apr_pollcb_poll() didn't sleep",
+                        (t2 - t1) > apr_time_from_msec(100));
+
+            /* no apr_pollcb_destroy() */
+        }
+    }
+}
+
+abts_suite *testpoll(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, create_all_sockets, NULL);
+
+#ifdef OLD_POLL_INTERFACE
+    abts_run_test(suite, setup_small_poll, NULL);
+    abts_run_test(suite, setup_large_poll, NULL);
+    abts_run_test(suite, nomessage, NULL);
+    abts_run_test(suite, send_2, NULL);
+    abts_run_test(suite, recv_2_send_1, NULL);
+    abts_run_test(suite, send_2_signaled_1, NULL);
+    abts_run_test(suite, recv_1_send_0, NULL);
+    abts_run_test(suite, clear_all_signalled, NULL);
+    abts_run_test(suite, send_large_pollarray, NULL);
+    abts_run_test(suite, recv_large_pollarray, NULL);
+#endif
+
+    abts_run_test(suite, setup_pollset, NULL);
+    abts_run_test(suite, multi_event_pollset, NULL);
+    abts_run_test(suite, add_sockets_pollset, NULL);
+    abts_run_test(suite, nomessage_pollset, NULL);
+    abts_run_test(suite, send0_pollset, NULL);
+    abts_run_test(suite, recv0_pollset, NULL);
+    abts_run_test(suite, send_middle_pollset, NULL);
+    abts_run_test(suite, clear_middle_pollset, NULL);
+    abts_run_test(suite, send_last_pollset, NULL);
+    abts_run_test(suite, clear_last_pollset, NULL);
+    abts_run_test(suite, pollset_remove, NULL);
+    abts_run_test(suite, close_all_sockets, NULL);
+    abts_run_test(suite, create_all_sockets, NULL);
+    abts_run_test(suite, setup_pollcb, NULL);
+    abts_run_test(suite, trigger_pollcb, NULL);
+    abts_run_test(suite, timeout_pollcb, NULL);
+    abts_run_test(suite, timeout_pollin_pollcb, NULL);
+    abts_run_test(suite, pollset_wakeup, NULL);
+    abts_run_test(suite, close_all_sockets, NULL);
+    abts_run_test(suite, pollset_default, NULL);
+    abts_run_test(suite, pollcb_default, NULL);
+    abts_run_test(suite, justsleep, NULL);
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testproc.c
===================================================================
--- vendor/apache/apr/dist/test/testproc.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testproc.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,169 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_thread_proc.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include "testutil.h"
-
-#define TESTSTR "This is a test"
-
-static apr_proc_t newproc;
-
-static void test_create_proc(abts_case *tc, void *data)
-{
-    const char *args[2];
-    apr_procattr_t *attr;
-    apr_file_t *testfile = NULL;
-    apr_status_t rv;
-    apr_size_t length;
-    char *buf;
-
-    rv = apr_procattr_create(&attr, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_procattr_io_set(attr, APR_FULL_BLOCK, APR_FULL_BLOCK, 
-                             APR_NO_PIPE);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_procattr_dir_set(attr, "data");
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_procattr_cmdtype_set(attr, APR_PROGRAM_ENV);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    args[0] = "proc_child" EXTENSION;
-    args[1] = NULL;
-    
-    rv = apr_proc_create(&newproc, "../" TESTBINPATH "proc_child" EXTENSION, args, NULL, 
-                         attr, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    testfile = newproc.in;
-
-    length = strlen(TESTSTR);
-    rv = apr_file_write(testfile, TESTSTR, &length);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_SIZE_EQUAL(tc, strlen(TESTSTR), length);
-
-    testfile = newproc.out;
-    length = 256;
-    buf = apr_pcalloc(p, length);
-    rv = apr_file_read(testfile, buf, &length);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_STR_EQUAL(tc, TESTSTR, buf);
-}
-
-static void test_proc_wait(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-
-    rv = apr_proc_wait(&newproc, NULL, NULL, APR_WAIT);
-    ABTS_INT_EQUAL(tc, APR_CHILD_DONE, rv);
-}
-
-static void test_file_redir(abts_case *tc, void *data)
-{
-    apr_file_t *testout = NULL;
-    apr_file_t *testerr = NULL;
-    apr_off_t offset;
-    apr_status_t rv;
-    const char *args[2];
-    apr_procattr_t *attr;
-    apr_file_t *testfile = NULL;
-    apr_size_t length;
-    char *buf;
-
-    testfile = NULL;
-    rv = apr_file_open(&testfile, "data/stdin",
-                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
-                       APR_OS_DEFAULT, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_file_open(&testout, "data/stdout",
-                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
-                       APR_OS_DEFAULT, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_file_open(&testerr, "data/stderr",
-                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
-                       APR_OS_DEFAULT, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    length = strlen(TESTSTR);
-    apr_file_write(testfile, TESTSTR, &length);
-    offset = 0;
-    rv = apr_file_seek(testfile, APR_SET, &offset);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_ASSERT(tc, "File position mismatch, expected 0", offset == 0);
-
-    rv = apr_procattr_create(&attr, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_procattr_child_in_set(attr, testfile, NULL);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_procattr_child_out_set(attr, testout, NULL);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_procattr_child_err_set(attr, testerr, NULL);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_procattr_dir_set(attr, "data");
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_procattr_cmdtype_set(attr, APR_PROGRAM_ENV);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    args[0] = "proc_child";
-    args[1] = NULL;
-
-    rv = apr_proc_create(&newproc, "../" TESTBINPATH "proc_child" EXTENSION, args, NULL, 
-                         attr, p);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    rv = apr_proc_wait(&newproc, NULL, NULL, APR_WAIT);
-    ABTS_INT_EQUAL(tc, APR_CHILD_DONE, rv);
-
-    offset = 0;
-    rv = apr_file_seek(testout, APR_SET, &offset);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-
-    length = 256;
-    buf = apr_pcalloc(p, length);
-    rv = apr_file_read(testout, buf, &length);
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    ABTS_STR_EQUAL(tc, TESTSTR, buf);
-
-
-    apr_file_close(testfile);
-    apr_file_close(testout);
-    apr_file_close(testerr);
-
-    rv = apr_file_remove("data/stdin", p);;
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_file_remove("data/stdout", p);;
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-    rv = apr_file_remove("data/stderr", p);;
-    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
-}
-
-abts_suite *testproc(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, test_create_proc, NULL);
-    abts_run_test(suite, test_proc_wait, NULL);
-    abts_run_test(suite, test_file_redir, NULL);
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testproc.c (from rev 9273, vendor/apache/apr/dist/test/testproc.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testproc.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testproc.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,174 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_thread_proc.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include "testutil.h"
+
+#define TESTSTR "This is a test"
+
+#define PROC_CHILD_NAME TESTBINPATH "proc_child" EXTENSION
+
+static char *proc_child;
+
+static apr_proc_t newproc;
+
+static void test_create_proc(abts_case *tc, void *data)
+{
+    const char *args[2];
+    apr_procattr_t *attr;
+    apr_file_t *testfile = NULL;
+    apr_status_t rv;
+    apr_size_t length;
+    char *buf;
+
+    rv = apr_procattr_create(&attr, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_procattr_io_set(attr, APR_FULL_BLOCK, APR_FULL_BLOCK, 
+                             APR_NO_PIPE);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_procattr_dir_set(attr, "data");
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_procattr_cmdtype_set(attr, APR_PROGRAM_ENV);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    args[0] = "proc_child" EXTENSION;
+    args[1] = NULL;
+    
+    rv = apr_proc_create(&newproc, proc_child, args, NULL, 
+                         attr, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    testfile = newproc.in;
+
+    length = strlen(TESTSTR);
+    rv = apr_file_write(testfile, TESTSTR, &length);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_SIZE_EQUAL(tc, strlen(TESTSTR), length);
+
+    testfile = newproc.out;
+    length = 256;
+    buf = apr_pcalloc(p, length);
+    rv = apr_file_read(testfile, buf, &length);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_STR_EQUAL(tc, TESTSTR, buf);
+}
+
+static void test_proc_wait(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+
+    rv = apr_proc_wait(&newproc, NULL, NULL, APR_WAIT);
+    ABTS_INT_EQUAL(tc, APR_CHILD_DONE, rv);
+}
+
+static void test_file_redir(abts_case *tc, void *data)
+{
+    apr_file_t *testout = NULL;
+    apr_file_t *testerr = NULL;
+    apr_off_t offset;
+    apr_status_t rv;
+    const char *args[2];
+    apr_procattr_t *attr;
+    apr_file_t *testfile = NULL;
+    apr_size_t length;
+    char *buf;
+
+    testfile = NULL;
+    rv = apr_file_open(&testfile, "data/stdin",
+                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
+                       APR_OS_DEFAULT, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_open(&testout, "data/stdout",
+                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
+                       APR_OS_DEFAULT, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_open(&testerr, "data/stderr",
+                       APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_EXCL,
+                       APR_OS_DEFAULT, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    length = strlen(TESTSTR);
+    apr_file_write(testfile, TESTSTR, &length);
+    offset = 0;
+    rv = apr_file_seek(testfile, APR_SET, &offset);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_ASSERT(tc, "File position mismatch, expected 0", offset == 0);
+
+    rv = apr_procattr_create(&attr, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_procattr_child_in_set(attr, testfile, NULL);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_procattr_child_out_set(attr, testout, NULL);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_procattr_child_err_set(attr, testerr, NULL);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_procattr_dir_set(attr, "data");
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_procattr_cmdtype_set(attr, APR_PROGRAM_ENV);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    args[0] = "proc_child";
+    args[1] = NULL;
+
+    rv = apr_proc_create(&newproc, proc_child, args, NULL, 
+                         attr, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    rv = apr_proc_wait(&newproc, NULL, NULL, APR_WAIT);
+    ABTS_INT_EQUAL(tc, APR_CHILD_DONE, rv);
+
+    offset = 0;
+    rv = apr_file_seek(testout, APR_SET, &offset);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    length = 256;
+    buf = apr_pcalloc(p, length);
+    rv = apr_file_read(testout, buf, &length);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    ABTS_STR_EQUAL(tc, TESTSTR, buf);
+
+
+    apr_file_close(testfile);
+    apr_file_close(testout);
+    apr_file_close(testerr);
+
+    rv = apr_file_remove("data/stdin", p);;
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_remove("data/stdout", p);;
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_remove("data/stderr", p);;
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+}
+
+abts_suite *testproc(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    apr_filepath_merge(&proc_child, NULL, PROC_CHILD_NAME, 0, p);
+    abts_run_test(suite, test_create_proc, NULL);
+    abts_run_test(suite, test_proc_wait, NULL);
+    abts_run_test(suite, test_file_redir, NULL);
+
+    return suite;
+}
+

Copied: vendor/apache/apr/1.5.2/test/testskiplist.c (from rev 9273, vendor/apache/apr/dist/test/testskiplist.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testskiplist.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testskiplist.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,448 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "apr.h"
+#include "apr_strings.h"
+#include "apr_general.h"
+#include "apr_pools.h"
+#include "apr_skiplist.h"
+#if APR_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+
+static apr_pool_t *ptmp = NULL;
+static apr_skiplist *skiplist = NULL;
+
+/* apr_skiplist_add[_compare]() are missing in 1.5.x,
+ * so emulate them (not thread-safe!)...
+ */
+static apr_skiplist_compare current_comp;
+static int add_comp(void *a, void *b)
+{
+    return current_comp(a, b) < 0 ? -1 : +1;
+}
+static apr_skiplistnode *apr_skiplist_add_compare(apr_skiplist *sl, void *data,
+                                                  apr_skiplist_compare comp)
+{
+    current_comp = comp;
+    return apr_skiplist_insert_compare(sl, data, add_comp);
+}
+static apr_skiplistnode *apr_skiplist_add(apr_skiplist *sl, void *data)
+{
+    /* Ugly, really, but should work *as long as* the compare function is the
+     * first field of the (opaque) skiplist struct, this is the case for now :p
+     */
+    return apr_skiplist_add_compare(sl, data, *(apr_skiplist_compare*)sl);
+}
+
+static int skiplist_get_size(abts_case *tc, apr_skiplist *sl)
+{
+    size_t size = 0;
+    apr_skiplistnode *n;
+    for (n = apr_skiplist_getlist(sl); n; apr_skiplist_next(sl, &n)) {
+        ++size;
+    }
+    return size;
+}
+
+static void skiplist_init(abts_case *tc, void *data)
+{
+    apr_time_t now = apr_time_now();
+    srand((unsigned int)(((now >> 32) ^ now) & 0xffffffff));
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_skiplist_init(&skiplist, p));
+    ABTS_PTR_NOTNULL(tc, skiplist);
+    apr_skiplist_set_compare(skiplist, (apr_skiplist_compare)strcmp,
+                                       (apr_skiplist_compare)strcmp);
+}
+
+static void skiplist_find(abts_case *tc, void *data)
+{
+    const char *val;
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "baton"));
+    val = apr_skiplist_find(skiplist, "baton", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "baton", val);
+}
+
+static void skiplist_dontfind(abts_case *tc, void *data)
+{
+    const char *val;
+
+    val = apr_skiplist_find(skiplist, "keynotthere", NULL);
+    ABTS_PTR_EQUAL(tc, NULL, (void *)val);
+}
+
+static void skiplist_insert(abts_case *tc, void *data)
+{
+    const char *val;
+    int i;
+
+    for (i = 0; i < 10; ++i) {
+        ABTS_PTR_EQUAL(tc, NULL, apr_skiplist_insert(skiplist, "baton"));
+        ABTS_TRUE(tc, 1 == skiplist_get_size(tc, skiplist));
+        val = apr_skiplist_find(skiplist, "baton", NULL);
+        ABTS_PTR_NOTNULL(tc, val);
+        ABTS_STR_EQUAL(tc, "baton", val);
+    }
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "foo"));
+    ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
+    val = apr_skiplist_find(skiplist, "foo", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "foo", val);
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "atfirst"));
+    ABTS_TRUE(tc, 3 == skiplist_get_size(tc, skiplist));
+    val = apr_skiplist_find(skiplist, "atfirst", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "atfirst", val);
+}
+
+static void skiplist_add(abts_case *tc, void *data)
+{
+    const char *val;
+    size_t i, n = skiplist_get_size(tc, skiplist);
+
+    for (i = 0; i < 100; ++i) {
+        n++;
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "daton"));
+        ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
+        val = apr_skiplist_find(skiplist, "daton", NULL);
+        ABTS_PTR_NOTNULL(tc, val);
+        ABTS_STR_EQUAL(tc, "daton", val);
+
+        n++;
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
+        ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
+        val = apr_skiplist_find(skiplist, "baton", NULL);
+        ABTS_PTR_NOTNULL(tc, val);
+        ABTS_STR_EQUAL(tc, "baton", val);
+
+        n++;
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "caton"));
+        ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
+        val = apr_skiplist_find(skiplist, "caton", NULL);
+        ABTS_PTR_NOTNULL(tc, val);
+        ABTS_STR_EQUAL(tc, "caton", val);
+
+        n++;
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "aaton"));
+        ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
+        val = apr_skiplist_find(skiplist, "aaton", NULL);
+        ABTS_PTR_NOTNULL(tc, val);
+        ABTS_STR_EQUAL(tc, "aaton", val);
+    }
+}
+
+static void skiplist_destroy(abts_case *tc, void *data)
+{
+    apr_skiplist_destroy(skiplist, NULL);
+    ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
+}
+
+static void skiplist_size(abts_case *tc, void *data)
+{
+    const char *val;
+
+    ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "abc"));
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "ghi"));
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "def"));
+    val = apr_skiplist_find(skiplist, "abc", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "abc", val);
+    val = apr_skiplist_find(skiplist, "ghi", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "ghi", val);
+    val = apr_skiplist_find(skiplist, "def", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "def", val);
+
+    ABTS_TRUE(tc, 3 == skiplist_get_size(tc, skiplist));
+    apr_skiplist_destroy(skiplist, NULL);
+}
+
+static void skiplist_remove(abts_case *tc, void *data)
+{
+    const char *val;
+
+    ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
+    ABTS_TRUE(tc, 1 == skiplist_get_size(tc, skiplist));
+    val = apr_skiplist_find(skiplist, "baton", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "baton", val);
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
+    ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
+    val = apr_skiplist_find(skiplist, "baton", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "baton", val);
+
+    ABTS_TRUE(tc, apr_skiplist_remove(skiplist, "baton", NULL) != 0);
+    ABTS_TRUE(tc, 1 == skiplist_get_size(tc, skiplist));
+    val = apr_skiplist_find(skiplist, "baton", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "baton", val);
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
+    ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
+    val = apr_skiplist_find(skiplist, "baton", NULL);
+    ABTS_PTR_NOTNULL(tc, val);
+    ABTS_STR_EQUAL(tc, "baton", val);
+
+    /* remove all "baton"s */
+    while (apr_skiplist_remove(skiplist, "baton", NULL))
+        ;
+    ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
+    val = apr_skiplist_find(skiplist, "baton", NULL);
+    ABTS_PTR_EQUAL(tc, NULL, val);
+}
+
+#define NUM_RAND (100)
+#define NUM_FIND (3 * NUM_RAND)
+static void skiplist_random_loop(abts_case *tc, void *data)
+{
+    char **batons;
+    apr_skiplist *sl;
+    const char *val;
+    int i;
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_skiplist_init(&sl, ptmp));
+    apr_skiplist_set_compare(sl, (apr_skiplist_compare)strcmp,
+                                 (apr_skiplist_compare)strcmp);
+
+    batons = apr_palloc(ptmp, NUM_FIND * sizeof(char*));
+
+    for (i = 0; i < NUM_FIND; ++i) {
+        if (i < NUM_RAND) {
+            batons[i] = apr_psprintf(ptmp, "%.6u", rand() % 1000000);
+        }
+        else {
+            batons[i] = apr_pstrdup(ptmp, batons[i % NUM_RAND]);
+        }
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(sl, batons[i]));
+        val = apr_skiplist_find(sl, batons[i], NULL);
+        ABTS_PTR_NOTNULL(tc, val);
+        ABTS_STR_EQUAL(tc, batons[i], val);
+    }
+
+    apr_pool_clear(ptmp);
+}
+
+typedef struct elem {
+    int b;
+    int a;
+} elem;
+
+
+static void add_int_to_skiplist(abts_case *tc, apr_skiplist *list, int n){
+    int* a = apr_skiplist_alloc(list, sizeof(int));
+    *a = n;
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(list, a));
+}
+
+static void add_elem_to_skiplist(abts_case *tc, apr_skiplist *list, elem n){
+    elem* a = apr_skiplist_alloc(list, sizeof(elem));
+    *a = n;
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(list, a));
+}
+
+static int comp(void *a, void *b){
+    return (*((int*) a) < *((int*) b)) ? -1 : 1;
+}
+
+static int scomp(void *a, void *b){
+    return (((elem*) a)->a < ((elem*) b)->a) ? -1 : 1;
+}
+
+static int ecomp(void *a, void *b)
+{
+    elem const * const e1 = a;
+    elem const * const e2 = b;
+    if (e1->a < e2->a) {
+        return -1;
+    }
+    else if (e1->a > e2->a) {
+        return +1;
+    }
+    else if (e1->b < e2->b) {
+        return -1;
+    }
+    else if (e1->b > e2->b) {
+        return +1;
+    }
+    else {
+        return 0;
+    }
+}
+
+static void skiplist_test(abts_case *tc, void *data) {
+    int test_elems = 10;
+    int i = 0, j = 0;
+    int *val = NULL;
+    elem *val2 = NULL;
+    apr_skiplist * list = NULL;
+    apr_skiplist * list2 = NULL;
+    apr_skiplist * list3 = NULL;
+    int first_forty_two = 42,
+        second_forty_two = 42;
+    apr_array_header_t *array;
+    elem t1, t2, t3, t4, t5;
+    t1.a = 1; t1.b = 1;
+    t2.a = 42; t2.b = 1;
+    t3.a = 42; t3.b = 2;
+    t4.a = 42; t4.b = 3;
+    t5.a = 142; t5.b = 1;
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_skiplist_init(&list, ptmp));
+    apr_skiplist_set_compare(list, comp, comp);
+    
+    /* insert 10 objects */
+    for (i = 0; i < test_elems; ++i){
+        add_int_to_skiplist(tc, list, i);
+    }
+
+    /* remove all objects */
+    while ((val = apr_skiplist_pop(list, NULL))){
+        ABTS_INT_EQUAL(tc, *val, j++);
+    }
+
+    /* insert 10 objects again */
+    for (i = test_elems; i < test_elems+test_elems; ++i){
+        add_int_to_skiplist(tc, list, i);
+    }
+
+    j = test_elems;
+    while ((val = apr_skiplist_pop(list, NULL))){
+        ABTS_INT_EQUAL(tc, *val, j++);
+    }
+
+    /* empty */
+    val = apr_skiplist_pop(list, NULL);
+    ABTS_PTR_EQUAL(tc, val, NULL);
+
+    add_int_to_skiplist(tc, list, 42);
+    val = apr_skiplist_pop(list, NULL);
+    ABTS_INT_EQUAL(tc, *val, 42); 
+
+    /* empty */
+    val = apr_skiplist_pop(list, NULL);
+    ABTS_PTR_EQUAL(tc, val, NULL);
+
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(list, &first_forty_two));
+    add_int_to_skiplist(tc, list, 1);
+    add_int_to_skiplist(tc, list, 142);
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(list, &second_forty_two));
+    val = apr_skiplist_peek(list);
+    ABTS_INT_EQUAL(tc, *val, 1);
+    val = apr_skiplist_pop(list, NULL);
+    ABTS_INT_EQUAL(tc, *val, 1);
+    val = apr_skiplist_peek(list);
+    ABTS_PTR_EQUAL(tc, val, &first_forty_two);
+    ABTS_INT_EQUAL(tc, *val, 42);
+    val = apr_skiplist_pop(list, NULL);
+    ABTS_PTR_EQUAL(tc, val, &first_forty_two);
+    ABTS_INT_EQUAL(tc, *val, 42);
+    val = apr_skiplist_pop(list, NULL);
+    ABTS_PTR_EQUAL(tc, val, &second_forty_two);
+    ABTS_INT_EQUAL(tc, *val, 42);
+    val = apr_skiplist_peek(list);
+    ABTS_INT_EQUAL(tc, *val, 142);
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_skiplist_init(&list2, ptmp));
+    apr_skiplist_set_compare(list2, scomp, scomp);
+    add_elem_to_skiplist(tc, list2, t2);
+    add_elem_to_skiplist(tc, list2, t1);
+    add_elem_to_skiplist(tc, list2, t3);
+    add_elem_to_skiplist(tc, list2, t5);
+    add_elem_to_skiplist(tc, list2, t4);
+    val2 = apr_skiplist_pop(list2, NULL);
+    ABTS_INT_EQUAL(tc, val2->a, 1);
+    val2 = apr_skiplist_pop(list2, NULL);
+    ABTS_INT_EQUAL(tc, val2->a, 42);
+    ABTS_INT_EQUAL(tc, val2->b, 1);
+    val2 = apr_skiplist_pop(list2, NULL);
+    ABTS_INT_EQUAL(tc, val2->a, 42);
+    ABTS_INT_EQUAL(tc, val2->b, 2);
+    val2 = apr_skiplist_pop(list2, NULL);
+    ABTS_INT_EQUAL(tc, val2->a, 42);
+    ABTS_INT_EQUAL(tc, val2->b, 3);
+    val2 = apr_skiplist_pop(list2, NULL);
+    ABTS_INT_EQUAL(tc, val2->a, 142);
+    ABTS_INT_EQUAL(tc, val2->b, 1);
+
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_skiplist_init(&list3, ptmp));
+    apr_skiplist_set_compare(list3, ecomp, ecomp);
+    array = apr_array_make(ptmp, 10, sizeof(elem *));
+    for (i = 0; i < 10; ++i) {
+        elem *e = apr_palloc(ptmp, sizeof *e);
+        e->a = 4224;
+        e->b = i;
+        APR_ARRAY_PUSH(array, elem *) = e;
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(list3, e));
+    }
+    for (i = 0; i < 5; ++i) {
+        elem *e = APR_ARRAY_IDX(array, i, elem *);
+        val2 = apr_skiplist_find(list3, e, NULL);
+        ABTS_PTR_EQUAL(tc, e, val2);
+        ABTS_TRUE(tc, apr_skiplist_remove(list3, e, NULL) != 0);
+    }
+    for (i = 0; i < 5; ++i) {
+        elem *e = APR_ARRAY_IDX(array, 9 - i, elem *);
+        val2 = apr_skiplist_find(list3, e, NULL);
+        ABTS_PTR_EQUAL(tc, e, val2);
+        ABTS_TRUE(tc, apr_skiplist_remove(list3, e, NULL) != 0);
+    }
+
+    apr_pool_clear(ptmp);
+}
+
+
+abts_suite *testskiplist(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    apr_pool_create(&ptmp, p);
+
+    abts_run_test(suite, skiplist_init, NULL);
+    abts_run_test(suite, skiplist_find, NULL);
+    abts_run_test(suite, skiplist_dontfind, NULL);
+    abts_run_test(suite, skiplist_insert, NULL);
+    abts_run_test(suite, skiplist_add, NULL);
+    abts_run_test(suite, skiplist_destroy, NULL);
+    abts_run_test(suite, skiplist_size, NULL);
+    abts_run_test(suite, skiplist_remove, NULL);
+    abts_run_test(suite, skiplist_random_loop, NULL);
+
+    abts_run_test(suite, skiplist_test, NULL);
+
+    apr_pool_destroy(ptmp);
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testsock.c
===================================================================
--- vendor/apache/apr/dist/test/testsock.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testsock.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,446 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-#include "testsock.h"
-#include "apr_thread_proc.h"
-#include "apr_network_io.h"
-#include "apr_errno.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include "apr_poll.h"
-
-static void launch_child(abts_case *tc, apr_proc_t *proc, const char *arg1, apr_pool_t *p)
-{
-    apr_procattr_t *procattr;
-    const char *args[3];
-    apr_status_t rv;
-
-    rv = apr_procattr_create(&procattr, p);
-    APR_ASSERT_SUCCESS(tc, "Couldn't create procattr", rv);
-
-    rv = apr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE,
-            APR_NO_PIPE);
-    APR_ASSERT_SUCCESS(tc, "Couldn't set io in procattr", rv);
-
-    rv = apr_procattr_error_check_set(procattr, 1);
-    APR_ASSERT_SUCCESS(tc, "Couldn't set error check in procattr", rv);
-
-    rv = apr_procattr_cmdtype_set(procattr, APR_PROGRAM_ENV);
-    APR_ASSERT_SUCCESS(tc, "Couldn't set copy environment", rv);
-
-    args[0] = "sockchild" EXTENSION;
-    args[1] = arg1;
-    args[2] = NULL;
-    rv = apr_proc_create(proc, TESTBINPATH "sockchild" EXTENSION, args, NULL,
-                         procattr, p);
-    APR_ASSERT_SUCCESS(tc, "Couldn't launch program", rv);
-}
-
-static int wait_child(abts_case *tc, apr_proc_t *proc) 
-{
-    int exitcode;
-    apr_exit_why_e why;
-
-    ABTS_ASSERT(tc, "Error waiting for child process",
-            apr_proc_wait(proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE);
-
-    ABTS_ASSERT(tc, "child terminated normally", why == APR_PROC_EXIT);
-    return exitcode;
-}
-
-static void test_addr_info(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_sockaddr_t *sa;
-
-    rv = apr_sockaddr_info_get(&sa, NULL, APR_UNSPEC, 80, 0, p);
-    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
-
-    rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_UNSPEC, 80, 0, p);
-    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
-    ABTS_STR_EQUAL(tc, "127.0.0.1", sa->hostname);
-
-    rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_UNSPEC, 0, 0, p);
-    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
-    ABTS_STR_EQUAL(tc, "127.0.0.1", sa->hostname);
-    ABTS_INT_EQUAL(tc, 0, sa->port);
-    ABTS_INT_EQUAL(tc, 0, ntohs(sa->sa.sin.sin_port));
-}
-
-static void test_serv_by_name(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_sockaddr_t *sa;
-
-    rv = apr_sockaddr_info_get(&sa, NULL, APR_UNSPEC, 0, 0, p);
-    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
-
-    rv = apr_getservbyname(sa, "ftp");
-    APR_ASSERT_SUCCESS(tc, "Problem getting ftp service", rv);
-    ABTS_INT_EQUAL(tc, 21, sa->port);
-
-    rv = apr_getservbyname(sa, "complete_and_utter_rubbish");
-    APR_ASSERT_SUCCESS(tc, "Problem getting non-existent service", !rv);
-
-    rv = apr_getservbyname(sa, "telnet");
-    APR_ASSERT_SUCCESS(tc, "Problem getting telnet service", rv);
-    ABTS_INT_EQUAL(tc, 23, sa->port);
-}
-
-static apr_socket_t *setup_socket(abts_case *tc)
-{
-    apr_status_t rv;
-    apr_sockaddr_t *sa;
-    apr_socket_t *sock;
-
-    rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_INET, 8021, 0, p);
-    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
-
-    rv = apr_socket_create(&sock, sa->family, SOCK_STREAM, APR_PROTO_TCP, p);
-    APR_ASSERT_SUCCESS(tc, "Problem creating socket", rv);
-
-    rv = apr_socket_opt_set(sock, APR_SO_REUSEADDR, 1);
-    APR_ASSERT_SUCCESS(tc, "Could not set REUSEADDR on socket", rv);
-    
-    rv = apr_socket_bind(sock, sa);
-    APR_ASSERT_SUCCESS(tc, "Problem binding to port", rv);
-    if (rv) return NULL;
-                
-    rv = apr_socket_listen(sock, 5);
-    APR_ASSERT_SUCCESS(tc, "Problem listening on socket", rv);
-
-    return sock;
-}
-
-static void test_create_bind_listen(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_socket_t *sock = setup_socket(tc);
-    
-    if (!sock) return;
-    
-    rv = apr_socket_close(sock);
-    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
-}
-
-static void test_send(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_socket_t *sock;
-    apr_socket_t *sock2;
-    apr_proc_t proc;
-    int protocol;
-    apr_size_t length;
-
-    sock = setup_socket(tc);
-    if (!sock) return;
-
-    launch_child(tc, &proc, "read", p);
-    
-    rv = apr_socket_accept(&sock2, sock, p);
-    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
-
-    apr_socket_protocol_get(sock2, &protocol);
-    ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol);
-    
-    length = strlen(DATASTR);
-    apr_socket_send(sock2, DATASTR, &length);
-
-    /* Make sure that the client received the data we sent */
-    ABTS_SIZE_EQUAL(tc, strlen(DATASTR), wait_child(tc, &proc));
-
-    rv = apr_socket_close(sock2);
-    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
-    rv = apr_socket_close(sock);
-    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
-}
-
-static void test_recv(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_socket_t *sock;
-    apr_socket_t *sock2;
-    apr_proc_t proc;
-    int protocol;
-    apr_size_t length = STRLEN;
-    char datastr[STRLEN];
-    
-    sock = setup_socket(tc);
-    if (!sock) return;
-
-    launch_child(tc, &proc, "write", p);
-    
-    rv = apr_socket_accept(&sock2, sock, p);
-    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
-
-    apr_socket_protocol_get(sock2, &protocol);
-    ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol);
-    
-    memset(datastr, 0, STRLEN);
-    apr_socket_recv(sock2, datastr, &length);
-
-    /* Make sure that the server received the data we sent */
-    ABTS_STR_EQUAL(tc, DATASTR, datastr);
-    ABTS_SIZE_EQUAL(tc, strlen(datastr), wait_child(tc, &proc));
-
-    rv = apr_socket_close(sock2);
-    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
-    rv = apr_socket_close(sock);
-    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
-}
-
-static void test_atreadeof(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_socket_t *sock;
-    apr_socket_t *sock2;
-    apr_proc_t proc;
-    apr_size_t length = STRLEN;
-    char datastr[STRLEN];
-    int atreadeof = -1;
-
-    sock = setup_socket(tc);
-    if (!sock) return;
-
-    launch_child(tc, &proc, "write", p);
-
-    rv = apr_socket_accept(&sock2, sock, p);
-    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
-
-    /* Check that the remote socket is still open */
-    rv = apr_socket_atreadeof(sock2, &atreadeof);
-    APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #1", rv);
-    ABTS_INT_EQUAL(tc, 0, atreadeof);
-
-    memset(datastr, 0, STRLEN);
-    apr_socket_recv(sock2, datastr, &length);
-
-    /* Make sure that the server received the data we sent */
-    ABTS_STR_EQUAL(tc, DATASTR, datastr);
-    ABTS_SIZE_EQUAL(tc, strlen(datastr), wait_child(tc, &proc));
-
-    /* The child is dead, so should be the remote socket */
-    rv = apr_socket_atreadeof(sock2, &atreadeof);
-    APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #2", rv);
-    ABTS_INT_EQUAL(tc, 1, atreadeof);
-
-    rv = apr_socket_close(sock2);
-    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
-
-    launch_child(tc, &proc, "close", p);
-
-    rv = apr_socket_accept(&sock2, sock, p);
-    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
-
-    /* The child closed the socket as soon as it could... */
-    rv = apr_socket_atreadeof(sock2, &atreadeof);
-    APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #3", rv);
-    if (!atreadeof) { /* ... but perhaps not yet; wait a moment */
-        apr_sleep(apr_time_from_msec(5));
-        rv = apr_socket_atreadeof(sock2, &atreadeof);
-        APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #4", rv);
-    }
-    ABTS_INT_EQUAL(tc, 1, atreadeof);
-    wait_child(tc, &proc);
-
-    rv = apr_socket_close(sock2);
-    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
-
-    rv = apr_socket_close(sock);
-    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
-}
-
-static void test_timeout(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_socket_t *sock;
-    apr_socket_t *sock2;
-    apr_proc_t proc;
-    int protocol;
-    int exit;
-    
-    sock = setup_socket(tc);
-    if (!sock) return;
-
-    launch_child(tc, &proc, "read", p);
-    
-    rv = apr_socket_accept(&sock2, sock, p);
-    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
-
-    apr_socket_protocol_get(sock2, &protocol);
-    ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol);
-    
-    exit = wait_child(tc, &proc);    
-    ABTS_INT_EQUAL(tc, SOCKET_TIMEOUT, exit);
-
-    /* We didn't write any data, so make sure the child program returns
-     * an error.
-     */
-    rv = apr_socket_close(sock2);
-    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
-    rv = apr_socket_close(sock);
-    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
-}
-
-static void test_print_addr(abts_case *tc, void *data)
-{
-    apr_sockaddr_t *sa;
-    apr_status_t rv;
-    char *s;
-
-    rv = apr_sockaddr_info_get(&sa, "0.0.0.0", APR_INET, 80, 0, p);
-    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
-
-    s = apr_psprintf(p, "foo %pI bar", sa);
-
-    ABTS_STR_EQUAL(tc, "foo 0.0.0.0:80 bar", s);
-
-#if APR_HAVE_IPV6
-    rv = apr_sockaddr_info_get(&sa, "::ffff:0.0.0.0", APR_INET6, 80, 0, p);
-    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
-    if (rv == APR_SUCCESS)
-        ABTS_TRUE(tc, sa != NULL);
-    if (rv == APR_SUCCESS && sa) {
-        /* sa should now be a v4-mapped IPv6 address. */
-        char buf[128];
-
-        memset(buf, 'z', sizeof buf);
-        
-        APR_ASSERT_SUCCESS(tc, "could not get IP address",
-                           apr_sockaddr_ip_getbuf(buf, 22, sa));
-        
-        ABTS_STR_EQUAL(tc, "0.0.0.0", buf);
-    }
-#endif
-}
-
-static void test_get_addr(abts_case *tc, void *data)
-{
-    apr_status_t rv;
-    apr_socket_t *ld, *sd, *cd;
-    apr_sockaddr_t *sa, *ca;
-    apr_pool_t *subp;
-    char *a, *b;
-
-    APR_ASSERT_SUCCESS(tc, "create subpool", apr_pool_create(&subp, p));
-
-    if ((ld = setup_socket(tc)) != APR_SUCCESS)
-        return;
-
-    APR_ASSERT_SUCCESS(tc,
-                       "get local address of bound socket",
-                       apr_socket_addr_get(&sa, APR_LOCAL, ld));
-
-    rv = apr_socket_create(&cd, sa->family, SOCK_STREAM,
-                           APR_PROTO_TCP, subp);
-    APR_ASSERT_SUCCESS(tc, "create client socket", rv);
-
-    APR_ASSERT_SUCCESS(tc, "enable non-block mode",
-                       apr_socket_opt_set(cd, APR_SO_NONBLOCK, 1));
-
-    /* It is valid for a connect() on a socket with NONBLOCK set to
-     * succeed (if the connection can be established synchronously),
-     * but if it does, this test cannot proceed.  */
-    rv = apr_socket_connect(cd, sa);
-    if (rv == APR_SUCCESS) {
-        apr_socket_close(ld);
-        apr_socket_close(cd);
-        ABTS_NOT_IMPL(tc, "Cannot test if connect completes "
-                      "synchronously");
-        return;
-    }
-
-    if (!APR_STATUS_IS_EINPROGRESS(rv)) {
-        apr_socket_close(ld);
-        apr_socket_close(cd);
-        APR_ASSERT_SUCCESS(tc, "connect to listener", rv);
-        return;
-    }
-
-    APR_ASSERT_SUCCESS(tc, "accept connection",
-                       apr_socket_accept(&sd, ld, subp));
-    
-    {
-        /* wait for writability */
-        apr_pollfd_t pfd;
-        int n;
-
-        pfd.p = p;
-        pfd.desc_type = APR_POLL_SOCKET;
-        pfd.reqevents = APR_POLLOUT|APR_POLLHUP;
-        pfd.desc.s = cd;
-        pfd.client_data = NULL;
-
-        APR_ASSERT_SUCCESS(tc, "poll for connect completion",
-                           apr_poll(&pfd, 1, &n, 5 * APR_USEC_PER_SEC));
-
-    }
-
-    APR_ASSERT_SUCCESS(tc, "get local address of server socket",
-                       apr_socket_addr_get(&sa, APR_LOCAL, sd));
-    APR_ASSERT_SUCCESS(tc, "get remote address of client socket",
-                       apr_socket_addr_get(&ca, APR_REMOTE, cd));
-
-    /* Test that the pool of the returned sockaddr objects exactly
-     * match the socket. */
-    ABTS_PTR_EQUAL(tc, subp, sa->pool);
-    ABTS_PTR_EQUAL(tc, subp, ca->pool);
-
-    /* Check equivalence. */
-    a = apr_psprintf(p, "%pI fam=%d", sa, sa->family);
-    b = apr_psprintf(p, "%pI fam=%d", ca, ca->family);
-    ABTS_STR_EQUAL(tc, a, b);
-
-    /* Check pool of returned sockaddr, as above. */
-    APR_ASSERT_SUCCESS(tc, "get local address of client socket",
-                       apr_socket_addr_get(&sa, APR_LOCAL, cd));
-    APR_ASSERT_SUCCESS(tc, "get remote address of server socket",
-                       apr_socket_addr_get(&ca, APR_REMOTE, sd));
-
-    /* Check equivalence. */
-    a = apr_psprintf(p, "%pI fam=%d", sa, sa->family);
-    b = apr_psprintf(p, "%pI fam=%d", ca, ca->family);
-    ABTS_STR_EQUAL(tc, a, b);
-
-    ABTS_PTR_EQUAL(tc, subp, sa->pool);
-    ABTS_PTR_EQUAL(tc, subp, ca->pool);
-                       
-    apr_socket_close(cd);
-    apr_socket_close(sd);
-    apr_socket_close(ld);
-
-    apr_pool_destroy(subp);
-}
-
-abts_suite *testsock(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, test_addr_info, NULL);
-    abts_run_test(suite, test_serv_by_name, NULL);
-    abts_run_test(suite, test_create_bind_listen, NULL);
-    abts_run_test(suite, test_send, NULL);
-    abts_run_test(suite, test_recv, NULL);
-    abts_run_test(suite, test_atreadeof, NULL);
-    abts_run_test(suite, test_timeout, NULL);
-    abts_run_test(suite, test_print_addr, NULL);
-    abts_run_test(suite, test_get_addr, NULL);
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testsock.c (from rev 9273, vendor/apache/apr/dist/test/testsock.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testsock.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testsock.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,508 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "testsock.h"
+#include "apr_thread_proc.h"
+#include "apr_network_io.h"
+#include "apr_errno.h"
+#include "apr_general.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include "apr_poll.h"
+#define APR_WANT_BYTEFUNC
+#include "apr_want.h"
+
+static void launch_child(abts_case *tc, apr_proc_t *proc, const char *arg1, apr_pool_t *p)
+{
+    apr_procattr_t *procattr;
+    const char *args[3];
+    apr_status_t rv;
+
+    rv = apr_procattr_create(&procattr, p);
+    APR_ASSERT_SUCCESS(tc, "Couldn't create procattr", rv);
+
+    rv = apr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE,
+            APR_NO_PIPE);
+    APR_ASSERT_SUCCESS(tc, "Couldn't set io in procattr", rv);
+
+    rv = apr_procattr_error_check_set(procattr, 1);
+    APR_ASSERT_SUCCESS(tc, "Couldn't set error check in procattr", rv);
+
+    rv = apr_procattr_cmdtype_set(procattr, APR_PROGRAM_ENV);
+    APR_ASSERT_SUCCESS(tc, "Couldn't set copy environment", rv);
+
+    args[0] = "sockchild" EXTENSION;
+    args[1] = arg1;
+    args[2] = NULL;
+    rv = apr_proc_create(proc, TESTBINPATH "sockchild" EXTENSION, args, NULL,
+                         procattr, p);
+    APR_ASSERT_SUCCESS(tc, "Couldn't launch program", rv);
+}
+
+static int wait_child(abts_case *tc, apr_proc_t *proc) 
+{
+    int exitcode;
+    apr_exit_why_e why;
+
+    ABTS_ASSERT(tc, "Error waiting for child process",
+            apr_proc_wait(proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE);
+
+    ABTS_ASSERT(tc, "child terminated normally", why == APR_PROC_EXIT);
+    return exitcode;
+}
+
+static void test_addr_info(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_sockaddr_t *sa;
+    int rc;
+
+    rv = apr_sockaddr_info_get(&sa, NULL, APR_UNSPEC, 80, 0, p);
+    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
+
+    rc = apr_sockaddr_is_wildcard(sa);
+    ABTS_INT_NEQUAL(tc, 0, rc);
+
+    rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_UNSPEC, 80, 0, p);
+    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
+    ABTS_STR_EQUAL(tc, "127.0.0.1", sa->hostname);
+
+    rc = apr_sockaddr_is_wildcard(sa);
+    ABTS_INT_EQUAL(tc, 0, rc);
+
+    rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_UNSPEC, 0, 0, p);
+    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
+    ABTS_STR_EQUAL(tc, "127.0.0.1", sa->hostname);
+    ABTS_INT_EQUAL(tc, 0, sa->port);
+    ABTS_INT_EQUAL(tc, 0, ntohs(sa->sa.sin.sin_port));
+}
+
+static void test_serv_by_name(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_sockaddr_t *sa;
+
+    rv = apr_sockaddr_info_get(&sa, NULL, APR_UNSPEC, 0, 0, p);
+    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
+
+    rv = apr_getservbyname(sa, "ftp");
+    APR_ASSERT_SUCCESS(tc, "Problem getting ftp service", rv);
+    ABTS_INT_EQUAL(tc, 21, sa->port);
+
+    rv = apr_getservbyname(sa, "complete_and_utter_rubbish");
+    APR_ASSERT_SUCCESS(tc, "Problem getting non-existent service", !rv);
+
+    rv = apr_getservbyname(sa, "telnet");
+    APR_ASSERT_SUCCESS(tc, "Problem getting telnet service", rv);
+    ABTS_INT_EQUAL(tc, 23, sa->port);
+}
+
+static apr_socket_t *setup_socket(abts_case *tc)
+{
+    apr_status_t rv;
+    apr_sockaddr_t *sa;
+    apr_socket_t *sock;
+
+    rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_INET, 8021, 0, p);
+    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
+
+    rv = apr_socket_create(&sock, sa->family, SOCK_STREAM, APR_PROTO_TCP, p);
+    APR_ASSERT_SUCCESS(tc, "Problem creating socket", rv);
+
+    rv = apr_socket_opt_set(sock, APR_SO_REUSEADDR, 1);
+    APR_ASSERT_SUCCESS(tc, "Could not set REUSEADDR on socket", rv);
+    
+    rv = apr_socket_bind(sock, sa);
+    APR_ASSERT_SUCCESS(tc, "Problem binding to port", rv);
+    if (rv) return NULL;
+                
+    rv = apr_socket_listen(sock, 5);
+    APR_ASSERT_SUCCESS(tc, "Problem listening on socket", rv);
+
+    return sock;
+}
+
+static void test_create_bind_listen(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_socket_t *sock = setup_socket(tc);
+    
+    if (!sock) return;
+    
+    rv = apr_socket_close(sock);
+    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
+}
+
+static void test_send(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_socket_t *sock;
+    apr_socket_t *sock2;
+    apr_proc_t proc;
+    int protocol;
+    apr_size_t length;
+
+    sock = setup_socket(tc);
+    if (!sock) return;
+
+    launch_child(tc, &proc, "read", p);
+    
+    rv = apr_socket_accept(&sock2, sock, p);
+    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
+
+    apr_socket_protocol_get(sock2, &protocol);
+    ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol);
+    
+    length = strlen(DATASTR);
+    apr_socket_send(sock2, DATASTR, &length);
+
+    /* Make sure that the client received the data we sent */
+    ABTS_SIZE_EQUAL(tc, strlen(DATASTR), wait_child(tc, &proc));
+
+    rv = apr_socket_close(sock2);
+    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
+    rv = apr_socket_close(sock);
+    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
+}
+
+static void test_recv(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_socket_t *sock;
+    apr_socket_t *sock2;
+    apr_proc_t proc;
+    int protocol;
+    apr_size_t length = STRLEN;
+    char datastr[STRLEN];
+    
+    sock = setup_socket(tc);
+    if (!sock) return;
+
+    launch_child(tc, &proc, "write", p);
+    
+    rv = apr_socket_accept(&sock2, sock, p);
+    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
+
+    apr_socket_protocol_get(sock2, &protocol);
+    ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol);
+    
+    memset(datastr, 0, STRLEN);
+    apr_socket_recv(sock2, datastr, &length);
+
+    /* Make sure that the server received the data we sent */
+    ABTS_STR_EQUAL(tc, DATASTR, datastr);
+    ABTS_SIZE_EQUAL(tc, strlen(datastr), wait_child(tc, &proc));
+
+    rv = apr_socket_close(sock2);
+    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
+    rv = apr_socket_close(sock);
+    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
+}
+
+static void test_atreadeof(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_socket_t *sock;
+    apr_socket_t *sock2;
+    apr_proc_t proc;
+    apr_size_t length = STRLEN;
+    char datastr[STRLEN];
+    int atreadeof = -1;
+
+    sock = setup_socket(tc);
+    if (!sock) return;
+
+    launch_child(tc, &proc, "write", p);
+
+    rv = apr_socket_accept(&sock2, sock, p);
+    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
+
+    /* Check that the remote socket is still open */
+    rv = apr_socket_atreadeof(sock2, &atreadeof);
+    APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #1", rv);
+    ABTS_INT_EQUAL(tc, 0, atreadeof);
+
+    memset(datastr, 0, STRLEN);
+    apr_socket_recv(sock2, datastr, &length);
+
+    /* Make sure that the server received the data we sent */
+    ABTS_STR_EQUAL(tc, DATASTR, datastr);
+    ABTS_SIZE_EQUAL(tc, strlen(datastr), wait_child(tc, &proc));
+
+    /* The child is dead, so should be the remote socket */
+    rv = apr_socket_atreadeof(sock2, &atreadeof);
+    APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #2", rv);
+    ABTS_INT_EQUAL(tc, 1, atreadeof);
+
+    rv = apr_socket_close(sock2);
+    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
+
+    launch_child(tc, &proc, "close", p);
+
+    rv = apr_socket_accept(&sock2, sock, p);
+    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
+
+    /* The child closed the socket as soon as it could... */
+    rv = apr_socket_atreadeof(sock2, &atreadeof);
+    APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #3", rv);
+    if (!atreadeof) { /* ... but perhaps not yet; wait a moment */
+        apr_sleep(apr_time_from_msec(5));
+        rv = apr_socket_atreadeof(sock2, &atreadeof);
+        APR_ASSERT_SUCCESS(tc, "Determine whether at EOF, #4", rv);
+    }
+    ABTS_INT_EQUAL(tc, 1, atreadeof);
+    wait_child(tc, &proc);
+
+    rv = apr_socket_close(sock2);
+    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
+
+    rv = apr_socket_close(sock);
+    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
+}
+
+static void test_timeout(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_socket_t *sock;
+    apr_socket_t *sock2;
+    apr_proc_t proc;
+    int protocol;
+    int exit;
+    
+    sock = setup_socket(tc);
+    if (!sock) return;
+
+    launch_child(tc, &proc, "read", p);
+    
+    rv = apr_socket_accept(&sock2, sock, p);
+    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
+
+    apr_socket_protocol_get(sock2, &protocol);
+    ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol);
+    
+    exit = wait_child(tc, &proc);    
+    ABTS_INT_EQUAL(tc, SOCKET_TIMEOUT, exit);
+
+    /* We didn't write any data, so make sure the child program returns
+     * an error.
+     */
+    rv = apr_socket_close(sock2);
+    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
+    rv = apr_socket_close(sock);
+    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
+}
+
+static void test_print_addr(abts_case *tc, void *data)
+{
+    apr_sockaddr_t *sa;
+    apr_status_t rv;
+    char *s;
+
+    rv = apr_sockaddr_info_get(&sa, "0.0.0.0", APR_INET, 80, 0, p);
+    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
+
+    s = apr_psprintf(p, "foo %pI bar", sa);
+
+    ABTS_STR_EQUAL(tc, "foo 0.0.0.0:80 bar", s);
+
+#if APR_HAVE_IPV6
+    rv = apr_sockaddr_info_get(&sa, "::ffff:0.0.0.0", APR_INET6, 80, 0, p);
+    APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv);
+    if (rv == APR_SUCCESS)
+        ABTS_TRUE(tc, sa != NULL);
+    if (rv == APR_SUCCESS && sa) {
+        /* sa should now be a v4-mapped IPv6 address. */
+        char buf[128];
+        int rc;
+
+        rc = apr_sockaddr_is_wildcard(sa);
+        ABTS_INT_NEQUAL(tc, 0, rc);
+
+        memset(buf, 'z', sizeof buf);
+        
+        APR_ASSERT_SUCCESS(tc, "could not get IP address",
+                           apr_sockaddr_ip_getbuf(buf, 22, sa));
+        
+        ABTS_STR_EQUAL(tc, "0.0.0.0", buf);
+    }
+#endif
+}
+
+static void test_get_addr(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_socket_t *ld, *sd, *cd;
+    apr_sockaddr_t *sa, *ca;
+    apr_pool_t *subp;
+    char *a, *b;
+
+    APR_ASSERT_SUCCESS(tc, "create subpool", apr_pool_create(&subp, p));
+
+    ld = setup_socket(tc);
+    if (!ld) return;
+
+    APR_ASSERT_SUCCESS(tc,
+                       "get local address of bound socket",
+                       apr_socket_addr_get(&sa, APR_LOCAL, ld));
+
+    rv = apr_socket_create(&cd, sa->family, SOCK_STREAM,
+                           APR_PROTO_TCP, subp);
+    APR_ASSERT_SUCCESS(tc, "create client socket", rv);
+
+    APR_ASSERT_SUCCESS(tc, "enable non-block mode",
+                       apr_socket_opt_set(cd, APR_SO_NONBLOCK, 1));
+
+    /* It is valid for a connect() on a socket with NONBLOCK set to
+     * succeed (if the connection can be established synchronously),
+     * but if it does, this test cannot proceed.  */
+    rv = apr_socket_connect(cd, sa);
+    if (rv == APR_SUCCESS) {
+        apr_socket_close(ld);
+        apr_socket_close(cd);
+        ABTS_NOT_IMPL(tc, "Cannot test if connect completes "
+                      "synchronously");
+        return;
+    }
+
+    if (!APR_STATUS_IS_EINPROGRESS(rv)) {
+        apr_socket_close(ld);
+        apr_socket_close(cd);
+        APR_ASSERT_SUCCESS(tc, "connect to listener", rv);
+        return;
+    }
+
+    APR_ASSERT_SUCCESS(tc, "accept connection",
+                       apr_socket_accept(&sd, ld, subp));
+    
+    {
+        /* wait for writability */
+        apr_pollfd_t pfd;
+        int n;
+
+        pfd.p = p;
+        pfd.desc_type = APR_POLL_SOCKET;
+        pfd.reqevents = APR_POLLOUT|APR_POLLHUP;
+        pfd.desc.s = cd;
+        pfd.client_data = NULL;
+
+        APR_ASSERT_SUCCESS(tc, "poll for connect completion",
+                           apr_poll(&pfd, 1, &n, 5 * APR_USEC_PER_SEC));
+
+    }
+
+    APR_ASSERT_SUCCESS(tc, "get local address of server socket",
+                       apr_socket_addr_get(&sa, APR_LOCAL, sd));
+    APR_ASSERT_SUCCESS(tc, "get remote address of client socket",
+                       apr_socket_addr_get(&ca, APR_REMOTE, cd));
+
+    /* Test that the pool of the returned sockaddr objects exactly
+     * match the socket. */
+    ABTS_PTR_EQUAL(tc, subp, sa->pool);
+    ABTS_PTR_EQUAL(tc, subp, ca->pool);
+
+    /* Check equivalence. */
+    a = apr_psprintf(p, "%pI fam=%d", sa, sa->family);
+    b = apr_psprintf(p, "%pI fam=%d", ca, ca->family);
+    ABTS_STR_EQUAL(tc, a, b);
+
+    /* Check pool of returned sockaddr, as above. */
+    APR_ASSERT_SUCCESS(tc, "get local address of client socket",
+                       apr_socket_addr_get(&sa, APR_LOCAL, cd));
+    APR_ASSERT_SUCCESS(tc, "get remote address of server socket",
+                       apr_socket_addr_get(&ca, APR_REMOTE, sd));
+
+    /* Check equivalence. */
+    a = apr_psprintf(p, "%pI fam=%d", sa, sa->family);
+    b = apr_psprintf(p, "%pI fam=%d", ca, ca->family);
+    ABTS_STR_EQUAL(tc, a, b);
+
+    ABTS_PTR_EQUAL(tc, subp, sa->pool);
+    ABTS_PTR_EQUAL(tc, subp, ca->pool);
+                       
+    apr_socket_close(cd);
+    apr_socket_close(sd);
+    apr_socket_close(ld);
+
+    apr_pool_destroy(subp);
+}
+
+/* Make sure that setting a connected socket non-blocking works
+ * when the listening socket was non-blocking.
+ * If APR thinks that non-blocking is inherited but it really
+ * isn't, this testcase will fail.
+ */
+static void test_nonblock_inheritance(abts_case *tc, void *data)
+{
+    apr_status_t rv;
+    apr_socket_t *sock;
+    apr_socket_t *sock2;
+    apr_proc_t proc;
+    char buffer[10];
+    apr_size_t length;
+    int tries;
+
+    sock = setup_socket(tc);
+    if (!sock) return;
+
+    rv = apr_socket_opt_set(sock, APR_SO_NONBLOCK, 1);
+    APR_ASSERT_SUCCESS(tc, "Could not make listening socket nonblocking", rv);
+
+    launch_child(tc, &proc, "write_after_delay", p);
+
+    tries = 10;
+    while (tries--) {
+        rv = apr_socket_accept(&sock2, sock, p);
+        if (!APR_STATUS_IS_EAGAIN(rv)) {
+            break;
+        }
+        apr_sleep(apr_time_from_msec(50));
+    }
+    APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv);
+
+    rv = apr_socket_opt_set(sock2, APR_SO_NONBLOCK, 1);
+    APR_ASSERT_SUCCESS(tc, "Could not make connected socket nonblocking", rv);
+
+    length = sizeof buffer;
+    rv = apr_socket_recv(sock2, buffer, &length);
+    ABTS_ASSERT(tc, "should have gotten EAGAIN", APR_STATUS_IS_EAGAIN(rv));
+
+    wait_child(tc, &proc);
+
+    rv = apr_socket_close(sock2);
+    APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv);
+    rv = apr_socket_close(sock);
+    APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv);
+}
+
+abts_suite *testsock(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, test_addr_info, NULL);
+    abts_run_test(suite, test_serv_by_name, NULL);
+    abts_run_test(suite, test_create_bind_listen, NULL);
+    abts_run_test(suite, test_send, NULL);
+    abts_run_test(suite, test_recv, NULL);
+    abts_run_test(suite, test_atreadeof, NULL);
+    abts_run_test(suite, test_timeout, NULL);
+    abts_run_test(suite, test_print_addr, NULL);
+    abts_run_test(suite, test_get_addr, NULL);
+    abts_run_test(suite, test_nonblock_inheritance, NULL);
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/teststr.c
===================================================================
--- vendor/apache/apr/dist/test/teststr.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/teststr.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,406 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#if APR_HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_errno.h"
-
-/* I haven't bothered to check for APR_ENOTIMPL here, AFAIK, all string
- * functions exist on all platforms.
- */
-
-static void test_strtok(abts_case *tc, void *data)
-{
-    struct {
-        char *input;
-        char *sep;
-    }
-    cases[] = {
-        {
-            "",
-            "Z"
-        },
-        {
-            "      asdf jkl; 77889909            \r\n\1\2\3Z",
-            " \r\n\3\2\1"
-        },
-        {
-            NULL,  /* but who cares if apr_strtok() segfaults? */
-            " \t"
-        },
-#if 0     /* don't do this... you deserve to segfault */
-        {
-            "a b c              ",
-            NULL
-        },
-#endif
-        {
-            "   a       b        c   ",
-            ""
-        },
-        {
-            "a              b c         ",
-            " "
-        }
-    };
-    int curtc;
-
-    for (curtc = 0; curtc < sizeof cases / sizeof cases[0]; curtc++) {
-        char *retval1, *retval2;
-        char *str1, *str2;
-        char *state;
-
-        str1 = apr_pstrdup(p, cases[curtc].input);
-        str2 = apr_pstrdup(p, cases[curtc].input);
-
-        do {
-            retval1 = apr_strtok(str1, cases[curtc].sep, &state);
-            retval2 = strtok(str2, cases[curtc].sep);
-
-            if (!retval1) {
-                ABTS_TRUE(tc, retval2 == NULL);
-            }
-            else {
-                ABTS_TRUE(tc, retval2 != NULL);
-                ABTS_STR_EQUAL(tc, retval2, retval1);
-            }
-
-            str1 = str2 = NULL; /* make sure we pass NULL on subsequent calls */
-        } while (retval1);
-    }
-}
-
-static void snprintf_noNULL(abts_case *tc, void *data)
-{
-    char buff[100];
-    char *testing = apr_palloc(p, 10);
-
-    testing[0] = 't';
-    testing[1] = 'e';
-    testing[2] = 's';
-    testing[3] = 't';
-    testing[4] = 'i';
-    testing[5] = 'n';
-    testing[6] = 'g';
-    
-    /* If this test fails, we are going to seg fault. */
-    apr_snprintf(buff, sizeof(buff), "%.*s", 7, testing);
-    ABTS_STR_NEQUAL(tc, buff, testing, 7);
-}
-
-static void snprintf_0NULL(abts_case *tc, void *data)
-{
-    int rv;
-
-    rv = apr_snprintf(NULL, 0, "%sBAR", "FOO");
-    ABTS_INT_EQUAL(tc, 6, rv);
-}
-
-static void snprintf_0nonNULL(abts_case *tc, void *data)
-{
-    int rv;
-    char *buff = "testing";
-
-    rv = apr_snprintf(buff, 0, "%sBAR", "FOO");
-    ABTS_INT_EQUAL(tc, 6, rv);
-    ABTS_ASSERT(tc, "buff unmangled", strcmp(buff, "FOOBAR") != 0);
-}
-
-static void snprintf_underflow(abts_case *tc, void *data)
-{
-    char buf[20];
-    int rv;
-
-    rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.0001);
-    ABTS_INT_EQUAL(tc, 4, rv);
-    ABTS_STR_EQUAL(tc, "0.00", buf);
-    
-    rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.001);
-    ABTS_INT_EQUAL(tc, 4, rv);
-    ABTS_STR_EQUAL(tc, "0.00", buf);
-    
-    rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.01);
-    ABTS_INT_EQUAL(tc, 4, rv);
-    ABTS_STR_EQUAL(tc, "0.01", buf);
-}
-
-static void string_error(abts_case *tc, void *data)
-{
-     char buf[128], *rv;
-     apr_status_t n;
-
-     buf[0] = '\0';
-     rv = apr_strerror(APR_ENOENT, buf, sizeof buf);
-     ABTS_PTR_EQUAL(tc, buf, rv);
-     ABTS_TRUE(tc, strlen(buf) > 0);
-
-     rv = apr_strerror(APR_TIMEUP, buf, sizeof buf);
-     ABTS_PTR_EQUAL(tc, buf, rv);
-     ABTS_STR_EQUAL(tc, "The timeout specified has expired", buf);
-     
-     /* throw some randomish numbers at it to check for robustness */
-     for (n = 1; n < 1000000; n *= 2) {
-         apr_strerror(n, buf, sizeof buf);
-     }
-}
-
-#define SIZE 180000
-static void string_long(abts_case *tc, void *data)
-{
-    char s[SIZE + 1];
-
-    memset(s, 'A', SIZE);
-    s[SIZE] = '\0';
-
-    apr_psprintf(p, "%s", s);
-}
-
-/* ### FIXME: apr.h/apr_strings.h should provide these! */
-#define MY_LLONG_MAX (APR_INT64_C(9223372036854775807))
-#define MY_LLONG_MIN (-MY_LLONG_MAX - APR_INT64_C(1))
-
-static void string_strtoi64(abts_case *tc, void *data)
-{
-    static const struct {
-        int errnum, base;
-        const char *in, *end;
-        apr_int64_t result;
-    } ts[] = {
-        
-        /* base 10 tests */
-        { 0, 10, "123545", NULL, APR_INT64_C(123545) },
-        { 0, 10, "   123545", NULL, APR_INT64_C(123545) },
-        { 0, 10, "   +123545", NULL, APR_INT64_C(123545) },
-        { 0, 10, "-123545", NULL, APR_INT64_C(-123545) },
-        { 0, 10, "   00000123545", NULL, APR_INT64_C(123545) },
-        { 0, 10, "123545ZZZ", "ZZZ", APR_INT64_C(123545) },
-        { 0, 10, "   123545   ", "   ", APR_INT64_C(123545) },
-
-        /* base 16 tests */
-        { 0, 16, "1E299", NULL, APR_INT64_C(123545) },
-        { 0, 16, "1e299", NULL, APR_INT64_C(123545) },
-        { 0, 16, "0x1e299", NULL, APR_INT64_C(123545) },
-        { 0, 16, "0X1E299", NULL, APR_INT64_C(123545) },
-        { 0, 16, "+1e299", NULL, APR_INT64_C(123545) },
-        { 0, 16, "-1e299", NULL, APR_INT64_C(-123545) },
-        { 0, 16, "   -1e299", NULL, APR_INT64_C(-123545) },
-
-        /* automatic base detection tests */
-        { 0, 0, "123545", NULL, APR_INT64_C(123545) },
-        { 0, 0, "0x1e299", NULL, APR_INT64_C(123545) },
-        { 0, 0, "  0x1e299", NULL, APR_INT64_C(123545) },
-        { 0, 0, "+0x1e299", NULL, APR_INT64_C(123545) },
-        { 0, 0, "-0x1e299", NULL, APR_INT64_C(-123545) },
-
-        /* large number tests */
-        { 0, 10, "8589934605", NULL, APR_INT64_C(8589934605) },
-        { 0, 10, "-8589934605", NULL, APR_INT64_C(-8589934605) },
-        { 0, 16, "0x20000000D", NULL, APR_INT64_C(8589934605) },
-        { 0, 16, "-0x20000000D", NULL, APR_INT64_C(-8589934605) },
-        { 0, 16, "   0x20000000D", NULL, APR_INT64_C(8589934605) },
-        { 0, 16, "   0x20000000D", NULL, APR_INT64_C(8589934605) },
-
-        /* error cases */
-        { ERANGE, 10, "999999999999999999999999999999999", "", MY_LLONG_MAX },
-        { ERANGE, 10, "-999999999999999999999999999999999", "", MY_LLONG_MIN },
-
-#if 0
-        /* C99 doesn't require EINVAL for an invalid range. */
-        { EINVAL, 99, "", (void *)-1 /* don't care */, 0 },
-#endif
-
-        /* some strtoll implementations give EINVAL when no conversion
-         * is performed. */
-        { -1 /* don't care */, 10, "zzz", "zzz", APR_INT64_C(0) },
-        { -1 /* don't care */, 10, "", NULL, APR_INT64_C(0) }
-
-    };
-    int n;
-
-    for (n = 0; n < sizeof(ts)/sizeof(ts[0]); n++) {
-        char *end = "end ptr not changed";
-        apr_int64_t result;
-        int errnum;
-        
-        errno = 0;
-        result = apr_strtoi64(ts[n].in, &end, ts[n].base);
-        errnum = errno;
-
-        ABTS_ASSERT(tc,
-                 apr_psprintf(p, "for '%s': result was %" APR_INT64_T_FMT 
-                              " not %" APR_INT64_T_FMT, ts[n].in,
-                              result, ts[n].result),
-                 result == ts[n].result);
-        
-        if (ts[n].errnum != -1) {
-            ABTS_ASSERT(tc,
-                     apr_psprintf(p, "for '%s': errno was %d not %d", ts[n].in,
-                                  errnum, ts[n].errnum),
-                     ts[n].errnum == errnum);
-        }
-
-        if (ts[n].end == NULL) {
-            /* end must point to NUL terminator of .in */
-            ABTS_PTR_EQUAL(tc, ts[n].in + strlen(ts[n].in), end);
-        } else if (ts[n].end != (void *)-1) {
-            ABTS_ASSERT(tc,
-                     apr_psprintf(p, "for '%s', end was '%s' not '%s'",
-                                  ts[n].in, end, ts[n].end),
-                     strcmp(ts[n].end, end) == 0);
-        }
-    }
-}
-
-static void string_strtoff(abts_case *tc, void *data)
-{
-    apr_off_t off;
-
-    ABTS_ASSERT(tc, "strtoff fails on out-of-range integer",
-                apr_strtoff(&off, "999999999999999999999999999999",
-                            NULL, 10) != APR_SUCCESS);
-
-    ABTS_ASSERT(tc, "strtoff failed for 1234",
-                apr_strtoff(&off, "1234", NULL, 10) == APR_SUCCESS);
-
-    ABTS_ASSERT(tc, "strtoff failed to parse 1234", off == 1234);
-}
-
-/* random-ish checks for strfsize buffer overflows */
-static void overflow_strfsize(abts_case *tc, void *data)
-{
-    apr_off_t off;
-    char buf[7];
-
-    buf[5] = '$';
-    buf[6] = '@';
-
-    for (off = -9999; off < 20000; off++) {
-        apr_strfsize(off, buf);
-    }
-    for (; off < 9999999; off += 9) {
-        apr_strfsize(off, buf);
-    }
-    for (; off < 999999999; off += 999) {
-        apr_strfsize(off, buf);
-    }
-    for (off = 1; off < LONG_MAX && off > 0; off *= 2) {
-        apr_strfsize(off, buf);
-        apr_strfsize(off + 1, buf);
-        apr_strfsize(off - 1, buf);
-    }
-
-    ABTS_ASSERT(tc, "strfsize overflowed", buf[5] == '$');
-    ABTS_ASSERT(tc, "strfsize overflowed", buf[6] == '@');
-}
-
-static void string_strfsize(abts_case *tc, void *data)
-{
-    static const struct {
-        apr_off_t size;
-        const char *buf;
-    } ts[] = {
-        { -1,   "  - " },
-        { 0,    "  0 " },
-        { 666,  "666 " },
-        { 1024, "1.0K" },
-        { 1536, "1.5K" },
-        { 2048, "2.0K" },
-        { 1293874, "1.2M" },
-        { 9999999, "9.5M" },
-        { 103809024, " 99M" },
-        { 1047527424, "1.0G" } /* "999M" would be more correct */
-    };
-    apr_size_t n;
-
-    for (n = 0; n < sizeof(ts)/sizeof(ts[0]); n++) {
-        char buf[6], *ret;
-        
-        buf[5] = '%';
-
-        ret = apr_strfsize(ts[n].size, buf);
-        ABTS_ASSERT(tc, "strfsize returned wrong buffer", ret == buf);
-        ABTS_ASSERT(tc, "strfsize overflowed", buf[5] == '%');
-
-        ABTS_STR_EQUAL(tc, ts[n].buf, ret);
-    }
-}
-
-static void string_cpystrn(abts_case *tc, void *data)
-{
-    char buf[6], *ret;
-    
-    buf[5] = 'Z';
-
-    ret = apr_cpystrn(buf, "123456", 5);
-
-    ABTS_STR_EQUAL(tc, "1234", buf);
-    ABTS_PTR_EQUAL(tc, buf + 4, ret);
-    ABTS_TRUE(tc, *ret == '\0');
-    ABTS_TRUE(tc, ret[1] == 'Z');
-}
-
-static void snprintf_overflow(abts_case *tc, void *data)
-{
-    char buf[4];
-    int rv;
-    
-    buf[2] = '4';
-    buf[3] = '2';
-
-    rv = apr_snprintf(buf, 2, "%s", "a");
-    ABTS_INT_EQUAL(tc, 1, rv);
-
-    rv = apr_snprintf(buf, 2, "%s", "abcd");
-    ABTS_INT_EQUAL(tc, 1, rv);
-
-    ABTS_STR_EQUAL(tc, "a", buf);
-
-    /* Check the buffer really hasn't been overflowed. */
-    ABTS_TRUE(tc, buf[2] == '4' && buf[3] == '2');
-}
-
-abts_suite *teststr(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, snprintf_0NULL, NULL);
-    abts_run_test(suite, snprintf_0nonNULL, NULL);
-    abts_run_test(suite, snprintf_noNULL, NULL);
-    abts_run_test(suite, snprintf_underflow, NULL);
-    abts_run_test(suite, test_strtok, NULL);
-    abts_run_test(suite, string_error, NULL);
-    abts_run_test(suite, string_long, NULL);
-    abts_run_test(suite, string_strtoi64, NULL);
-    abts_run_test(suite, string_strtoff, NULL);
-    abts_run_test(suite, overflow_strfsize, NULL);
-    abts_run_test(suite, string_strfsize, NULL);
-    abts_run_test(suite, string_cpystrn, NULL);
-    abts_run_test(suite, snprintf_overflow, NULL);
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/teststr.c (from rev 9273, vendor/apache/apr/dist/test/teststr.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/teststr.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/teststr.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,405 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#if APR_HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
+#include "apr_general.h"
+#include "apr_strings.h"
+#include "apr_errno.h"
+
+/* I haven't bothered to check for APR_ENOTIMPL here, AFAIK, all string
+ * functions exist on all platforms.
+ */
+
+static void test_strtok(abts_case *tc, void *data)
+{
+    struct {
+        char *input;
+        char *sep;
+    }
+    cases[] = {
+        {
+            "",
+            "Z"
+        },
+        {
+            "      asdf jkl; 77889909            \r\n\1\2\3Z",
+            " \r\n\3\2\1"
+        },
+        {
+            NULL,  /* but who cares if apr_strtok() segfaults? */
+            " \t"
+        },
+#if 0     /* don't do this... you deserve to segfault */
+        {
+            "a b c              ",
+            NULL
+        },
+#endif
+        {
+            "   a       b        c   ",
+            ""
+        },
+        {
+            "a              b c         ",
+            " "
+        }
+    };
+    int curtc;
+
+    for (curtc = 0; curtc < sizeof cases / sizeof cases[0]; curtc++) {
+        char *retval1, *retval2;
+        char *str1, *str2;
+        char *state;
+
+        str1 = apr_pstrdup(p, cases[curtc].input);
+        str2 = apr_pstrdup(p, cases[curtc].input);
+
+        do {
+            retval1 = apr_strtok(str1, cases[curtc].sep, &state);
+            retval2 = strtok(str2, cases[curtc].sep);
+
+            if (!retval1) {
+                ABTS_TRUE(tc, retval2 == NULL);
+            }
+            else {
+                ABTS_TRUE(tc, retval2 != NULL);
+                ABTS_STR_EQUAL(tc, retval2, retval1);
+            }
+
+            str1 = str2 = NULL; /* make sure we pass NULL on subsequent calls */
+        } while (retval1);
+    }
+}
+
+static void snprintf_noNULL(abts_case *tc, void *data)
+{
+    char buff[100];
+    char *testing = apr_palloc(p, 10);
+
+    testing[0] = 't';
+    testing[1] = 'e';
+    testing[2] = 's';
+    testing[3] = 't';
+    testing[4] = 'i';
+    testing[5] = 'n';
+    testing[6] = 'g';
+    
+    /* If this test fails, we are going to seg fault. */
+    apr_snprintf(buff, sizeof(buff), "%.*s", 7, testing);
+    ABTS_STR_NEQUAL(tc, buff, testing, 7);
+}
+
+static void snprintf_0NULL(abts_case *tc, void *data)
+{
+    int rv;
+
+    rv = apr_snprintf(NULL, 0, "%sBAR", "FOO");
+    ABTS_INT_EQUAL(tc, 6, rv);
+}
+
+static void snprintf_0nonNULL(abts_case *tc, void *data)
+{
+    int rv;
+    char *buff = "testing";
+
+    rv = apr_snprintf(buff, 0, "%sBAR", "FOO");
+    ABTS_INT_EQUAL(tc, 6, rv);
+    ABTS_ASSERT(tc, "buff unmangled", strcmp(buff, "FOOBAR") != 0);
+}
+
+static void snprintf_underflow(abts_case *tc, void *data)
+{
+    char buf[20];
+    int rv;
+
+    rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.0001);
+    ABTS_INT_EQUAL(tc, 4, rv);
+    ABTS_STR_EQUAL(tc, "0.00", buf);
+    
+    rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.001);
+    ABTS_INT_EQUAL(tc, 4, rv);
+    ABTS_STR_EQUAL(tc, "0.00", buf);
+    
+    rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.01);
+    ABTS_INT_EQUAL(tc, 4, rv);
+    ABTS_STR_EQUAL(tc, "0.01", buf);
+}
+
+static void string_error(abts_case *tc, void *data)
+{
+     char buf[128], *rv;
+     apr_status_t n;
+
+     buf[0] = '\0';
+     rv = apr_strerror(APR_ENOENT, buf, sizeof buf);
+     ABTS_PTR_EQUAL(tc, buf, rv);
+     ABTS_TRUE(tc, strlen(buf) > 0);
+
+     rv = apr_strerror(APR_TIMEUP, buf, sizeof buf);
+     ABTS_PTR_EQUAL(tc, buf, rv);
+     ABTS_STR_EQUAL(tc, "The timeout specified has expired", buf);
+     
+     /* throw some randomish numbers at it to check for robustness */
+     for (n = 1; n < 1000000; n *= 2) {
+         apr_strerror(n, buf, sizeof buf);
+     }
+}
+
+#define SIZE 180000
+static void string_long(abts_case *tc, void *data)
+{
+    char s[SIZE + 1];
+
+    memset(s, 'A', SIZE);
+    s[SIZE] = '\0';
+
+    apr_psprintf(p, "%s", s);
+}
+
+/* ### FIXME: apr.h/apr_strings.h should provide these! */
+#define MY_LLONG_MAX (APR_INT64_C(9223372036854775807))
+#define MY_LLONG_MIN (-MY_LLONG_MAX - APR_INT64_C(1))
+
+static void string_strtoi64(abts_case *tc, void *data)
+{
+    static const struct {
+        int errnum, base;
+        const char *in, *end;
+        apr_int64_t result;
+    } ts[] = {
+        
+        /* base 10 tests */
+        { 0, 10, "123545", NULL, APR_INT64_C(123545) },
+        { 0, 10, "   123545", NULL, APR_INT64_C(123545) },
+        { 0, 10, "   +123545", NULL, APR_INT64_C(123545) },
+        { 0, 10, "-123545", NULL, APR_INT64_C(-123545) },
+        { 0, 10, "   00000123545", NULL, APR_INT64_C(123545) },
+        { 0, 10, "123545ZZZ", "ZZZ", APR_INT64_C(123545) },
+        { 0, 10, "   123545   ", "   ", APR_INT64_C(123545) },
+
+        /* base 16 tests */
+        { 0, 16, "1E299", NULL, APR_INT64_C(123545) },
+        { 0, 16, "1e299", NULL, APR_INT64_C(123545) },
+        { 0, 16, "0x1e299", NULL, APR_INT64_C(123545) },
+        { 0, 16, "0X1E299", NULL, APR_INT64_C(123545) },
+        { 0, 16, "+1e299", NULL, APR_INT64_C(123545) },
+        { 0, 16, "-1e299", NULL, APR_INT64_C(-123545) },
+        { 0, 16, "   -1e299", NULL, APR_INT64_C(-123545) },
+
+        /* automatic base detection tests */
+        { 0, 0, "123545", NULL, APR_INT64_C(123545) },
+        { 0, 0, "0x1e299", NULL, APR_INT64_C(123545) },
+        { 0, 0, "  0x1e299", NULL, APR_INT64_C(123545) },
+        { 0, 0, "+0x1e299", NULL, APR_INT64_C(123545) },
+        { 0, 0, "-0x1e299", NULL, APR_INT64_C(-123545) },
+
+        /* large number tests */
+        { 0, 10, "8589934605", NULL, APR_INT64_C(8589934605) },
+        { 0, 10, "-8589934605", NULL, APR_INT64_C(-8589934605) },
+        { 0, 16, "0x20000000D", NULL, APR_INT64_C(8589934605) },
+        { 0, 16, "-0x20000000D", NULL, APR_INT64_C(-8589934605) },
+        { 0, 16, "   0x20000000D", NULL, APR_INT64_C(8589934605) },
+        { 0, 16, "   0x20000000D", NULL, APR_INT64_C(8589934605) },
+
+        /* error cases */
+        { ERANGE, 10, "999999999999999999999999999999999", "", MY_LLONG_MAX },
+        { ERANGE, 10, "-999999999999999999999999999999999", "", MY_LLONG_MIN },
+
+#if 0
+        /* C99 doesn't require EINVAL for an invalid range. */
+        { EINVAL, 99, "", (void *)-1 /* don't care */, 0 },
+#endif
+
+        /* some strtoll implementations give EINVAL when no conversion
+         * is performed. */
+        { -1 /* don't care */, 10, "zzz", "zzz", APR_INT64_C(0) },
+        { -1 /* don't care */, 10, "", NULL, APR_INT64_C(0) }
+
+    };
+    int n;
+
+    for (n = 0; n < sizeof(ts)/sizeof(ts[0]); n++) {
+        char *end = "end ptr not changed";
+        apr_int64_t result;
+        int errnum;
+        
+        errno = 0;
+        result = apr_strtoi64(ts[n].in, &end, ts[n].base);
+        errnum = errno;
+
+        ABTS_ASSERT(tc,
+                 apr_psprintf(p, "for '%s': result was %" APR_INT64_T_FMT 
+                              " not %" APR_INT64_T_FMT, ts[n].in,
+                              result, ts[n].result),
+                 result == ts[n].result);
+        
+        if (ts[n].errnum != -1) {
+            ABTS_ASSERT(tc,
+                     apr_psprintf(p, "for '%s': errno was %d not %d", ts[n].in,
+                                  errnum, ts[n].errnum),
+                     ts[n].errnum == errnum);
+        }
+
+        if (ts[n].end == NULL) {
+            /* end must point to NUL terminator of .in */
+            ABTS_PTR_EQUAL(tc, ts[n].in + strlen(ts[n].in), end);
+        } else if (ts[n].end != (void *)-1) {
+            ABTS_ASSERT(tc,
+                     apr_psprintf(p, "for '%s', end was '%s' not '%s'",
+                                  ts[n].in, end, ts[n].end),
+                     strcmp(ts[n].end, end) == 0);
+        }
+    }
+}
+
+static void string_strtoff(abts_case *tc, void *data)
+{
+    apr_off_t off;
+
+    ABTS_ASSERT(tc, "strtoff fails on out-of-range integer",
+                apr_strtoff(&off, "999999999999999999999999999999",
+                            NULL, 10) != APR_SUCCESS);
+
+    ABTS_ASSERT(tc, "strtoff failed for 1234",
+                apr_strtoff(&off, "1234", NULL, 10) == APR_SUCCESS);
+
+    ABTS_ASSERT(tc, "strtoff failed to parse 1234", off == 1234);
+}
+
+/* random-ish checks for strfsize buffer overflows */
+static void overflow_strfsize(abts_case *tc, void *data)
+{
+    apr_off_t off;
+    char buf[7];
+
+    buf[5] = '$';
+    buf[6] = '@';
+
+    for (off = -9999; off < 20000; off++) {
+        apr_strfsize(off, buf);
+    }
+    for (; off < 9999999; off += 9) {
+        apr_strfsize(off, buf);
+    }
+    for (; off < 999999999; off += 999) {
+        apr_strfsize(off, buf);
+    }
+    for (off = 1; off < LONG_MAX && off > 0; off *= 2) {
+        apr_strfsize(off, buf);
+        apr_strfsize(off + 1, buf);
+        apr_strfsize(off - 1, buf);
+    }
+
+    ABTS_ASSERT(tc, "strfsize overflowed", buf[5] == '$');
+    ABTS_ASSERT(tc, "strfsize overflowed", buf[6] == '@');
+}
+
+static void string_strfsize(abts_case *tc, void *data)
+{
+    static const struct {
+        apr_off_t size;
+        const char *buf;
+    } ts[] = {
+        { -1,   "  - " },
+        { 0,    "  0 " },
+        { 666,  "666 " },
+        { 1024, "1.0K" },
+        { 1536, "1.5K" },
+        { 2048, "2.0K" },
+        { 1293874, "1.2M" },
+        { 9999999, "9.5M" },
+        { 103809024, " 99M" },
+        { 1047527424, "1.0G" } /* "999M" would be more correct */
+    };
+    apr_size_t n;
+
+    for (n = 0; n < sizeof(ts)/sizeof(ts[0]); n++) {
+        char buf[6], *ret;
+        
+        buf[5] = '%';
+
+        ret = apr_strfsize(ts[n].size, buf);
+        ABTS_ASSERT(tc, "strfsize returned wrong buffer", ret == buf);
+        ABTS_ASSERT(tc, "strfsize overflowed", buf[5] == '%');
+
+        ABTS_STR_EQUAL(tc, ts[n].buf, ret);
+    }
+}
+
+static void string_cpystrn(abts_case *tc, void *data)
+{
+    char buf[6], *ret;
+    
+    buf[5] = 'Z';
+
+    ret = apr_cpystrn(buf, "123456", 5);
+
+    ABTS_STR_EQUAL(tc, "1234", buf);
+    ABTS_PTR_EQUAL(tc, buf + 4, ret);
+    ABTS_TRUE(tc, *ret == '\0');
+    ABTS_TRUE(tc, ret[1] == 'Z');
+}
+
+static void snprintf_overflow(abts_case *tc, void *data)
+{
+    char buf[4];
+    int rv;
+    
+    buf[2] = '4';
+    buf[3] = '2';
+
+    rv = apr_snprintf(buf, 2, "%s", "a");
+    ABTS_INT_EQUAL(tc, 1, rv);
+
+    rv = apr_snprintf(buf, 2, "%s", "abcd");
+    ABTS_INT_EQUAL(tc, 1, rv);
+
+    ABTS_STR_EQUAL(tc, "a", buf);
+
+    /* Check the buffer really hasn't been overflowed. */
+    ABTS_TRUE(tc, buf[2] == '4' && buf[3] == '2');
+}
+
+abts_suite *teststr(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, snprintf_0NULL, NULL);
+    abts_run_test(suite, snprintf_0nonNULL, NULL);
+    abts_run_test(suite, snprintf_noNULL, NULL);
+    abts_run_test(suite, snprintf_underflow, NULL);
+    abts_run_test(suite, test_strtok, NULL);
+    abts_run_test(suite, string_error, NULL);
+    abts_run_test(suite, string_long, NULL);
+    abts_run_test(suite, string_strtoi64, NULL);
+    abts_run_test(suite, string_strtoff, NULL);
+    abts_run_test(suite, overflow_strfsize, NULL);
+    abts_run_test(suite, string_strfsize, NULL);
+    abts_run_test(suite, string_cpystrn, NULL);
+    abts_run_test(suite, snprintf_overflow, NULL);
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testtable.c
===================================================================
--- vendor/apache/apr/dist/test/testtable.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testtable.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,201 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "testutil.h"
-#include "apr.h"
-#include "apr_strings.h"
-#include "apr_general.h"
-#include "apr_pools.h"
-#include "apr_tables.h"
-#if APR_HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-
-static apr_array_header_t *a1 = NULL;
-static apr_table_t *t1 = NULL;
-
-static void array_clear(abts_case *tc, void *data)
-{
-    a1 = apr_array_make(p, 2, sizeof(const char *));
-    APR_ARRAY_PUSH(a1, const char *) = "foo";
-    APR_ARRAY_PUSH(a1, const char *) = "bar";
-    apr_array_clear(a1);
-    ABTS_INT_EQUAL(tc, 0, a1->nelts);
-}
-
-static void table_make(abts_case *tc, void *data)
-{
-    t1 = apr_table_make(p, 5);
-    ABTS_PTR_NOTNULL(tc, t1);
-}
-
-static void table_get(abts_case *tc, void *data)
-{
-    const char *val;
-
-    apr_table_set(t1, "foo", "bar");
-    val = apr_table_get(t1, "foo");
-    ABTS_STR_EQUAL(tc, "bar", val);
-}
-
-static void table_set(abts_case *tc, void *data)
-{
-    const char *val;
-
-    apr_table_set(t1, "setkey", "bar");
-    apr_table_set(t1, "setkey", "2ndtry");
-    val = apr_table_get(t1, "setkey");
-    ABTS_STR_EQUAL(tc, "2ndtry", val);
-}
-
-static void table_getnotthere(abts_case *tc, void *data)
-{
-    const char *val;
-
-    val = apr_table_get(t1, "keynotthere");
-    ABTS_PTR_EQUAL(tc, NULL, (void *)val);
-}
-
-static void table_add(abts_case *tc, void *data)
-{
-    const char *val;
-
-    apr_table_add(t1, "addkey", "bar");
-    apr_table_add(t1, "addkey", "foo");
-    val = apr_table_get(t1, "addkey");
-    ABTS_STR_EQUAL(tc, "bar", val);
-
-}
-
-static void table_nelts(abts_case *tc, void *data)
-{
-    const char *val;
-    apr_table_t *t = apr_table_make(p, 1);
-
-    apr_table_set(t, "abc", "def");
-    apr_table_set(t, "def", "abc");
-    apr_table_set(t, "foo", "zzz");
-    val = apr_table_get(t, "foo");
-    ABTS_STR_EQUAL(tc, "zzz", val);
-    val = apr_table_get(t, "abc");
-    ABTS_STR_EQUAL(tc, "def", val);
-    val = apr_table_get(t, "def");
-    ABTS_STR_EQUAL(tc, "abc", val);
-    ABTS_INT_EQUAL(tc, 3, apr_table_elts(t)->nelts);
-}
-
-static void table_clear(abts_case *tc, void *data)
-{
-    apr_table_clear(t1);
-    ABTS_INT_EQUAL(tc, 0, apr_table_elts(t1)->nelts);
-}
-
-static void table_unset(abts_case *tc, void *data)
-{
-    const char *val;
-    apr_table_t *t = apr_table_make(p, 1);
-
-    apr_table_set(t, "a", "1");
-    apr_table_set(t, "b", "2");
-    apr_table_unset(t, "b");
-    ABTS_INT_EQUAL(tc, 1, apr_table_elts(t)->nelts);
-    val = apr_table_get(t, "a");
-    ABTS_STR_EQUAL(tc, "1", val);
-    val = apr_table_get(t, "b");
-    ABTS_PTR_EQUAL(tc, (void *)NULL, (void *)val);
-}
-
-static void table_overlap(abts_case *tc, void *data)
-{
-    const char *val;
-    apr_table_t *t1 = apr_table_make(p, 1);
-    apr_table_t *t2 = apr_table_make(p, 1);
-
-    apr_table_addn(t1, "a", "0");
-    apr_table_addn(t1, "g", "7");
-    apr_table_addn(t2, "a", "1");
-    apr_table_addn(t2, "b", "2");
-    apr_table_addn(t2, "c", "3");
-    apr_table_addn(t2, "b", "2.0");
-    apr_table_addn(t2, "d", "4");
-    apr_table_addn(t2, "e", "5");
-    apr_table_addn(t2, "b", "2.");
-    apr_table_addn(t2, "f", "6");
-    apr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET);
-    
-    ABTS_INT_EQUAL(tc, 7, apr_table_elts(t1)->nelts);
-    val = apr_table_get(t1, "a");
-    ABTS_STR_EQUAL(tc, "1", val);
-    val = apr_table_get(t1, "b");
-    ABTS_STR_EQUAL(tc, "2.", val);
-    val = apr_table_get(t1, "c");
-    ABTS_STR_EQUAL(tc, "3", val);
-    val = apr_table_get(t1, "d");
-    ABTS_STR_EQUAL(tc, "4", val);
-    val = apr_table_get(t1, "e");
-    ABTS_STR_EQUAL(tc, "5", val);
-    val = apr_table_get(t1, "f");
-    ABTS_STR_EQUAL(tc, "6", val);
-    val = apr_table_get(t1, "g");
-    ABTS_STR_EQUAL(tc, "7", val);
-}
-
-static void table_overlap2(abts_case *tc, void *data)
-{
-    apr_pool_t *subp;
-    apr_table_t *t1, *t2;
-
-    apr_pool_create(&subp, p);
-
-    t1 = apr_table_make(subp, 1);
-    t2 = apr_table_make(p, 1);
-    apr_table_addn(t1, "t1", "one");
-    apr_table_addn(t2, "t2", "two");
-    
-    apr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET);
-    
-    ABTS_INT_EQUAL(tc, 2, apr_table_elts(t1)->nelts);
-    
-    ABTS_STR_EQUAL(tc, "one", apr_table_get(t1, "t1"));
-    ABTS_STR_EQUAL(tc, "two", apr_table_get(t1, "t2"));
-
-}
-
-abts_suite *testtable(abts_suite *suite)
-{
-    suite = ADD_SUITE(suite)
-
-    abts_run_test(suite, array_clear, NULL);
-    abts_run_test(suite, table_make, NULL);
-    abts_run_test(suite, table_get, NULL);
-    abts_run_test(suite, table_set, NULL);
-    abts_run_test(suite, table_getnotthere, NULL);
-    abts_run_test(suite, table_add, NULL);
-    abts_run_test(suite, table_nelts, NULL);
-    abts_run_test(suite, table_clear, NULL);
-    abts_run_test(suite, table_unset, NULL);
-    abts_run_test(suite, table_overlap, NULL);
-    abts_run_test(suite, table_overlap2, NULL);
-
-    return suite;
-}
-

Copied: vendor/apache/apr/1.5.2/test/testtable.c (from rev 9273, vendor/apache/apr/dist/test/testtable.c)
===================================================================
--- vendor/apache/apr/1.5.2/test/testtable.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testtable.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,221 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "testutil.h"
+#include "apr.h"
+#include "apr_strings.h"
+#include "apr_general.h"
+#include "apr_pools.h"
+#include "apr_tables.h"
+#if APR_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if APR_HAVE_STRING_H
+#include <string.h>
+#endif
+
+static apr_array_header_t *a1 = NULL;
+static apr_table_t *t1 = NULL;
+
+static void array_clear(abts_case *tc, void *data)
+{
+    a1 = apr_array_make(p, 2, sizeof(const char *));
+    APR_ARRAY_PUSH(a1, const char *) = "foo";
+    APR_ARRAY_PUSH(a1, const char *) = "bar";
+    apr_array_clear(a1);
+    ABTS_INT_EQUAL(tc, 0, a1->nelts);
+}
+
+static void table_make(abts_case *tc, void *data)
+{
+    t1 = apr_table_make(p, 5);
+    ABTS_PTR_NOTNULL(tc, t1);
+}
+
+static void table_get(abts_case *tc, void *data)
+{
+    const char *val;
+
+    apr_table_set(t1, "foo", "bar");
+    val = apr_table_get(t1, "foo");
+    ABTS_STR_EQUAL(tc, "bar", val);
+}
+
+static void table_getm(abts_case *tc, void *data)
+{
+    const char *orig, *val;
+    apr_pool_t *subp;
+
+    apr_pool_create(&subp, p);
+
+    orig = "bar";
+    apr_table_setn(t1, "foo", orig);
+    val = apr_table_getm(subp, t1, "foo");
+    ABTS_PTR_EQUAL(tc, orig, val);
+    ABTS_STR_EQUAL(tc, "bar", val);
+    apr_table_add(t1, "foo", "baz");
+    val = apr_table_getm(subp, t1, "foo");
+    ABTS_STR_EQUAL(tc, "bar,baz", val);
+
+    apr_pool_destroy(subp);
+}
+
+static void table_set(abts_case *tc, void *data)
+{
+    const char *val;
+
+    apr_table_set(t1, "setkey", "bar");
+    apr_table_set(t1, "setkey", "2ndtry");
+    val = apr_table_get(t1, "setkey");
+    ABTS_STR_EQUAL(tc, "2ndtry", val);
+}
+
+static void table_getnotthere(abts_case *tc, void *data)
+{
+    const char *val;
+
+    val = apr_table_get(t1, "keynotthere");
+    ABTS_PTR_EQUAL(tc, NULL, (void *)val);
+}
+
+static void table_add(abts_case *tc, void *data)
+{
+    const char *val;
+
+    apr_table_add(t1, "addkey", "bar");
+    apr_table_add(t1, "addkey", "foo");
+    val = apr_table_get(t1, "addkey");
+    ABTS_STR_EQUAL(tc, "bar", val);
+
+}
+
+static void table_nelts(abts_case *tc, void *data)
+{
+    const char *val;
+    apr_table_t *t = apr_table_make(p, 1);
+
+    apr_table_set(t, "abc", "def");
+    apr_table_set(t, "def", "abc");
+    apr_table_set(t, "foo", "zzz");
+    val = apr_table_get(t, "foo");
+    ABTS_STR_EQUAL(tc, "zzz", val);
+    val = apr_table_get(t, "abc");
+    ABTS_STR_EQUAL(tc, "def", val);
+    val = apr_table_get(t, "def");
+    ABTS_STR_EQUAL(tc, "abc", val);
+    ABTS_INT_EQUAL(tc, 3, apr_table_elts(t)->nelts);
+}
+
+static void table_clear(abts_case *tc, void *data)
+{
+    apr_table_clear(t1);
+    ABTS_INT_EQUAL(tc, 0, apr_table_elts(t1)->nelts);
+}
+
+static void table_unset(abts_case *tc, void *data)
+{
+    const char *val;
+    apr_table_t *t = apr_table_make(p, 1);
+
+    apr_table_set(t, "a", "1");
+    apr_table_set(t, "b", "2");
+    apr_table_unset(t, "b");
+    ABTS_INT_EQUAL(tc, 1, apr_table_elts(t)->nelts);
+    val = apr_table_get(t, "a");
+    ABTS_STR_EQUAL(tc, "1", val);
+    val = apr_table_get(t, "b");
+    ABTS_PTR_EQUAL(tc, (void *)NULL, (void *)val);
+}
+
+static void table_overlap(abts_case *tc, void *data)
+{
+    const char *val;
+    apr_table_t *t1 = apr_table_make(p, 1);
+    apr_table_t *t2 = apr_table_make(p, 1);
+
+    apr_table_addn(t1, "a", "0");
+    apr_table_addn(t1, "g", "7");
+    apr_table_addn(t2, "a", "1");
+    apr_table_addn(t2, "b", "2");
+    apr_table_addn(t2, "c", "3");
+    apr_table_addn(t2, "b", "2.0");
+    apr_table_addn(t2, "d", "4");
+    apr_table_addn(t2, "e", "5");
+    apr_table_addn(t2, "b", "2.");
+    apr_table_addn(t2, "f", "6");
+    apr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET);
+    
+    ABTS_INT_EQUAL(tc, 7, apr_table_elts(t1)->nelts);
+    val = apr_table_get(t1, "a");
+    ABTS_STR_EQUAL(tc, "1", val);
+    val = apr_table_get(t1, "b");
+    ABTS_STR_EQUAL(tc, "2.", val);
+    val = apr_table_get(t1, "c");
+    ABTS_STR_EQUAL(tc, "3", val);
+    val = apr_table_get(t1, "d");
+    ABTS_STR_EQUAL(tc, "4", val);
+    val = apr_table_get(t1, "e");
+    ABTS_STR_EQUAL(tc, "5", val);
+    val = apr_table_get(t1, "f");
+    ABTS_STR_EQUAL(tc, "6", val);
+    val = apr_table_get(t1, "g");
+    ABTS_STR_EQUAL(tc, "7", val);
+}
+
+static void table_overlap2(abts_case *tc, void *data)
+{
+    apr_pool_t *subp;
+    apr_table_t *t1, *t2;
+
+    apr_pool_create(&subp, p);
+
+    t1 = apr_table_make(subp, 1);
+    t2 = apr_table_make(p, 1);
+    apr_table_addn(t1, "t1", "one");
+    apr_table_addn(t2, "t2", "two");
+    
+    apr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET);
+    
+    ABTS_INT_EQUAL(tc, 2, apr_table_elts(t1)->nelts);
+    
+    ABTS_STR_EQUAL(tc, "one", apr_table_get(t1, "t1"));
+    ABTS_STR_EQUAL(tc, "two", apr_table_get(t1, "t2"));
+
+}
+
+abts_suite *testtable(abts_suite *suite)
+{
+    suite = ADD_SUITE(suite)
+
+    abts_run_test(suite, array_clear, NULL);
+    abts_run_test(suite, table_make, NULL);
+    abts_run_test(suite, table_get, NULL);
+    abts_run_test(suite, table_getm, NULL);
+    abts_run_test(suite, table_set, NULL);
+    abts_run_test(suite, table_getnotthere, NULL);
+    abts_run_test(suite, table_add, NULL);
+    abts_run_test(suite, table_nelts, NULL);
+    abts_run_test(suite, table_clear, NULL);
+    abts_run_test(suite, table_unset, NULL);
+    abts_run_test(suite, table_overlap, NULL);
+    abts_run_test(suite, table_overlap2, NULL);
+
+    return suite;
+}
+

Deleted: vendor/apache/apr/1.5.2/test/testutil.h
===================================================================
--- vendor/apache/apr/dist/test/testutil.h	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/test/testutil.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,106 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_pools.h"
-#include "apr_general.h"
-#include "abts.h"
-
-#ifndef APR_TEST_UTIL
-#define APR_TEST_UTIL
-
-/* XXX: FIXME - these all should become much more utilitarian 
- * and part of apr, itself
- */
-
-#ifdef WIN32
-#ifdef BINPATH
-#define TESTBINPATH APR_STRINGIFY(BINPATH) "/"
-#else
-#define TESTBINPATH ""
-#endif
-#else
-#define TESTBINPATH "./"
-#endif
-
-#ifdef WIN32
-#define EXTENSION ".exe"
-#elif NETWARE
-#define EXTENSION ".nlm"
-#else
-#define EXTENSION
-#endif
-
-#define STRING_MAX 8096
-
-/* Some simple functions to make the test apps easier to write and
- * a bit more consistent...
- */
-
-extern apr_pool_t *p;
-
-/* Assert that RV is an APR_SUCCESS value; else fail giving strerror
- * for RV and CONTEXT message. */
-void apr_assert_success(abts_case* tc, const char *context, 
-                        apr_status_t rv, int lineno);
-#define APR_ASSERT_SUCCESS(tc, ctxt, rv) \
-             apr_assert_success(tc, ctxt, rv, __LINE__)
-
-void initialize(void);
-
-abts_suite *testatomic(abts_suite *suite);
-abts_suite *testdir(abts_suite *suite);
-abts_suite *testdso(abts_suite *suite);
-abts_suite *testdup(abts_suite *suite);
-abts_suite *testenv(abts_suite *suite);
-abts_suite *testfile(abts_suite *suite);
-abts_suite *testfilecopy(abts_suite *suite);
-abts_suite *testfileinfo(abts_suite *suite);
-abts_suite *testflock(abts_suite *suite);
-abts_suite *testfmt(abts_suite *suite);
-abts_suite *testfnmatch(abts_suite *suite);
-abts_suite *testgetopt(abts_suite *suite);
-abts_suite *testglobalmutex(abts_suite *suite);
-abts_suite *testhash(abts_suite *suite);
-abts_suite *testipsub(abts_suite *suite);
-abts_suite *testlock(abts_suite *suite);
-abts_suite *testcond(abts_suite *suite);
-abts_suite *testlfs(abts_suite *suite);
-abts_suite *testmmap(abts_suite *suite);
-abts_suite *testnames(abts_suite *suite);
-abts_suite *testoc(abts_suite *suite);
-abts_suite *testpath(abts_suite *suite);
-abts_suite *testpipe(abts_suite *suite);
-abts_suite *testpoll(abts_suite *suite);
-abts_suite *testpool(abts_suite *suite);
-abts_suite *testproc(abts_suite *suite);
-abts_suite *testprocmutex(abts_suite *suite);
-abts_suite *testrand(abts_suite *suite);
-abts_suite *testsleep(abts_suite *suite);
-abts_suite *testshm(abts_suite *suite);
-abts_suite *testsock(abts_suite *suite);
-abts_suite *testsockets(abts_suite *suite);
-abts_suite *testsockopt(abts_suite *suite);
-abts_suite *teststr(abts_suite *suite);
-abts_suite *teststrnatcmp(abts_suite *suite);
-abts_suite *testtable(abts_suite *suite);
-abts_suite *testtemp(abts_suite *suite);
-abts_suite *testthread(abts_suite *suite);
-abts_suite *testtime(abts_suite *suite);
-abts_suite *testud(abts_suite *suite);
-abts_suite *testuser(abts_suite *suite);
-abts_suite *testvsn(abts_suite *suite);
-
-#endif /* APR_TEST_INCLUDES */

Copied: vendor/apache/apr/1.5.2/test/testutil.h (from rev 9273, vendor/apache/apr/dist/test/testutil.h)
===================================================================
--- vendor/apache/apr/1.5.2/test/testutil.h	                        (rev 0)
+++ vendor/apache/apr/1.5.2/test/testutil.h	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,108 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_pools.h"
+#include "apr_general.h"
+#include "abts.h"
+
+#ifndef APR_TEST_UTIL
+#define APR_TEST_UTIL
+
+/* XXX: FIXME - these all should become much more utilitarian 
+ * and part of apr, itself
+ */
+
+#ifdef WIN32
+#ifdef BINPATH
+#define TESTBINPATH APR_STRINGIFY(BINPATH) "/"
+#else
+#define TESTBINPATH ""
+#endif
+#else
+#define TESTBINPATH "./"
+#endif
+
+#ifdef WIN32
+#define EXTENSION ".exe"
+#elif NETWARE
+#define EXTENSION ".nlm"
+#else
+#define EXTENSION
+#endif
+
+#define STRING_MAX 8096
+
+/* Some simple functions to make the test apps easier to write and
+ * a bit more consistent...
+ */
+
+extern apr_pool_t *p;
+
+/* Assert that RV is an APR_SUCCESS value; else fail giving strerror
+ * for RV and CONTEXT message. */
+void apr_assert_success(abts_case* tc, const char *context, 
+                        apr_status_t rv, int lineno);
+#define APR_ASSERT_SUCCESS(tc, ctxt, rv) \
+             apr_assert_success(tc, ctxt, rv, __LINE__)
+
+void initialize(void);
+
+abts_suite *testatomic(abts_suite *suite);
+abts_suite *testdir(abts_suite *suite);
+abts_suite *testdso(abts_suite *suite);
+abts_suite *testdup(abts_suite *suite);
+abts_suite *testescape(abts_suite *suite);
+abts_suite *testenv(abts_suite *suite);
+abts_suite *testfile(abts_suite *suite);
+abts_suite *testfilecopy(abts_suite *suite);
+abts_suite *testfileinfo(abts_suite *suite);
+abts_suite *testflock(abts_suite *suite);
+abts_suite *testfmt(abts_suite *suite);
+abts_suite *testfnmatch(abts_suite *suite);
+abts_suite *testgetopt(abts_suite *suite);
+abts_suite *testglobalmutex(abts_suite *suite);
+abts_suite *testhash(abts_suite *suite);
+abts_suite *testipsub(abts_suite *suite);
+abts_suite *testlock(abts_suite *suite);
+abts_suite *testcond(abts_suite *suite);
+abts_suite *testlfs(abts_suite *suite);
+abts_suite *testmmap(abts_suite *suite);
+abts_suite *testnames(abts_suite *suite);
+abts_suite *testoc(abts_suite *suite);
+abts_suite *testpath(abts_suite *suite);
+abts_suite *testpipe(abts_suite *suite);
+abts_suite *testpoll(abts_suite *suite);
+abts_suite *testpool(abts_suite *suite);
+abts_suite *testproc(abts_suite *suite);
+abts_suite *testprocmutex(abts_suite *suite);
+abts_suite *testrand(abts_suite *suite);
+abts_suite *testsleep(abts_suite *suite);
+abts_suite *testshm(abts_suite *suite);
+abts_suite *testsock(abts_suite *suite);
+abts_suite *testsockets(abts_suite *suite);
+abts_suite *testsockopt(abts_suite *suite);
+abts_suite *teststr(abts_suite *suite);
+abts_suite *teststrnatcmp(abts_suite *suite);
+abts_suite *testtable(abts_suite *suite);
+abts_suite *testtemp(abts_suite *suite);
+abts_suite *testthread(abts_suite *suite);
+abts_suite *testtime(abts_suite *suite);
+abts_suite *testud(abts_suite *suite);
+abts_suite *testuser(abts_suite *suite);
+abts_suite *testvsn(abts_suite *suite);
+abts_suite *testskiplist(abts_suite *suite);
+
+#endif /* APR_TEST_INCLUDES */

Deleted: vendor/apache/apr/1.5.2/threadproc/netware/thread.c
===================================================================
--- vendor/apache/apr/dist/threadproc/netware/thread.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/threadproc/netware/thread.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,254 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_portable.h"
-#include "apr_strings.h"
-#include "apr_arch_threadproc.h"
-
-static int thread_count = 0;
-
-apr_status_t apr_threadattr_create(apr_threadattr_t **new,
-                                                apr_pool_t *pool)
-{
-    (*new) = (apr_threadattr_t *)apr_palloc(pool, 
-              sizeof(apr_threadattr_t));
-
-    if ((*new) == NULL) {
-        return APR_ENOMEM;
-    }
-
-    (*new)->pool = pool;
-    (*new)->stack_size = APR_DEFAULT_STACK_SIZE;
-    (*new)->detach = 0;
-    (*new)->thread_name = NULL;
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr,apr_int32_t on)
-{
-    attr->detach = on;
-    return APR_SUCCESS;   
-}
-
-apr_status_t apr_threadattr_detach_get(apr_threadattr_t *attr)
-{
-    if (attr->detach == 1)
-        return APR_DETACH;
-    return APR_NOTDETACH;
-}
-
-APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr,
-                                                       apr_size_t stacksize)
-{
-    attr->stack_size = stacksize;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr,
-                                                       apr_size_t size)
-{
-    return APR_ENOTIMPL;
-}
-
-static void *dummy_worker(void *opaque)
-{
-    apr_thread_t *thd = (apr_thread_t *)opaque;
-    return thd->func(thd, thd->data);
-}
-
-apr_status_t apr_thread_create(apr_thread_t **new,
-                               apr_threadattr_t *attr, 
-                               apr_thread_start_t func,
-                               void *data,
-                               apr_pool_t *pool)
-{
-    apr_status_t stat;
-    long flags = NX_THR_BIND_CONTEXT;
-    char threadName[NX_MAX_OBJECT_NAME_LEN+1];
-    size_t stack_size = APR_DEFAULT_STACK_SIZE;
-
-    if (attr && attr->thread_name) {
-        strncpy (threadName, attr->thread_name, NX_MAX_OBJECT_NAME_LEN);
-    }
-    else {
-        sprintf(threadName, "APR_thread %04ld", ++thread_count);
-    }
-
-    /* An original stack size of 0 will allow NXCreateThread() to
-    *   assign a default system stack size.  An original stack
-    *   size of less than 0 will assign the APR default stack size.
-    *   anything else will be taken as is.
-    */
-    if (attr && (attr->stack_size >= 0)) {
-        stack_size = attr->stack_size;
-    }
-    
-    (*new) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t));
-
-    if ((*new) == NULL) {
-        return APR_ENOMEM;
-    }
-    
-    (*new)->data = data;
-    (*new)->func = func;
-    (*new)->thread_name = (char*)apr_pstrdup(pool, threadName);
-    
-    stat = apr_pool_create(&(*new)->pool, pool);
-    if (stat != APR_SUCCESS) {
-        return stat;
-    }
-    
-    if (attr && attr->detach) {
-        flags |= NX_THR_DETACHED;
-    }
-    
-    (*new)->ctx = NXContextAlloc(
-        /* void(*start_routine)(void *arg) */ (void (*)(void *)) dummy_worker,
-        /* void *arg */                       (*new),
-        /* int priority */                    NX_PRIO_MED,
-        /* NXSize_t stackSize */              stack_size,
-        /* long flags */                      NX_CTX_NORMAL,
-        /* int *error */                      &stat);
-
-    stat = NXContextSetName(
-        /* NXContext_t ctx */  (*new)->ctx,
-        /* const char *name */ threadName);
-
-    stat = NXThreadCreate(
-        /* NXContext_t context */     (*new)->ctx,
-        /* long flags */              flags,
-        /* NXThreadId_t *thread_id */ &(*new)->td);
-
-    if (stat == 0)
-        return APR_SUCCESS;
-        
-    return(stat); /* if error */    
-}
-
-apr_os_thread_t apr_os_thread_current()
-{
-    return NXThreadGetId();
-}
-
-int apr_os_thread_equal(apr_os_thread_t tid1, apr_os_thread_t tid2)
-{
-    return (tid1 == tid2);
-}
-
-void apr_thread_yield()
-{
-    NXThreadYield();
-}
-
-apr_status_t apr_thread_exit(apr_thread_t *thd,
-                             apr_status_t retval)
-{
-    thd->exitval = retval;
-    apr_pool_destroy(thd->pool);
-    NXThreadExit(NULL);
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_thread_join(apr_status_t *retval,
-                                          apr_thread_t *thd)
-{
-    apr_status_t  stat;    
-    NXThreadId_t dthr;
-
-    if ((stat = NXThreadJoin(thd->td, &dthr, NULL)) == 0) {
-        *retval = thd->exitval;
-        return APR_SUCCESS;
-    }
-    else {
-        return stat;
-    }
-}
-
-apr_status_t apr_thread_detach(apr_thread_t *thd)
-{
-    return APR_SUCCESS;
-}
-
-apr_status_t apr_thread_data_get(void **data, const char *key,
-                                             apr_thread_t *thread)
-{
-    if (thread != NULL) {
-            return apr_pool_userdata_get(data, key, thread->pool);
-    }
-    else {
-        data = NULL;
-        return APR_ENOTHREAD;
-    }
-}
-
-apr_status_t apr_thread_data_set(void *data, const char *key,
-                              apr_status_t (*cleanup) (void *),
-                              apr_thread_t *thread)
-{
-    if (thread != NULL) {
-       return apr_pool_userdata_set(data, key, cleanup, thread->pool);
-    }
-    else {
-        data = NULL;
-        return APR_ENOTHREAD;
-    }
-}
-
-APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd,
-                                            apr_thread_t *thd)
-{
-    if (thd == NULL) {
-        return APR_ENOTHREAD;
-    }
-    *thethd = &(thd->td);
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd,
-                                            apr_os_thread_t *thethd,
-                                            apr_pool_t *pool)
-{
-    if (pool == NULL) {
-        return APR_ENOPOOL;
-    }
-    if ((*thd) == NULL) {
-        (*thd) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t));
-        (*thd)->pool = pool;
-    }
-    (*thd)->td = *thethd;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control,
-                                               apr_pool_t *p)
-{
-    (*control) = apr_pcalloc(p, sizeof(**control));
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control,
-                                          void (*func)(void))
-{
-    if (!atomic_xchg(&control->value, 1)) {
-        func();
-    }
-    return APR_SUCCESS;
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(thread)
-
-

Copied: vendor/apache/apr/1.5.2/threadproc/netware/thread.c (from rev 9273, vendor/apache/apr/dist/threadproc/netware/thread.c)
===================================================================
--- vendor/apache/apr/1.5.2/threadproc/netware/thread.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/threadproc/netware/thread.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,254 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_portable.h"
+#include "apr_strings.h"
+#include "apr_arch_threadproc.h"
+
+static int thread_count = 0;
+
+apr_status_t apr_threadattr_create(apr_threadattr_t **new,
+                                                apr_pool_t *pool)
+{
+    (*new) = (apr_threadattr_t *)apr_palloc(pool, 
+              sizeof(apr_threadattr_t));
+
+    if ((*new) == NULL) {
+        return APR_ENOMEM;
+    }
+
+    (*new)->pool = pool;
+    (*new)->stack_size = APR_DEFAULT_STACK_SIZE;
+    (*new)->detach = 0;
+    (*new)->thread_name = NULL;
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr,apr_int32_t on)
+{
+    attr->detach = on;
+    return APR_SUCCESS;   
+}
+
+apr_status_t apr_threadattr_detach_get(apr_threadattr_t *attr)
+{
+    if (attr->detach == 1)
+        return APR_DETACH;
+    return APR_NOTDETACH;
+}
+
+APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr,
+                                                       apr_size_t stacksize)
+{
+    attr->stack_size = stacksize;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr,
+                                                       apr_size_t size)
+{
+    return APR_ENOTIMPL;
+}
+
+static void *dummy_worker(void *opaque)
+{
+    apr_thread_t *thd = (apr_thread_t *)opaque;
+    return thd->func(thd, thd->data);
+}
+
+apr_status_t apr_thread_create(apr_thread_t **new,
+                               apr_threadattr_t *attr, 
+                               apr_thread_start_t func,
+                               void *data,
+                               apr_pool_t *pool)
+{
+    apr_status_t stat;
+    unsigned long flags = NX_THR_BIND_CONTEXT;
+    char threadName[NX_MAX_OBJECT_NAME_LEN+1];
+    size_t stack_size = APR_DEFAULT_STACK_SIZE;
+
+    if (attr && attr->thread_name) {
+        strncpy (threadName, attr->thread_name, NX_MAX_OBJECT_NAME_LEN);
+    }
+    else {
+        sprintf(threadName, "APR_thread %04ld", ++thread_count);
+    }
+
+    /* An original stack size of 0 will allow NXCreateThread() to
+    *   assign a default system stack size.  An original stack
+    *   size of less than 0 will assign the APR default stack size.
+    *   anything else will be taken as is.
+    */
+    if (attr && (attr->stack_size >= 0)) {
+        stack_size = attr->stack_size;
+    }
+    
+    (*new) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t));
+
+    if ((*new) == NULL) {
+        return APR_ENOMEM;
+    }
+    
+    (*new)->data = data;
+    (*new)->func = func;
+    (*new)->thread_name = (char*)apr_pstrdup(pool, threadName);
+    
+    stat = apr_pool_create(&(*new)->pool, pool);
+    if (stat != APR_SUCCESS) {
+        return stat;
+    }
+    
+    if (attr && attr->detach) {
+        flags |= NX_THR_DETACHED;
+    }
+    
+    (*new)->ctx = NXContextAlloc(
+        /* void(*start_routine)(void *arg) */ (void (*)(void *)) dummy_worker,
+        /* void *arg */                       (*new),
+        /* int priority */                    NX_PRIO_MED,
+        /* size_t stackSize */                stack_size,
+        /* unsigned long flags */             NX_CTX_NORMAL,
+        /* int *error */                      &stat);
+
+    stat = NXContextSetName(
+        /* NXContext_t ctx */  (*new)->ctx,
+        /* const char *name */ threadName);
+
+    stat = NXThreadCreate(
+        /* NXContext_t context */     (*new)->ctx,
+        /* unsigned long flags */     flags,
+        /* NXThreadId_t *thread_id */ &(*new)->td);
+
+    if (stat == 0)
+        return APR_SUCCESS;
+        
+    return(stat); /* if error */    
+}
+
+apr_os_thread_t apr_os_thread_current()
+{
+    return NXThreadGetId();
+}
+
+int apr_os_thread_equal(apr_os_thread_t tid1, apr_os_thread_t tid2)
+{
+    return (tid1 == tid2);
+}
+
+void apr_thread_yield()
+{
+    NXThreadYield();
+}
+
+apr_status_t apr_thread_exit(apr_thread_t *thd,
+                             apr_status_t retval)
+{
+    thd->exitval = retval;
+    apr_pool_destroy(thd->pool);
+    NXThreadExit(NULL);
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_thread_join(apr_status_t *retval,
+                                          apr_thread_t *thd)
+{
+    apr_status_t  stat;    
+    NXThreadId_t dthr;
+
+    if ((stat = NXThreadJoin(thd->td, &dthr, NULL)) == 0) {
+        *retval = thd->exitval;
+        return APR_SUCCESS;
+    }
+    else {
+        return stat;
+    }
+}
+
+apr_status_t apr_thread_detach(apr_thread_t *thd)
+{
+    return APR_SUCCESS;
+}
+
+apr_status_t apr_thread_data_get(void **data, const char *key,
+                                             apr_thread_t *thread)
+{
+    if (thread != NULL) {
+            return apr_pool_userdata_get(data, key, thread->pool);
+    }
+    else {
+        data = NULL;
+        return APR_ENOTHREAD;
+    }
+}
+
+apr_status_t apr_thread_data_set(void *data, const char *key,
+                              apr_status_t (*cleanup) (void *),
+                              apr_thread_t *thread)
+{
+    if (thread != NULL) {
+       return apr_pool_userdata_set(data, key, cleanup, thread->pool);
+    }
+    else {
+        data = NULL;
+        return APR_ENOTHREAD;
+    }
+}
+
+APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd,
+                                            apr_thread_t *thd)
+{
+    if (thd == NULL) {
+        return APR_ENOTHREAD;
+    }
+    *thethd = &(thd->td);
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd,
+                                            apr_os_thread_t *thethd,
+                                            apr_pool_t *pool)
+{
+    if (pool == NULL) {
+        return APR_ENOPOOL;
+    }
+    if ((*thd) == NULL) {
+        (*thd) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t));
+        (*thd)->pool = pool;
+    }
+    (*thd)->td = *thethd;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control,
+                                               apr_pool_t *p)
+{
+    (*control) = apr_pcalloc(p, sizeof(**control));
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control,
+                                          void (*func)(void))
+{
+    if (!atomic_xchg(&control->value, 1)) {
+        func();
+    }
+    return APR_SUCCESS;
+}
+
+APR_POOL_IMPLEMENT_ACCESSOR(thread)
+
+

Deleted: vendor/apache/apr/1.5.2/threadproc/win32/proc.c
===================================================================
--- vendor/apache/apr/dist/threadproc/win32/proc.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/threadproc/win32/proc.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,1149 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_threadproc.h"
-#include "apr_arch_file_io.h"
-
-#include "apr_thread_proc.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_lib.h"
-#include <stdlib.h>
-#if APR_HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#include <string.h>
-#if APR_HAVE_PROCESS_H
-#include <process.h>
-#endif
-
-/* Heavy on no'ops, here's what we want to pass if there is APR_NO_FILE
- * requested for a specific child handle;
- */
-static apr_file_t no_file = { NULL, INVALID_HANDLE_VALUE, };
-
-/* We have very carefully excluded volumes of definitions from the
- * Microsoft Platform SDK, which kill the build time performance.
- * These the sole constants we borrow from WinBase.h and WinUser.h
- */
-#ifndef LOGON32_LOGON_NETWORK
-#define LOGON32_LOGON_NETWORK 3
-#endif
-
-#ifdef _WIN32_WCE
-#ifndef DETACHED_PROCESS
-#define DETACHED_PROCESS 0
-#endif
-#ifndef CREATE_UNICODE_ENVIRONMENT
-#define CREATE_UNICODE_ENVIRONMENT 0
-#endif
-#ifndef STARTF_USESHOWWINDOW
-#define STARTF_USESHOWWINDOW 0
-#endif
-#ifndef SW_HIDE
-#define SW_HIDE 0
-#endif
-#endif
-
-/* 
- * some of the ideas expressed herein are based off of Microsoft
- * Knowledge Base article: Q190351
- *
- */
-APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new,
-                                                  apr_pool_t *pool)
-{
-    (*new) = (apr_procattr_t *)apr_pcalloc(pool, sizeof(apr_procattr_t));
-    (*new)->pool = pool;
-    (*new)->cmdtype = APR_PROGRAM;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr,
-                                              apr_int32_t in, 
-                                              apr_int32_t out,
-                                              apr_int32_t err)
-{
-    apr_status_t stat = APR_SUCCESS;
-
-    if (in) {
-        /* APR_CHILD_BLOCK maps to APR_WRITE_BLOCK, while
-         * APR_PARENT_BLOCK maps to APR_READ_BLOCK, so transpose 
-         * the CHILD/PARENT blocking flags for the stdin pipe.
-         * stdout/stderr map to the correct mode by default.
-         */
-        if (in == APR_CHILD_BLOCK)
-            in = APR_READ_BLOCK;
-        else if (in == APR_PARENT_BLOCK)
-            in = APR_WRITE_BLOCK;
-
-        if (in == APR_NO_FILE)
-            attr->child_in = &no_file;
-        else { 
-            stat = apr_file_pipe_create_ex(&attr->child_in, &attr->parent_in,
-                                           in, attr->pool);
-        }
-        if (stat == APR_SUCCESS)
-            stat = apr_file_inherit_unset(attr->parent_in);
-    }
-    if (out && stat == APR_SUCCESS) {
-        if (out == APR_NO_FILE)
-            attr->child_out = &no_file;
-        else { 
-            stat = apr_file_pipe_create_ex(&attr->parent_out, &attr->child_out,
-                                           out, attr->pool);
-        }
-        if (stat == APR_SUCCESS)
-            stat = apr_file_inherit_unset(attr->parent_out);
-    }
-    if (err && stat == APR_SUCCESS) {
-        if (err == APR_NO_FILE)
-            attr->child_err = &no_file;
-        else { 
-            stat = apr_file_pipe_create_ex(&attr->parent_err, &attr->child_err,
-                                           err, attr->pool);
-        }
-        if (stat == APR_SUCCESS)
-            stat = apr_file_inherit_unset(attr->parent_err);
-    }
-    return stat;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_child_in_set(apr_procattr_t *attr, 
-                                                  apr_file_t *child_in, 
-                                                  apr_file_t *parent_in)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-    if (child_in) {
-        if ((attr->child_in == NULL) || (attr->child_in == &no_file))
-            rv = apr_file_dup(&attr->child_in, child_in, attr->pool);
-        else
-            rv = apr_file_dup2(attr->child_in, child_in, attr->pool);
-
-        if (rv == APR_SUCCESS)
-            rv = apr_file_inherit_set(attr->child_in);
-    }
-
-    if (parent_in && rv == APR_SUCCESS) {
-        if (attr->parent_in == NULL)
-            rv = apr_file_dup(&attr->parent_in, parent_in, attr->pool);
-        else
-            rv = apr_file_dup2(attr->parent_in, parent_in, attr->pool);
-    }
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_child_out_set(apr_procattr_t *attr,
-                                                   apr_file_t *child_out,
-                                                   apr_file_t *parent_out)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-    if (child_out) {
-        if ((attr->child_out == NULL) || (attr->child_out == &no_file))
-            rv = apr_file_dup(&attr->child_out, child_out, attr->pool);
-        else
-            rv = apr_file_dup2(attr->child_out, child_out, attr->pool);
-
-        if (rv == APR_SUCCESS)
-            rv = apr_file_inherit_set(attr->child_out);
-    }
-
-    if (parent_out && rv == APR_SUCCESS) {
-        if (attr->parent_out == NULL)
-            rv = apr_file_dup(&attr->parent_out, parent_out, attr->pool);
-        else
-            rv = apr_file_dup2(attr->parent_out, parent_out, attr->pool);
-    }
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_child_err_set(apr_procattr_t *attr,
-                                                   apr_file_t *child_err,
-                                                   apr_file_t *parent_err)
-{
-    apr_status_t rv = APR_SUCCESS;
-
-    if (child_err) {
-        if ((attr->child_err == NULL) || (attr->child_err == &no_file))
-            rv = apr_file_dup(&attr->child_err, child_err, attr->pool);
-        else
-            rv = apr_file_dup2(attr->child_err, child_err, attr->pool);
-
-        if (rv == APR_SUCCESS)
-            rv = apr_file_inherit_set(attr->child_err);
-    }
-
-    if (parent_err && rv == APR_SUCCESS) {
-        if (attr->parent_err == NULL)
-            rv = apr_file_dup(&attr->parent_err, parent_err, attr->pool);
-        else
-            rv = apr_file_dup2(attr->parent_err, parent_err, attr->pool);
-    }
-
-    return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr,
-                                              const char *dir) 
-{
-    /* curr dir must be in native format, there are all sorts of bugs in
-     * the NT library loading code that flunk the '/' parsing test.
-     */
-    return apr_filepath_merge(&attr->currdir, NULL, dir, 
-                              APR_FILEPATH_NATIVE, attr->pool);
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr,
-                                                  apr_cmdtype_e cmd) 
-{
-    attr->cmdtype = cmd;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr,
-                                                 apr_int32_t det) 
-{
-    attr->detached = det;
-    return APR_SUCCESS;
-}
-
-#ifndef _WIN32_WCE
-static apr_status_t attr_cleanup(void *theattr)
-{
-    apr_procattr_t *attr = (apr_procattr_t *)theattr;    
-    if (attr->user_token)
-        CloseHandle(attr->user_token);
-    attr->user_token = NULL;
-    return APR_SUCCESS;
-}
-#endif
-
-APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, 
-                                                const char *username,
-                                                const char *password)
-{
-#ifdef _WIN32_WCE
-    return APR_ENOTIMPL;
-#else
-    HANDLE user;
-    apr_wchar_t *wusername = NULL;
-    apr_wchar_t *wpassword = NULL;
-    apr_status_t rv;
-    apr_size_t len, wlen;
-
-    if (apr_os_level >= APR_WIN_NT_4) 
-    {
-        if (attr->user_token) {
-            /* Cannot set that twice */
-            if (attr->errfn) {
-                attr->errfn(attr->pool, 0, 
-                            apr_pstrcat(attr->pool, 
-                                        "function called twice" 
-                                         " on username: ", username, NULL));
-            }
-            return APR_EINVAL;
-        }
-        len = strlen(username) + 1;
-        wlen = len;
-        wusername = apr_palloc(attr->pool, wlen * sizeof(apr_wchar_t));
-        if ((rv = apr_conv_utf8_to_ucs2(username, &len, wusername, &wlen))
-                   != APR_SUCCESS) {
-            if (attr->errfn) {
-                attr->errfn(attr->pool, rv, 
-                            apr_pstrcat(attr->pool, 
-                                        "utf8 to ucs2 conversion failed" 
-                                         " on username: ", username, NULL));
-            }
-            return rv;
-        }
-        if (password) {
-            len = strlen(password) + 1;
-            wlen = len;
-            wpassword = apr_palloc(attr->pool, wlen * sizeof(apr_wchar_t));
-            if ((rv = apr_conv_utf8_to_ucs2(password, &len, wpassword, &wlen))
-                       != APR_SUCCESS) {
-                if (attr->errfn) {
-                    attr->errfn(attr->pool, rv, 
-                                apr_pstrcat(attr->pool, 
-                                        "utf8 to ucs2 conversion failed" 
-                                         " on password: ", password, NULL));
-                }
-                return rv;
-            }
-        }
-        if (!LogonUserW(wusername, 
-                        NULL, 
-                        wpassword ? wpassword : L"",
-                        LOGON32_LOGON_NETWORK,
-                        LOGON32_PROVIDER_DEFAULT,
-                        &user)) {
-            /* Logon Failed */            
-            return apr_get_os_error();
-        }
-        if (wpassword)
-            memset(wpassword, 0, wlen * sizeof(apr_wchar_t));
-        /* Get the primary token for user */
-        if (!DuplicateTokenEx(user, 
-                              TOKEN_QUERY | TOKEN_DUPLICATE | TOKEN_ASSIGN_PRIMARY, 
-                              NULL,
-                              SecurityImpersonation,
-                              TokenPrimary,
-                              &(attr->user_token))) {
-            /* Failed to duplicate the user token */
-            rv = apr_get_os_error();
-            CloseHandle(user);
-            return rv;
-        }
-        CloseHandle(user);
-
-        attr->sd = apr_pcalloc(attr->pool, SECURITY_DESCRIPTOR_MIN_LENGTH);
-        InitializeSecurityDescriptor(attr->sd, SECURITY_DESCRIPTOR_REVISION);
-        SetSecurityDescriptorDacl(attr->sd, -1, 0, 0);
-        attr->sa = apr_palloc(attr->pool, sizeof(SECURITY_ATTRIBUTES));
-        attr->sa->nLength = sizeof (SECURITY_ATTRIBUTES);
-        attr->sa->lpSecurityDescriptor = attr->sd;
-        attr->sa->bInheritHandle = FALSE;
-
-        /* register the cleanup */
-        apr_pool_cleanup_register(attr->pool, (void *)attr,
-                                  attr_cleanup,
-                                  apr_pool_cleanup_null);
-        return APR_SUCCESS;
-    }
-    else
-        return APR_ENOTIMPL;
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr,
-                                                 const char *groupname)
-{
-    /* Always return SUCCESS cause groups are irrelevant */
-    return APR_SUCCESS;
-}
-
-static const char* has_space(const char *str)
-{
-    const char *ch;
-    for (ch = str; *ch; ++ch) {
-        if (apr_isspace(*ch)) {
-            return ch;
-        }
-    }
-    return NULL;
-}
-
-static char *apr_caret_escape_args(apr_pool_t *p, const char *str)
-{
-    char *cmd;
-    unsigned char *d;
-    const unsigned char *s;
-
-    cmd = apr_palloc(p, 2 * strlen(str) + 1);	/* Be safe */
-    d = (unsigned char *)cmd;
-    s = (const unsigned char *)str;
-    for (; *s; ++s) {
-
-        /* 
-         * Newlines to Win32/OS2 CreateProcess() are ill advised.
-         * Convert them to spaces since they are effectively white
-         * space to most applications
-         */
-	if (*s == '\r' || *s == '\n') {
-	    *d++ = ' ';
-            continue;
-	}
-
-	if (IS_SHCHAR(*s)) {
-	    *d++ = '^';
-	}
-	*d++ = *s;
-    }
-    *d = '\0';
-
-    return cmd;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr,
-                                                       apr_child_errfn_t *errfn)
-{
-    attr->errfn = errfn;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr,
-                                                       apr_int32_t chk)
-{
-    attr->errchk = chk;
-    return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr,
-                                                       apr_int32_t addrspace)
-{
-    /* won't ever be used on this platform, so don't save the flag */
-    return APR_SUCCESS;
-}
-
-#if APR_HAS_UNICODE_FS && !defined(_WIN32_WCE)
-
-/* Used only for the NT code path, a critical section is the fastest
- * implementation available.
- */
-static CRITICAL_SECTION proc_lock;
-
-static apr_status_t threadproc_global_cleanup(void *ignored)
-{
-    DeleteCriticalSection(&proc_lock);
-    return APR_SUCCESS;
-}
-
-/* Called from apr_initialize, we need a critical section to handle
- * the pipe inheritance on win32.  This will mutex any process create
- * so as we change our inherited pipes, we prevent another process from
- * also inheriting those alternate handles, and prevent the other process
- * from failing to inherit our standard handles.
- */
-apr_status_t apr_threadproc_init(apr_pool_t *pool)
-{
-    IF_WIN_OS_IS_UNICODE
-    {
-        InitializeCriticalSection(&proc_lock);
-        /* register the cleanup */
-        apr_pool_cleanup_register(pool, &proc_lock,
-                                  threadproc_global_cleanup,
-                                  apr_pool_cleanup_null);
-    }
-    return APR_SUCCESS;
-}
-
-#else /* !APR_HAS_UNICODE_FS || defined(_WIN32_WCE) */
-
-apr_status_t apr_threadproc_init(apr_pool_t *pool)
-{
-    return APR_SUCCESS;
-}
-
-#endif
-
-APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new,
-                                          const char *progname,
-                                          const char * const *args,
-                                          const char * const *env,
-                                          apr_procattr_t *attr,
-                                          apr_pool_t *pool)
-{
-    apr_status_t rv;
-    apr_size_t i;
-    const char *argv0;
-    char *cmdline;
-    char *pEnvBlock;
-    PROCESS_INFORMATION pi;
-    DWORD dwCreationFlags = 0;
-
-    new->in = attr->parent_in;
-    new->out = attr->parent_out;
-    new->err = attr->parent_err;
-
-    if (attr->detached) {
-        /* If we are creating ourselves detached, Then we should hide the
-         * window we are starting in.  And we had better redfine our
-         * handles for STDIN, STDOUT, and STDERR. Do not set the
-         * detached attribute for Win9x. We have found that Win9x does
-         * not manage the stdio handles properly when running old 16
-         * bit executables if the detached attribute is set.
-         */
-        if (apr_os_level >= APR_WIN_NT) {
-            /* 
-             * XXX DETACHED_PROCESS won't on Win9x at all; on NT/W2K 
-             * 16 bit executables fail (MS KB: Q150956)
-             */
-            dwCreationFlags |= DETACHED_PROCESS;
-        }
-    }
-
-    /* progname must be unquoted, in native format, as there are all sorts 
-     * of bugs in the NT library loader code that fault when parsing '/'.
-     * XXX progname must be NULL if this is a 16 bit app running in WOW
-     */
-    if (progname[0] == '\"') {
-        progname = apr_pstrndup(pool, progname + 1, strlen(progname) - 2);
-    }
-
-    if (attr->cmdtype == APR_PROGRAM || attr->cmdtype == APR_PROGRAM_ENV) {
-        char *fullpath = NULL;
-        if ((rv = apr_filepath_merge(&fullpath, attr->currdir, progname, 
-                                     APR_FILEPATH_NATIVE, pool)) != APR_SUCCESS) {
-            if (attr->errfn) {
-                attr->errfn(pool, rv, 
-                            apr_pstrcat(pool, "filepath_merge failed.", 
-                                        " currdir: ", attr->currdir, 
-                                        " progname: ", progname, NULL));
-            }
-            return rv;
-        }
-        progname = fullpath;
-    } 
-    else {
-        /* Do not fail if the path isn't parseable for APR_PROGRAM_PATH
-         * or APR_SHELLCMD.  We only invoke apr_filepath_merge (with no
-         * left hand side expression) in order to correct the path slash
-         * delimiters.  But the filename doesn't need to be in the CWD,
-         * nor does it need to be a filename at all (it could be a
-         * built-in shell command.)
-         */
-        char *fullpath = NULL;
-        if ((rv = apr_filepath_merge(&fullpath, "", progname, 
-                                     APR_FILEPATH_NATIVE, pool)) == APR_SUCCESS) {
-            progname = fullpath;
-        }        
-    }
-
-    if (has_space(progname)) {
-        argv0 = apr_pstrcat(pool, "\"", progname, "\"", NULL);
-    }
-    else {
-        argv0 = progname;
-    }
-
-    /* Handle the args, seperate from argv0 */
-    cmdline = "";
-    for (i = 1; args && args[i]; ++i) {
-        if (has_space(args[i]) || !args[i][0]) {
-            cmdline = apr_pstrcat(pool, cmdline, " \"", args[i], "\"", NULL);
-        }
-        else {
-            cmdline = apr_pstrcat(pool, cmdline, " ", args[i], NULL);
-        }
-    }
-
-#ifndef _WIN32_WCE
-    if (attr->cmdtype == APR_SHELLCMD || attr->cmdtype == APR_SHELLCMD_ENV) {
-        char *shellcmd = getenv("COMSPEC");
-        if (!shellcmd) {
-            if (attr->errfn) {
-                attr->errfn(pool, APR_EINVAL, "COMSPEC envar is not set");
-            }
-            return APR_EINVAL;
-        }
-        if (shellcmd[0] == '"') {
-            progname = apr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2);
-        }
-        else {
-            progname = shellcmd;
-            if (has_space(shellcmd)) {
-                shellcmd = apr_pstrcat(pool, "\"", shellcmd, "\"", NULL);
-            }
-        }
-        /* Command.com does not support a quoted command, while cmd.exe demands one.
-         */
-        i = strlen(progname);
-        if (i >= 11 && strcasecmp(progname + i - 11, "command.com") == 0) {
-            cmdline = apr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL);
-        }
-        else {
-            cmdline = apr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL);
-        }
-    } 
-    else 
-#endif
-    {
-#if defined(_WIN32_WCE)
-        {
-#else
-        /* Win32 is _different_ than unix.  While unix will find the given
-         * program since it's already chdir'ed, Win32 cannot since the parent
-         * attempts to open the program with it's own path.
-         * ###: This solution isn't much better - it may defeat path searching
-         * when the path search was desired.  Open to further discussion.
-         */
-        i = strlen(progname);
-        if (i >= 4 && (strcasecmp(progname + i - 4, ".bat") == 0
-                    || strcasecmp(progname + i - 4, ".cmd") == 0))
-        {
-            char *shellcmd = getenv("COMSPEC");
-            if (!shellcmd) {
-                if (attr->errfn) {
-                    attr->errfn(pool, APR_EINVAL, "COMSPEC envar is not set");
-                }
-                return APR_EINVAL;
-            }
-            if (shellcmd[0] == '"') {
-                progname = apr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2);
-            }
-            else {
-                progname = shellcmd;
-                if (has_space(shellcmd)) {
-                    shellcmd = apr_pstrcat(pool, "\"", shellcmd, "\"", NULL);
-                }
-            }
-            i = strlen(progname);
-            if (i >= 11 && strcasecmp(progname + i - 11, "command.com") == 0) {
-                /* XXX: Still insecure - need doubled-quotes on each individual
-                 * arg of cmdline.  Suspect we need to postpone cmdline parsing
-                 * until this moment in all four code paths, with some flags
-                 * to toggle 'which flavor' is needed.
-                 */
-                cmdline = apr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL);
-            }
-            else {
-                /* We must protect the cmdline args from any interpolation - this
-                 * is not a shellcmd, and the source of argv[] is untrusted.
-                 * Notice we escape ALL the cmdline args, including the quotes
-                 * around the individual args themselves.  No sense in allowing
-                 * the shift-state to be toggled, and the application will 
-                 * not see the caret escapes.
-                 */
-                cmdline = apr_caret_escape_args(pool, cmdline);
-                /*
-                 * Our app name must always be quoted so the quotes surrounding
-                 * the entire /c "command args" are unambigious.
-                 */
-                if (*argv0 != '"') {
-                    cmdline = apr_pstrcat(pool, shellcmd, " /C \"\"", argv0, "\"", cmdline, "\"", NULL);
-                }
-                else {
-                    cmdline = apr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL);
-                }
-            }
-        }
-        else {
-#endif
-            /* A simple command we are directly invoking.  Do not pass
-             * the first arg to CreateProc() for APR_PROGRAM_PATH
-             * invocation, since it would need to be a literal and
-             * complete file path.  That is; "c:\bin\aprtest.exe"
-             * would succeed, but "c:\bin\aprtest" or "aprtest.exe"
-             * can fail.
-             */
-            cmdline = apr_pstrcat(pool, argv0, cmdline, NULL);
-
-            if (attr->cmdtype == APR_PROGRAM_PATH) {
-                progname = NULL;
-            }
-        }
-    }
-
-    if (!env || attr->cmdtype == APR_PROGRAM_ENV ||
-        attr->cmdtype == APR_SHELLCMD_ENV) {
-        pEnvBlock = NULL;
-    }
-    else {
-        apr_size_t iEnvBlockLen;
-        /*
-         * Win32's CreateProcess call requires that the environment
-         * be passed in an environment block, a null terminated block of
-         * null terminated strings.
-         */  
-        i = 0;
-        iEnvBlockLen = 1;
-        while (env[i]) {
-            iEnvBlockLen += strlen(env[i]) + 1;
-            i++;
-        }
-        if (!i) 
-            ++iEnvBlockLen;
-
-#if APR_HAS_UNICODE_FS
-        IF_WIN_OS_IS_UNICODE
-        {
-            apr_wchar_t *pNext;
-            pEnvBlock = (char *)apr_palloc(pool, iEnvBlockLen * 2);
-            dwCreationFlags |= CREATE_UNICODE_ENVIRONMENT;
-
-            i = 0;
-            pNext = (apr_wchar_t*)pEnvBlock;
-            while (env[i]) {
-                apr_size_t in = strlen(env[i]) + 1;
-                if ((rv = apr_conv_utf8_to_ucs2(env[i], &in, 
-                                                pNext, &iEnvBlockLen)) 
-                        != APR_SUCCESS) {
-                    if (attr->errfn) {
-                        attr->errfn(pool, rv, 
-                                    apr_pstrcat(pool, 
-                                                "utf8 to ucs2 conversion failed" 
-                                                " on this string: ", env[i], NULL));
-                    }
-                    return rv;
-                }
-                pNext = wcschr(pNext, L'\0') + 1;
-                i++;
-            }
-	    if (!i)
-                *(pNext++) = L'\0';
-	    *pNext = L'\0';
-        }
-#endif /* APR_HAS_UNICODE_FS */
-#if APR_HAS_ANSI_FS
-        ELSE_WIN_OS_IS_ANSI
-        {
-            char *pNext;
-            pEnvBlock = (char *)apr_palloc(pool, iEnvBlockLen);
-    
-            i = 0;
-            pNext = pEnvBlock;
-            while (env[i]) {
-                strcpy(pNext, env[i]);
-                pNext = strchr(pNext, '\0') + 1;
-                i++;
-            }
-	    if (!i)
-                *(pNext++) = '\0';
-	    *pNext = '\0';
-        }
-#endif /* APR_HAS_ANSI_FS */
-    } 
-
-    new->invoked = cmdline;
-
-#if APR_HAS_UNICODE_FS
-    IF_WIN_OS_IS_UNICODE
-    {
-        STARTUPINFOW si;
-        DWORD stdin_reset = 0;
-        DWORD stdout_reset = 0;
-        DWORD stderr_reset = 0;
-        apr_wchar_t *wprg = NULL;
-        apr_wchar_t *wcmd = NULL;
-        apr_wchar_t *wcwd = NULL;
-
-        if (progname) {
-            apr_size_t nprg = strlen(progname) + 1;
-            apr_size_t nwprg = nprg + 6;
-            wprg = apr_palloc(pool, nwprg * sizeof(wprg[0]));
-            if ((rv = apr_conv_utf8_to_ucs2(progname, &nprg, wprg, &nwprg))
-                   != APR_SUCCESS) {
-                if (attr->errfn) {
-                    attr->errfn(pool, rv, 
-                                apr_pstrcat(pool, 
-                                            "utf8 to ucs2 conversion failed" 
-                                            " on progname: ", progname, NULL));
-                }
-                return rv;
-            }
-        }
-
-        if (cmdline) {
-            apr_size_t ncmd = strlen(cmdline) + 1;
-            apr_size_t nwcmd = ncmd;
-            wcmd = apr_palloc(pool, nwcmd * sizeof(wcmd[0]));
-            if ((rv = apr_conv_utf8_to_ucs2(cmdline, &ncmd, wcmd, &nwcmd))
-                    != APR_SUCCESS) {
-                if (attr->errfn) {
-                    attr->errfn(pool, rv, 
-                                apr_pstrcat(pool, 
-                                            "utf8 to ucs2 conversion failed" 
-                                            " on cmdline: ", cmdline, NULL));
-                }
-                return rv;
-            }
-        }
-
-        if (attr->currdir)
-        {
-            apr_size_t ncwd = strlen(attr->currdir) + 1;
-            apr_size_t nwcwd = ncwd;
-            wcwd = apr_palloc(pool, ncwd * sizeof(wcwd[0]));
-            if ((rv = apr_conv_utf8_to_ucs2(attr->currdir, &ncwd, 
-                                            wcwd, &nwcwd))
-                    != APR_SUCCESS) {
-                if (attr->errfn) {
-                    attr->errfn(pool, rv, 
-                                apr_pstrcat(pool, 
-                                            "utf8 to ucs2 conversion failed" 
-                                            " on currdir: ", attr->currdir, NULL));
-                }
-                return rv;
-            }
-        }
-
-        memset(&si, 0, sizeof(si));
-        si.cb = sizeof(si);
-
-        if (attr->detached) {
-            si.dwFlags |= STARTF_USESHOWWINDOW;
-            si.wShowWindow = SW_HIDE;
-        }
-
-#ifndef _WIN32_WCE
-        /* LOCK CRITICAL SECTION 
-         * before we begin to manipulate the inherited handles
-         */
-        EnterCriticalSection(&proc_lock);
-
-        if ((attr->child_in && attr->child_in->filehand)
-            || (attr->child_out && attr->child_out->filehand)
-            || (attr->child_err && attr->child_err->filehand))
-        {
-            si.dwFlags |= STARTF_USESTDHANDLES;
-
-            si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
-            if (attr->child_in && attr->child_in->filehand)
-            {
-                if (GetHandleInformation(si.hStdInput,
-                                         &stdin_reset)
-                        && (stdin_reset &= HANDLE_FLAG_INHERIT))
-                    SetHandleInformation(si.hStdInput,
-                                         HANDLE_FLAG_INHERIT, 0);
-
-                if ( (si.hStdInput = attr->child_in->filehand) 
-                                   != INVALID_HANDLE_VALUE )
-                    SetHandleInformation(si.hStdInput, HANDLE_FLAG_INHERIT,
-                                                       HANDLE_FLAG_INHERIT);
-            }
-            
-            si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
-            if (attr->child_out && attr->child_out->filehand)
-            {
-                if (GetHandleInformation(si.hStdOutput,
-                                         &stdout_reset)
-                        && (stdout_reset &= HANDLE_FLAG_INHERIT))
-                    SetHandleInformation(si.hStdOutput,
-                                         HANDLE_FLAG_INHERIT, 0);
-
-                if ( (si.hStdOutput = attr->child_out->filehand) 
-                                   != INVALID_HANDLE_VALUE )
-                    SetHandleInformation(si.hStdOutput, HANDLE_FLAG_INHERIT,
-                                                        HANDLE_FLAG_INHERIT);
-            }
-
-            si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
-            if (attr->child_err && attr->child_err->filehand)
-            {
-                if (GetHandleInformation(si.hStdError,
-                                         &stderr_reset)
-                        && (stderr_reset &= HANDLE_FLAG_INHERIT))
-                    SetHandleInformation(si.hStdError,
-                                         HANDLE_FLAG_INHERIT, 0);
-
-                if ( (si.hStdError = attr->child_err->filehand) 
-                                   != INVALID_HANDLE_VALUE )
-                    SetHandleInformation(si.hStdError, HANDLE_FLAG_INHERIT,
-                                                       HANDLE_FLAG_INHERIT);
-            }
-        }
-        if (attr->user_token) {
-            /* XXX: for terminal services, handles can't be cannot be
-             * inherited across sessions.  This process must be created 
-             * in our existing session.  lpDesktop assignment appears
-             * to be wrong according to these rules.
-             */
-            si.lpDesktop = L"Winsta0\\Default";
-            if (!ImpersonateLoggedOnUser(attr->user_token)) {
-            /* failed to impersonate the logged user */
-                rv = apr_get_os_error();
-                CloseHandle(attr->user_token);
-                attr->user_token = NULL;
-                return rv;
-            }
-            rv = CreateProcessAsUserW(attr->user_token,
-                                      wprg, wcmd,
-                                      attr->sa,
-                                      NULL,
-                                      TRUE,
-                                      dwCreationFlags,
-                                      pEnvBlock,
-                                      wcwd,
-                                      &si, &pi);
-
-            RevertToSelf();
-        }
-        else {
-            rv = CreateProcessW(wprg, wcmd,        /* Executable & Command line */
-                                NULL, NULL,        /* Proc & thread security attributes */
-                                TRUE,              /* Inherit handles */
-                                dwCreationFlags,   /* Creation flags */
-                                pEnvBlock,         /* Environment block */
-                                wcwd,              /* Current directory name */
-                                &si, &pi);
-        }
-
-        if ((attr->child_in && attr->child_in->filehand)
-            || (attr->child_out && attr->child_out->filehand)
-            || (attr->child_err && attr->child_err->filehand))
-        {
-            if (stdin_reset)
-                SetHandleInformation(GetStdHandle(STD_INPUT_HANDLE),
-                                     stdin_reset, stdin_reset);
-
-            if (stdout_reset)
-                SetHandleInformation(GetStdHandle(STD_OUTPUT_HANDLE),
-                                     stdout_reset, stdout_reset);
-
-            if (stderr_reset)
-                SetHandleInformation(GetStdHandle(STD_ERROR_HANDLE),
-                                     stderr_reset, stderr_reset);
-        }
-        /* RELEASE CRITICAL SECTION 
-         * The state of the inherited handles has been restored.
-         */
-        LeaveCriticalSection(&proc_lock);
-
-#else /* defined(_WIN32_WCE) */
-        rv = CreateProcessW(wprg, wcmd,        /* Executable & Command line */
-                            NULL, NULL,        /* Proc & thread security attributes */
-                            FALSE,             /* must be 0 */
-                            dwCreationFlags,   /* Creation flags */
-                            NULL,              /* Environment block must be NULL */
-                            NULL,              /* Current directory name must be NULL*/
-                            NULL,              /* STARTUPINFO not supported */
-                            &pi);
-#endif
-    }
-#endif /* APR_HAS_UNICODE_FS */
-#if APR_HAS_ANSI_FS
-    ELSE_WIN_OS_IS_ANSI
-    {
-        STARTUPINFOA si;
-        memset(&si, 0, sizeof(si));
-        si.cb = sizeof(si);
-
-        if (attr->detached) {
-            si.dwFlags |= STARTF_USESHOWWINDOW;
-            si.wShowWindow = SW_HIDE;
-        }
-
-        if ((attr->child_in && attr->child_in->filehand)
-            || (attr->child_out && attr->child_out->filehand)
-            || (attr->child_err && attr->child_err->filehand))
-        {
-            si.dwFlags |= STARTF_USESTDHANDLES;
-
-            si.hStdInput = (attr->child_in) 
-                              ? attr->child_in->filehand
-                              : GetStdHandle(STD_INPUT_HANDLE);
-
-            si.hStdOutput = (attr->child_out)
-                              ? attr->child_out->filehand
-                              : GetStdHandle(STD_OUTPUT_HANDLE);
-
-            si.hStdError = (attr->child_err)
-                              ? attr->child_err->filehand
-                              : GetStdHandle(STD_ERROR_HANDLE);
-        }
-
-        rv = CreateProcessA(progname, cmdline, /* Command line */
-                            NULL, NULL,        /* Proc & thread security attributes */
-                            TRUE,              /* Inherit handles */
-                            dwCreationFlags,   /* Creation flags */
-                            pEnvBlock,         /* Environment block */
-                            attr->currdir,     /* Current directory name */
-                            &si, &pi);
-    }
-#endif /* APR_HAS_ANSI_FS */
-
-    /* Check CreateProcess result 
-     */
-    if (!rv)
-        return apr_get_os_error();
-
-    /* XXX Orphaned handle warning - no fix due to broken apr_proc_t api.
-     */
-    new->hproc = pi.hProcess;
-    new->pid = pi.dwProcessId;
-
-    if ((attr->child_in) && (attr->child_in != &no_file)) {
-        apr_file_close(attr->child_in);
-    }
-    if ((attr->child_out) && (attr->child_out != &no_file)) {
-        apr_file_close(attr->child_out);
-    }
-    if ((attr->child_err) && (attr->child_err != &no_file)) {
-        apr_file_close(attr->child_err);
-    }
-    CloseHandle(pi.hThread);
-
-    return APR_SUCCESS;
-}
-
-static apr_exit_why_e why_from_exit_code(DWORD exit) {
-    /* See WinNT.h STATUS_ACCESS_VIOLATION and family for how
-     * this class of failures was determined
-     */
-    if (((exit & 0xC0000000) == 0xC0000000) 
-                    && !(exit & 0x3FFF0000))
-        return APR_PROC_SIGNAL;
-    else
-        return APR_PROC_EXIT;
-
-    /* ### No way to tell if Dr Watson grabbed a core, AFAICT. */
-}
-
-APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc,
-                                                  int *exitcode,
-                                                  apr_exit_why_e *exitwhy,
-                                                  apr_wait_how_e waithow,
-                                                  apr_pool_t *p)
-{
-#if APR_HAS_UNICODE_FS
-#ifndef _WIN32_WCE
-    IF_WIN_OS_IS_UNICODE
-    {
-        DWORD  dwId    = GetCurrentProcessId();
-        DWORD  i;
-        DWORD  nChilds = 0;
-        DWORD  nActive = 0;
-        HANDLE ps32;
-        PROCESSENTRY32W pe32;
-        BOOL   bHasMore = FALSE;
-        DWORD  dwFlags  = PROCESS_QUERY_INFORMATION;
-        apr_status_t rv = APR_EGENERAL;
-
-        if (waithow == APR_WAIT)
-            dwFlags |= SYNCHRONIZE;
-        if (!(ps32 = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0))) {
-            return apr_get_os_error();
-        }
-        pe32.dwSize = sizeof(PROCESSENTRY32W);
-        if (!Process32FirstW(ps32, &pe32)) {
-            if (GetLastError() == ERROR_NO_MORE_FILES)
-                return APR_EOF;
-            else
-                return apr_get_os_error();
-        }
-        do {
-            DWORD  dwRetval = 0;
-            DWORD  nHandles = 0;
-            HANDLE hProcess = NULL;
-            HANDLE pHandles[MAXIMUM_WAIT_OBJECTS];
-            do {
-                if (pe32.th32ParentProcessID == dwId) {
-                    nChilds++;
-                    if ((hProcess = OpenProcess(dwFlags, FALSE,
-                                                pe32.th32ProcessID)) != NULL) {
-                        if (GetExitCodeProcess(hProcess, &dwRetval)) {
-                            if (dwRetval == STILL_ACTIVE) {
-                                nActive++;
-                                if (waithow == APR_WAIT)
-                                    pHandles[nHandles++] = hProcess;
-                                else
-                                    CloseHandle(hProcess);
-                            }
-                            else {                                
-                                /* Process has exited.
-                                 * No need to wait for its termination.
-                                 */
-                                CloseHandle(hProcess);
-                                if (exitcode)
-                                    *exitcode = dwRetval;
-                                if (exitwhy)
-                                    *exitwhy  = why_from_exit_code(dwRetval);
-                                proc->pid = pe32.th32ProcessID;
-                            }
-                        }
-                        else {
-                            /* Unexpected error code.
-                             * Cleanup and return;
-                             */
-                            rv = apr_get_os_error();
-                            CloseHandle(hProcess);
-                            for (i = 0; i < nHandles; i++)
-                                CloseHandle(pHandles[i]);
-                            return rv;
-                        }
-                    }
-                    else {
-                        /* This is our child, so it shouldn't happen
-                         * that we cannot open our child's process handle.
-                         * However if the child process increased the
-                         * security token it might fail.
-                         */
-                    }
-                }
-            } while ((bHasMore = Process32NextW(ps32, &pe32)) &&
-                     nHandles < MAXIMUM_WAIT_OBJECTS);
-            if (nHandles) {
-                /* Wait for all collected processes to finish */
-                DWORD waitStatus = WaitForMultipleObjects(nHandles, pHandles,
-                                                          TRUE, INFINITE);
-                for (i = 0; i < nHandles; i++)
-                    CloseHandle(pHandles[i]);
-                if (waitStatus == WAIT_OBJECT_0) {
-                    /* Decrease active count by the number of awaited
-                     * processes.
-                     */
-                    nActive -= nHandles;
-                }
-                else {
-                    /* Broken from the infinite loop */
-                    break;
-                }
-            }
-        } while (bHasMore);
-        CloseHandle(ps32);
-        if (waithow != APR_WAIT) {
-            if (nChilds && nChilds == nActive) {
-                /* All child processes are running */
-                rv = APR_CHILD_NOTDONE;
-                proc->pid = -1;
-            }
-            else {
-                /* proc->pid contains the pid of the
-                 * exited processes
-                 */
-                rv = APR_CHILD_DONE;
-            }
-        }
-        if (nActive == 0) {
-            rv = APR_CHILD_DONE;
-            proc->pid = -1;
-        }
-        return rv;
-    }
-#endif /* _WIN32_WCE */
-#endif /* APR_HAS_UNICODE_FS */
-    return APR_ENOTIMPL;
-}
-
-APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc,
-                                        int *exitcode, apr_exit_why_e *exitwhy,
-                                        apr_wait_how_e waithow)
-{
-    DWORD stat;
-    DWORD time;
-
-    if (waithow == APR_WAIT)
-        time = INFINITE;
-    else
-        time = 0;
-
-    if ((stat = WaitForSingleObject(proc->hproc, time)) == WAIT_OBJECT_0) {
-        if (GetExitCodeProcess(proc->hproc, &stat)) {
-            if (exitcode)
-                *exitcode = stat;
-            if (exitwhy)
-                *exitwhy = why_from_exit_code(stat);
-            CloseHandle(proc->hproc);
-            proc->hproc = NULL;
-            return APR_CHILD_DONE;
-        }
-    }
-    else if (stat == WAIT_TIMEOUT) {
-        return APR_CHILD_NOTDONE;
-    }
-    return apr_get_os_error();
-}
-
-APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize)
-{
-    return APR_ENOTIMPL;
-}

Copied: vendor/apache/apr/1.5.2/threadproc/win32/proc.c (from rev 9273, vendor/apache/apr/dist/threadproc/win32/proc.c)
===================================================================
--- vendor/apache/apr/1.5.2/threadproc/win32/proc.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/threadproc/win32/proc.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,1150 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_threadproc.h"
+#include "apr_arch_file_io.h"
+
+#include "apr_thread_proc.h"
+#include "apr_file_io.h"
+#include "apr_general.h"
+#include "apr_strings.h"
+#include "apr_portable.h"
+#include "apr_lib.h"
+#include <stdlib.h>
+#if APR_HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#include <string.h>
+#if APR_HAVE_PROCESS_H
+#include <process.h>
+#endif
+
+/* Heavy on no'ops, here's what we want to pass if there is APR_NO_FILE
+ * requested for a specific child handle;
+ */
+static apr_file_t no_file = { NULL, INVALID_HANDLE_VALUE, };
+
+/* We have very carefully excluded volumes of definitions from the
+ * Microsoft Platform SDK, which kill the build time performance.
+ * These the sole constants we borrow from WinBase.h and WinUser.h
+ */
+#ifndef LOGON32_LOGON_NETWORK
+#define LOGON32_LOGON_NETWORK 3
+#endif
+
+#ifdef _WIN32_WCE
+#ifndef DETACHED_PROCESS
+#define DETACHED_PROCESS 0
+#endif
+#ifndef CREATE_UNICODE_ENVIRONMENT
+#define CREATE_UNICODE_ENVIRONMENT 0
+#endif
+#ifndef STARTF_USESHOWWINDOW
+#define STARTF_USESHOWWINDOW 0
+#endif
+#ifndef SW_HIDE
+#define SW_HIDE 0
+#endif
+#endif
+
+/* 
+ * some of the ideas expressed herein are based off of Microsoft
+ * Knowledge Base article: Q190351
+ *
+ */
+APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new,
+                                                  apr_pool_t *pool)
+{
+    (*new) = (apr_procattr_t *)apr_pcalloc(pool, sizeof(apr_procattr_t));
+    (*new)->pool = pool;
+    (*new)->cmdtype = APR_PROGRAM;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr,
+                                              apr_int32_t in, 
+                                              apr_int32_t out,
+                                              apr_int32_t err)
+{
+    apr_status_t stat = APR_SUCCESS;
+
+    if (in) {
+        /* APR_CHILD_BLOCK maps to APR_WRITE_BLOCK, while
+         * APR_PARENT_BLOCK maps to APR_READ_BLOCK, so transpose 
+         * the CHILD/PARENT blocking flags for the stdin pipe.
+         * stdout/stderr map to the correct mode by default.
+         */
+        if (in == APR_CHILD_BLOCK)
+            in = APR_READ_BLOCK;
+        else if (in == APR_PARENT_BLOCK)
+            in = APR_WRITE_BLOCK;
+
+        if (in == APR_NO_FILE)
+            attr->child_in = &no_file;
+        else { 
+            stat = apr_file_pipe_create_ex(&attr->child_in, &attr->parent_in,
+                                           in, attr->pool);
+        }
+        if (stat == APR_SUCCESS)
+            stat = apr_file_inherit_unset(attr->parent_in);
+    }
+    if (out && stat == APR_SUCCESS) {
+        if (out == APR_NO_FILE)
+            attr->child_out = &no_file;
+        else { 
+            stat = apr_file_pipe_create_ex(&attr->parent_out, &attr->child_out,
+                                           out, attr->pool);
+        }
+        if (stat == APR_SUCCESS)
+            stat = apr_file_inherit_unset(attr->parent_out);
+    }
+    if (err && stat == APR_SUCCESS) {
+        if (err == APR_NO_FILE)
+            attr->child_err = &no_file;
+        else { 
+            stat = apr_file_pipe_create_ex(&attr->parent_err, &attr->child_err,
+                                           err, attr->pool);
+        }
+        if (stat == APR_SUCCESS)
+            stat = apr_file_inherit_unset(attr->parent_err);
+    }
+    return stat;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_child_in_set(apr_procattr_t *attr, 
+                                                  apr_file_t *child_in, 
+                                                  apr_file_t *parent_in)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+    if (child_in) {
+        if ((attr->child_in == NULL) || (attr->child_in == &no_file))
+            rv = apr_file_dup(&attr->child_in, child_in, attr->pool);
+        else
+            rv = apr_file_dup2(attr->child_in, child_in, attr->pool);
+
+        if (rv == APR_SUCCESS)
+            rv = apr_file_inherit_set(attr->child_in);
+    }
+
+    if (parent_in && rv == APR_SUCCESS) {
+        if (attr->parent_in == NULL)
+            rv = apr_file_dup(&attr->parent_in, parent_in, attr->pool);
+        else
+            rv = apr_file_dup2(attr->parent_in, parent_in, attr->pool);
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_child_out_set(apr_procattr_t *attr,
+                                                   apr_file_t *child_out,
+                                                   apr_file_t *parent_out)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+    if (child_out) {
+        if ((attr->child_out == NULL) || (attr->child_out == &no_file))
+            rv = apr_file_dup(&attr->child_out, child_out, attr->pool);
+        else
+            rv = apr_file_dup2(attr->child_out, child_out, attr->pool);
+
+        if (rv == APR_SUCCESS)
+            rv = apr_file_inherit_set(attr->child_out);
+    }
+
+    if (parent_out && rv == APR_SUCCESS) {
+        if (attr->parent_out == NULL)
+            rv = apr_file_dup(&attr->parent_out, parent_out, attr->pool);
+        else
+            rv = apr_file_dup2(attr->parent_out, parent_out, attr->pool);
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_child_err_set(apr_procattr_t *attr,
+                                                   apr_file_t *child_err,
+                                                   apr_file_t *parent_err)
+{
+    apr_status_t rv = APR_SUCCESS;
+
+    if (child_err) {
+        if ((attr->child_err == NULL) || (attr->child_err == &no_file))
+            rv = apr_file_dup(&attr->child_err, child_err, attr->pool);
+        else
+            rv = apr_file_dup2(attr->child_err, child_err, attr->pool);
+
+        if (rv == APR_SUCCESS)
+            rv = apr_file_inherit_set(attr->child_err);
+    }
+
+    if (parent_err && rv == APR_SUCCESS) {
+        if (attr->parent_err == NULL)
+            rv = apr_file_dup(&attr->parent_err, parent_err, attr->pool);
+        else
+            rv = apr_file_dup2(attr->parent_err, parent_err, attr->pool);
+    }
+
+    return rv;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr,
+                                              const char *dir) 
+{
+    /* curr dir must be in native format, there are all sorts of bugs in
+     * the NT library loading code that flunk the '/' parsing test.
+     */
+    return apr_filepath_merge(&attr->currdir, NULL, dir, 
+                              APR_FILEPATH_NATIVE, attr->pool);
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr,
+                                                  apr_cmdtype_e cmd) 
+{
+    attr->cmdtype = cmd;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr,
+                                                 apr_int32_t det) 
+{
+    attr->detached = det;
+    return APR_SUCCESS;
+}
+
+#ifndef _WIN32_WCE
+static apr_status_t attr_cleanup(void *theattr)
+{
+    apr_procattr_t *attr = (apr_procattr_t *)theattr;    
+    if (attr->user_token)
+        CloseHandle(attr->user_token);
+    attr->user_token = NULL;
+    return APR_SUCCESS;
+}
+#endif
+
+APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, 
+                                                const char *username,
+                                                const char *password)
+{
+#ifdef _WIN32_WCE
+    return APR_ENOTIMPL;
+#else
+    HANDLE user;
+    apr_wchar_t *wusername = NULL;
+    apr_wchar_t *wpassword = NULL;
+    apr_status_t rv;
+    apr_size_t len, wlen;
+
+    if (apr_os_level >= APR_WIN_NT_4) 
+    {
+        if (attr->user_token) {
+            /* Cannot set that twice */
+            if (attr->errfn) {
+                attr->errfn(attr->pool, 0, 
+                            apr_pstrcat(attr->pool, 
+                                        "function called twice" 
+                                         " on username: ", username, NULL));
+            }
+            return APR_EINVAL;
+        }
+        len = strlen(username) + 1;
+        wlen = len;
+        wusername = apr_palloc(attr->pool, wlen * sizeof(apr_wchar_t));
+        if ((rv = apr_conv_utf8_to_ucs2(username, &len, wusername, &wlen))
+                   != APR_SUCCESS) {
+            if (attr->errfn) {
+                attr->errfn(attr->pool, rv, 
+                            apr_pstrcat(attr->pool, 
+                                        "utf8 to ucs2 conversion failed" 
+                                         " on username: ", username, NULL));
+            }
+            return rv;
+        }
+        if (password) {
+            len = strlen(password) + 1;
+            wlen = len;
+            wpassword = apr_palloc(attr->pool, wlen * sizeof(apr_wchar_t));
+            if ((rv = apr_conv_utf8_to_ucs2(password, &len, wpassword, &wlen))
+                       != APR_SUCCESS) {
+                if (attr->errfn) {
+                    attr->errfn(attr->pool, rv, 
+                                apr_pstrcat(attr->pool, 
+                                        "utf8 to ucs2 conversion failed" 
+                                         " on password: ", password, NULL));
+                }
+                return rv;
+            }
+        }
+        if (!LogonUserW(wusername, 
+                        NULL, 
+                        wpassword ? wpassword : L"",
+                        LOGON32_LOGON_NETWORK,
+                        LOGON32_PROVIDER_DEFAULT,
+                        &user)) {
+            /* Logon Failed */            
+            return apr_get_os_error();
+        }
+        if (wpassword)
+            memset(wpassword, 0, wlen * sizeof(apr_wchar_t));
+        /* Get the primary token for user */
+        if (!DuplicateTokenEx(user, 
+                              TOKEN_QUERY | TOKEN_DUPLICATE | TOKEN_ASSIGN_PRIMARY, 
+                              NULL,
+                              SecurityImpersonation,
+                              TokenPrimary,
+                              &(attr->user_token))) {
+            /* Failed to duplicate the user token */
+            rv = apr_get_os_error();
+            CloseHandle(user);
+            return rv;
+        }
+        CloseHandle(user);
+
+        attr->sd = apr_pcalloc(attr->pool, SECURITY_DESCRIPTOR_MIN_LENGTH);
+        InitializeSecurityDescriptor(attr->sd, SECURITY_DESCRIPTOR_REVISION);
+        SetSecurityDescriptorDacl(attr->sd, -1, 0, 0);
+        attr->sa = apr_palloc(attr->pool, sizeof(SECURITY_ATTRIBUTES));
+        attr->sa->nLength = sizeof (SECURITY_ATTRIBUTES);
+        attr->sa->lpSecurityDescriptor = attr->sd;
+        attr->sa->bInheritHandle = FALSE;
+
+        /* register the cleanup */
+        apr_pool_cleanup_register(attr->pool, (void *)attr,
+                                  attr_cleanup,
+                                  apr_pool_cleanup_null);
+        return APR_SUCCESS;
+    }
+    else
+        return APR_ENOTIMPL;
+#endif
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr,
+                                                 const char *groupname)
+{
+    /* Always return SUCCESS cause groups are irrelevant */
+    return APR_SUCCESS;
+}
+
+static const char* has_space(const char *str)
+{
+    const char *ch;
+    for (ch = str; *ch; ++ch) {
+        if (apr_isspace(*ch)) {
+            return ch;
+        }
+    }
+    return NULL;
+}
+
+static char *apr_caret_escape_args(apr_pool_t *p, const char *str)
+{
+    char *cmd;
+    unsigned char *d;
+    const unsigned char *s;
+
+    cmd = apr_palloc(p, 2 * strlen(str) + 1);	/* Be safe */
+    d = (unsigned char *)cmd;
+    s = (const unsigned char *)str;
+    for (; *s; ++s) {
+
+        /* 
+         * Newlines to Win32/OS2 CreateProcess() are ill advised.
+         * Convert them to spaces since they are effectively white
+         * space to most applications
+         */
+	if (*s == '\r' || *s == '\n') {
+	    *d++ = ' ';
+            continue;
+	}
+
+	if (IS_SHCHAR(*s)) {
+	    *d++ = '^';
+	}
+	*d++ = *s;
+    }
+    *d = '\0';
+
+    return cmd;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr,
+                                                       apr_child_errfn_t *errfn)
+{
+    attr->errfn = errfn;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr,
+                                                       apr_int32_t chk)
+{
+    attr->errchk = chk;
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr,
+                                                       apr_int32_t addrspace)
+{
+    /* won't ever be used on this platform, so don't save the flag */
+    return APR_SUCCESS;
+}
+
+#if APR_HAS_UNICODE_FS && !defined(_WIN32_WCE)
+
+/* Used only for the NT code path, a critical section is the fastest
+ * implementation available.
+ */
+static CRITICAL_SECTION proc_lock;
+
+static apr_status_t threadproc_global_cleanup(void *ignored)
+{
+    DeleteCriticalSection(&proc_lock);
+    return APR_SUCCESS;
+}
+
+/* Called from apr_initialize, we need a critical section to handle
+ * the pipe inheritance on win32.  This will mutex any process create
+ * so as we change our inherited pipes, we prevent another process from
+ * also inheriting those alternate handles, and prevent the other process
+ * from failing to inherit our standard handles.
+ */
+apr_status_t apr_threadproc_init(apr_pool_t *pool)
+{
+    IF_WIN_OS_IS_UNICODE
+    {
+        InitializeCriticalSection(&proc_lock);
+        /* register the cleanup */
+        apr_pool_cleanup_register(pool, &proc_lock,
+                                  threadproc_global_cleanup,
+                                  apr_pool_cleanup_null);
+    }
+    return APR_SUCCESS;
+}
+
+#else /* !APR_HAS_UNICODE_FS || defined(_WIN32_WCE) */
+
+apr_status_t apr_threadproc_init(apr_pool_t *pool)
+{
+    return APR_SUCCESS;
+}
+
+#endif
+
+APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new,
+                                          const char *progname,
+                                          const char * const *args,
+                                          const char * const *env,
+                                          apr_procattr_t *attr,
+                                          apr_pool_t *pool)
+{
+    apr_status_t rv;
+    apr_size_t i;
+    const char *argv0;
+    char *cmdline;
+    char *pEnvBlock;
+    PROCESS_INFORMATION pi;
+    DWORD dwCreationFlags = 0;
+
+    new->in = attr->parent_in;
+    new->out = attr->parent_out;
+    new->err = attr->parent_err;
+
+    if (attr->detached) {
+        /* If we are creating ourselves detached, then we should hide the
+         * window we are starting in.  And we had better redefine our
+         * handles for STDIN, STDOUT, and STDERR. Do not set the
+         * detached attribute for Win9x. We have found that Win9x does
+         * not manage the stdio handles properly when running old 16
+         * bit executables if the detached attribute is set.
+         */
+        if (apr_os_level >= APR_WIN_NT) {
+            /* 
+             * XXX DETACHED_PROCESS won't on Win9x at all; on NT/W2K 
+             * 16 bit executables fail (MS KB: Q150956)
+             */
+            dwCreationFlags |= DETACHED_PROCESS;
+        }
+    }
+
+    /* progname must be unquoted, in native format, as there are all sorts 
+     * of bugs in the NT library loader code that fault when parsing '/'.
+     * XXX progname must be NULL if this is a 16 bit app running in WOW
+     */
+    if (progname[0] == '\"') {
+        progname = apr_pstrndup(pool, progname + 1, strlen(progname) - 2);
+    }
+
+    if (attr->cmdtype == APR_PROGRAM || attr->cmdtype == APR_PROGRAM_ENV) {
+        char *fullpath = NULL;
+        if ((rv = apr_filepath_merge(&fullpath, attr->currdir, progname, 
+                                     APR_FILEPATH_NATIVE, pool)) != APR_SUCCESS) {
+            if (attr->errfn) {
+                attr->errfn(pool, rv, 
+                            apr_pstrcat(pool, "filepath_merge failed.", 
+                                        " currdir: ", attr->currdir, 
+                                        " progname: ", progname, NULL));
+            }
+            return rv;
+        }
+        progname = fullpath;
+    } 
+    else {
+        /* Do not fail if the path isn't parseable for APR_PROGRAM_PATH
+         * or APR_SHELLCMD.  We only invoke apr_filepath_merge (with no
+         * left hand side expression) in order to correct the path slash
+         * delimiters.  But the filename doesn't need to be in the CWD,
+         * nor does it need to be a filename at all (it could be a
+         * built-in shell command.)
+         */
+        char *fullpath = NULL;
+        if ((rv = apr_filepath_merge(&fullpath, "", progname, 
+                                     APR_FILEPATH_NATIVE, pool)) == APR_SUCCESS) {
+            progname = fullpath;
+        }        
+    }
+
+    if (has_space(progname)) {
+        argv0 = apr_pstrcat(pool, "\"", progname, "\"", NULL);
+    }
+    else {
+        argv0 = progname;
+    }
+
+    /* Handle the args, seperate from argv0 */
+    cmdline = "";
+    for (i = 1; args && args[i]; ++i) {
+        if (has_space(args[i]) || !args[i][0]) {
+            cmdline = apr_pstrcat(pool, cmdline, " \"", args[i], "\"", NULL);
+        }
+        else {
+            cmdline = apr_pstrcat(pool, cmdline, " ", args[i], NULL);
+        }
+    }
+
+#ifndef _WIN32_WCE
+    if (attr->cmdtype == APR_SHELLCMD || attr->cmdtype == APR_SHELLCMD_ENV) {
+        char *shellcmd = getenv("COMSPEC");
+        if (!shellcmd) {
+            if (attr->errfn) {
+                attr->errfn(pool, APR_EINVAL, "COMSPEC envar is not set");
+            }
+            return APR_EINVAL;
+        }
+        if (shellcmd[0] == '"') {
+            progname = apr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2);
+        }
+        else {
+            progname = shellcmd;
+            if (has_space(shellcmd)) {
+                shellcmd = apr_pstrcat(pool, "\"", shellcmd, "\"", NULL);
+            }
+        }
+        /* Command.com does not support a quoted command, while cmd.exe demands one.
+         */
+        i = strlen(progname);
+        if (i >= 11 && strcasecmp(progname + i - 11, "command.com") == 0) {
+            cmdline = apr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL);
+        }
+        else {
+            cmdline = apr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL);
+        }
+    } 
+    else 
+#endif
+    {
+#if defined(_WIN32_WCE)
+        {
+#else
+        /* Win32 is _different_ than unix.  While unix will find the given
+         * program since it's already chdir'ed, Win32 cannot since the parent
+         * attempts to open the program with it's own path.
+         * ###: This solution isn't much better - it may defeat path searching
+         * when the path search was desired.  Open to further discussion.
+         */
+        i = strlen(progname);
+        if (i >= 4 && (strcasecmp(progname + i - 4, ".bat") == 0
+                    || strcasecmp(progname + i - 4, ".cmd") == 0))
+        {
+            char *shellcmd = getenv("COMSPEC");
+            if (!shellcmd) {
+                if (attr->errfn) {
+                    attr->errfn(pool, APR_EINVAL, "COMSPEC envar is not set");
+                }
+                return APR_EINVAL;
+            }
+            if (shellcmd[0] == '"') {
+                progname = apr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2);
+            }
+            else {
+                progname = shellcmd;
+                if (has_space(shellcmd)) {
+                    shellcmd = apr_pstrcat(pool, "\"", shellcmd, "\"", NULL);
+                }
+            }
+            i = strlen(progname);
+            if (i >= 11 && strcasecmp(progname + i - 11, "command.com") == 0) {
+                /* XXX: Still insecure - need doubled-quotes on each individual
+                 * arg of cmdline.  Suspect we need to postpone cmdline parsing
+                 * until this moment in all four code paths, with some flags
+                 * to toggle 'which flavor' is needed.
+                 */
+                cmdline = apr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL);
+            }
+            else {
+                /* We must protect the cmdline args from any interpolation - this
+                 * is not a shellcmd, and the source of argv[] is untrusted.
+                 * Notice we escape ALL the cmdline args, including the quotes
+                 * around the individual args themselves.  No sense in allowing
+                 * the shift-state to be toggled, and the application will 
+                 * not see the caret escapes.
+                 */
+                cmdline = apr_caret_escape_args(pool, cmdline);
+                /*
+                 * Our app name must always be quoted so the quotes surrounding
+                 * the entire /c "command args" are unambigious.
+                 */
+                if (*argv0 != '"') {
+                    cmdline = apr_pstrcat(pool, shellcmd, " /C \"\"", argv0, "\"", cmdline, "\"", NULL);
+                }
+                else {
+                    cmdline = apr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL);
+                }
+            }
+        }
+        else {
+#endif
+            /* A simple command we are directly invoking.  Do not pass
+             * the first arg to CreateProc() for APR_PROGRAM_PATH
+             * invocation, since it would need to be a literal and
+             * complete file path.  That is; "c:\bin\aprtest.exe"
+             * would succeed, but "c:\bin\aprtest" or "aprtest.exe"
+             * can fail.
+             */
+            cmdline = apr_pstrcat(pool, argv0, cmdline, NULL);
+
+            if (attr->cmdtype == APR_PROGRAM_PATH) {
+                progname = NULL;
+            }
+        }
+    }
+
+    if (!env || attr->cmdtype == APR_PROGRAM_ENV ||
+        attr->cmdtype == APR_SHELLCMD_ENV) {
+        pEnvBlock = NULL;
+    }
+    else {
+        apr_size_t iEnvBlockLen;
+        /*
+         * Win32's CreateProcess call requires that the environment
+         * be passed in an environment block, a null terminated block of
+         * null terminated strings.
+         */  
+        i = 0;
+        iEnvBlockLen = 1;
+        while (env[i]) {
+            iEnvBlockLen += strlen(env[i]) + 1;
+            i++;
+        }
+        if (!i) 
+            ++iEnvBlockLen;
+
+#if APR_HAS_UNICODE_FS
+        IF_WIN_OS_IS_UNICODE
+        {
+            apr_wchar_t *pNext;
+            pEnvBlock = (char *)apr_palloc(pool, iEnvBlockLen * 2);
+            dwCreationFlags |= CREATE_UNICODE_ENVIRONMENT;
+
+            i = 0;
+            pNext = (apr_wchar_t*)pEnvBlock;
+            while (env[i]) {
+                apr_size_t in = strlen(env[i]) + 1;
+                if ((rv = apr_conv_utf8_to_ucs2(env[i], &in, 
+                                                pNext, &iEnvBlockLen)) 
+                        != APR_SUCCESS) {
+                    if (attr->errfn) {
+                        attr->errfn(pool, rv, 
+                                    apr_pstrcat(pool, 
+                                                "utf8 to ucs2 conversion failed" 
+                                                " on this string: ", env[i], NULL));
+                    }
+                    return rv;
+                }
+                pNext = wcschr(pNext, L'\0') + 1;
+                i++;
+            }
+	    if (!i)
+                *(pNext++) = L'\0';
+	    *pNext = L'\0';
+        }
+#endif /* APR_HAS_UNICODE_FS */
+#if APR_HAS_ANSI_FS
+        ELSE_WIN_OS_IS_ANSI
+        {
+            char *pNext;
+            pEnvBlock = (char *)apr_palloc(pool, iEnvBlockLen);
+    
+            i = 0;
+            pNext = pEnvBlock;
+            while (env[i]) {
+                strcpy(pNext, env[i]);
+                pNext = strchr(pNext, '\0') + 1;
+                i++;
+            }
+	    if (!i)
+                *(pNext++) = '\0';
+	    *pNext = '\0';
+        }
+#endif /* APR_HAS_ANSI_FS */
+    } 
+
+    new->invoked = cmdline;
+
+#if APR_HAS_UNICODE_FS
+    IF_WIN_OS_IS_UNICODE
+    {
+        STARTUPINFOW si;
+        DWORD stdin_reset = 0;
+        DWORD stdout_reset = 0;
+        DWORD stderr_reset = 0;
+        apr_wchar_t *wprg = NULL;
+        apr_wchar_t *wcmd = NULL;
+        apr_wchar_t *wcwd = NULL;
+
+        if (progname) {
+            apr_size_t nprg = strlen(progname) + 1;
+            apr_size_t nwprg = nprg + 6;
+            wprg = apr_palloc(pool, nwprg * sizeof(wprg[0]));
+            if ((rv = apr_conv_utf8_to_ucs2(progname, &nprg, wprg, &nwprg))
+                   != APR_SUCCESS) {
+                if (attr->errfn) {
+                    attr->errfn(pool, rv, 
+                                apr_pstrcat(pool, 
+                                            "utf8 to ucs2 conversion failed" 
+                                            " on progname: ", progname, NULL));
+                }
+                return rv;
+            }
+        }
+
+        if (cmdline) {
+            apr_size_t ncmd = strlen(cmdline) + 1;
+            apr_size_t nwcmd = ncmd;
+            wcmd = apr_palloc(pool, nwcmd * sizeof(wcmd[0]));
+            if ((rv = apr_conv_utf8_to_ucs2(cmdline, &ncmd, wcmd, &nwcmd))
+                    != APR_SUCCESS) {
+                if (attr->errfn) {
+                    attr->errfn(pool, rv, 
+                                apr_pstrcat(pool, 
+                                            "utf8 to ucs2 conversion failed" 
+                                            " on cmdline: ", cmdline, NULL));
+                }
+                return rv;
+            }
+        }
+
+        if (attr->currdir)
+        {
+            apr_size_t ncwd = strlen(attr->currdir) + 1;
+            apr_size_t nwcwd = ncwd;
+            wcwd = apr_palloc(pool, ncwd * sizeof(wcwd[0]));
+            if ((rv = apr_conv_utf8_to_ucs2(attr->currdir, &ncwd, 
+                                            wcwd, &nwcwd))
+                    != APR_SUCCESS) {
+                if (attr->errfn) {
+                    attr->errfn(pool, rv, 
+                                apr_pstrcat(pool, 
+                                            "utf8 to ucs2 conversion failed" 
+                                            " on currdir: ", attr->currdir, NULL));
+                }
+                return rv;
+            }
+        }
+
+        memset(&si, 0, sizeof(si));
+        si.cb = sizeof(si);
+
+        if (attr->detached) {
+            si.dwFlags |= STARTF_USESHOWWINDOW;
+            si.wShowWindow = SW_HIDE;
+        }
+
+#ifndef _WIN32_WCE
+        /* LOCK CRITICAL SECTION 
+         * before we begin to manipulate the inherited handles
+         */
+        EnterCriticalSection(&proc_lock);
+
+        if ((attr->child_in && attr->child_in->filehand)
+            || (attr->child_out && attr->child_out->filehand)
+            || (attr->child_err && attr->child_err->filehand))
+        {
+            si.dwFlags |= STARTF_USESTDHANDLES;
+
+            si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
+            if (attr->child_in && attr->child_in->filehand)
+            {
+                if (GetHandleInformation(si.hStdInput,
+                                         &stdin_reset)
+                        && (stdin_reset &= HANDLE_FLAG_INHERIT))
+                    SetHandleInformation(si.hStdInput,
+                                         HANDLE_FLAG_INHERIT, 0);
+
+                if ( (si.hStdInput = attr->child_in->filehand) 
+                                   != INVALID_HANDLE_VALUE )
+                    SetHandleInformation(si.hStdInput, HANDLE_FLAG_INHERIT,
+                                                       HANDLE_FLAG_INHERIT);
+            }
+            
+            si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
+            if (attr->child_out && attr->child_out->filehand)
+            {
+                if (GetHandleInformation(si.hStdOutput,
+                                         &stdout_reset)
+                        && (stdout_reset &= HANDLE_FLAG_INHERIT))
+                    SetHandleInformation(si.hStdOutput,
+                                         HANDLE_FLAG_INHERIT, 0);
+
+                if ( (si.hStdOutput = attr->child_out->filehand) 
+                                   != INVALID_HANDLE_VALUE )
+                    SetHandleInformation(si.hStdOutput, HANDLE_FLAG_INHERIT,
+                                                        HANDLE_FLAG_INHERIT);
+            }
+
+            si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
+            if (attr->child_err && attr->child_err->filehand)
+            {
+                if (GetHandleInformation(si.hStdError,
+                                         &stderr_reset)
+                        && (stderr_reset &= HANDLE_FLAG_INHERIT))
+                    SetHandleInformation(si.hStdError,
+                                         HANDLE_FLAG_INHERIT, 0);
+
+                if ( (si.hStdError = attr->child_err->filehand) 
+                                   != INVALID_HANDLE_VALUE )
+                    SetHandleInformation(si.hStdError, HANDLE_FLAG_INHERIT,
+                                                       HANDLE_FLAG_INHERIT);
+            }
+        }
+        if (attr->user_token) {
+            /* XXX: for terminal services, handles can't be cannot be
+             * inherited across sessions.  This process must be created 
+             * in our existing session.  lpDesktop assignment appears
+             * to be wrong according to these rules.
+             */
+            si.lpDesktop = L"Winsta0\\Default";
+            if (!ImpersonateLoggedOnUser(attr->user_token)) {
+            /* failed to impersonate the logged user */
+                rv = apr_get_os_error();
+                CloseHandle(attr->user_token);
+                attr->user_token = NULL;
+                LeaveCriticalSection(&proc_lock);
+                return rv;
+            }
+            rv = CreateProcessAsUserW(attr->user_token,
+                                      wprg, wcmd,
+                                      attr->sa,
+                                      NULL,
+                                      TRUE,
+                                      dwCreationFlags,
+                                      pEnvBlock,
+                                      wcwd,
+                                      &si, &pi);
+
+            RevertToSelf();
+        }
+        else {
+            rv = CreateProcessW(wprg, wcmd,        /* Executable & Command line */
+                                NULL, NULL,        /* Proc & thread security attributes */
+                                TRUE,              /* Inherit handles */
+                                dwCreationFlags,   /* Creation flags */
+                                pEnvBlock,         /* Environment block */
+                                wcwd,              /* Current directory name */
+                                &si, &pi);
+        }
+
+        if ((attr->child_in && attr->child_in->filehand)
+            || (attr->child_out && attr->child_out->filehand)
+            || (attr->child_err && attr->child_err->filehand))
+        {
+            if (stdin_reset)
+                SetHandleInformation(GetStdHandle(STD_INPUT_HANDLE),
+                                     stdin_reset, stdin_reset);
+
+            if (stdout_reset)
+                SetHandleInformation(GetStdHandle(STD_OUTPUT_HANDLE),
+                                     stdout_reset, stdout_reset);
+
+            if (stderr_reset)
+                SetHandleInformation(GetStdHandle(STD_ERROR_HANDLE),
+                                     stderr_reset, stderr_reset);
+        }
+        /* RELEASE CRITICAL SECTION 
+         * The state of the inherited handles has been restored.
+         */
+        LeaveCriticalSection(&proc_lock);
+
+#else /* defined(_WIN32_WCE) */
+        rv = CreateProcessW(wprg, wcmd,        /* Executable & Command line */
+                            NULL, NULL,        /* Proc & thread security attributes */
+                            FALSE,             /* must be 0 */
+                            dwCreationFlags,   /* Creation flags */
+                            NULL,              /* Environment block must be NULL */
+                            NULL,              /* Current directory name must be NULL*/
+                            NULL,              /* STARTUPINFO not supported */
+                            &pi);
+#endif
+    }
+#endif /* APR_HAS_UNICODE_FS */
+#if APR_HAS_ANSI_FS
+    ELSE_WIN_OS_IS_ANSI
+    {
+        STARTUPINFOA si;
+        memset(&si, 0, sizeof(si));
+        si.cb = sizeof(si);
+
+        if (attr->detached) {
+            si.dwFlags |= STARTF_USESHOWWINDOW;
+            si.wShowWindow = SW_HIDE;
+        }
+
+        if ((attr->child_in && attr->child_in->filehand)
+            || (attr->child_out && attr->child_out->filehand)
+            || (attr->child_err && attr->child_err->filehand))
+        {
+            si.dwFlags |= STARTF_USESTDHANDLES;
+
+            si.hStdInput = (attr->child_in) 
+                              ? attr->child_in->filehand
+                              : GetStdHandle(STD_INPUT_HANDLE);
+
+            si.hStdOutput = (attr->child_out)
+                              ? attr->child_out->filehand
+                              : GetStdHandle(STD_OUTPUT_HANDLE);
+
+            si.hStdError = (attr->child_err)
+                              ? attr->child_err->filehand
+                              : GetStdHandle(STD_ERROR_HANDLE);
+        }
+
+        rv = CreateProcessA(progname, cmdline, /* Command line */
+                            NULL, NULL,        /* Proc & thread security attributes */
+                            TRUE,              /* Inherit handles */
+                            dwCreationFlags,   /* Creation flags */
+                            pEnvBlock,         /* Environment block */
+                            attr->currdir,     /* Current directory name */
+                            &si, &pi);
+    }
+#endif /* APR_HAS_ANSI_FS */
+
+    /* Check CreateProcess result 
+     */
+    if (!rv)
+        return apr_get_os_error();
+
+    /* XXX Orphaned handle warning - no fix due to broken apr_proc_t api.
+     */
+    new->hproc = pi.hProcess;
+    new->pid = pi.dwProcessId;
+
+    if ((attr->child_in) && (attr->child_in != &no_file)) {
+        apr_file_close(attr->child_in);
+    }
+    if ((attr->child_out) && (attr->child_out != &no_file)) {
+        apr_file_close(attr->child_out);
+    }
+    if ((attr->child_err) && (attr->child_err != &no_file)) {
+        apr_file_close(attr->child_err);
+    }
+    CloseHandle(pi.hThread);
+
+    return APR_SUCCESS;
+}
+
+static apr_exit_why_e why_from_exit_code(DWORD exit) {
+    /* See WinNT.h STATUS_ACCESS_VIOLATION and family for how
+     * this class of failures was determined
+     */
+    if (((exit & 0xC0000000) == 0xC0000000) 
+                    && !(exit & 0x3FFF0000))
+        return APR_PROC_SIGNAL;
+    else
+        return APR_PROC_EXIT;
+
+    /* ### No way to tell if Dr Watson grabbed a core, AFAICT. */
+}
+
+APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc,
+                                                  int *exitcode,
+                                                  apr_exit_why_e *exitwhy,
+                                                  apr_wait_how_e waithow,
+                                                  apr_pool_t *p)
+{
+#if APR_HAS_UNICODE_FS
+#ifndef _WIN32_WCE
+    IF_WIN_OS_IS_UNICODE
+    {
+        DWORD  dwId    = GetCurrentProcessId();
+        DWORD  i;
+        DWORD  nChilds = 0;
+        DWORD  nActive = 0;
+        HANDLE ps32;
+        PROCESSENTRY32W pe32;
+        BOOL   bHasMore = FALSE;
+        DWORD  dwFlags  = PROCESS_QUERY_INFORMATION;
+        apr_status_t rv = APR_EGENERAL;
+
+        if (waithow == APR_WAIT)
+            dwFlags |= SYNCHRONIZE;
+        if (!(ps32 = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0))) {
+            return apr_get_os_error();
+        }
+        pe32.dwSize = sizeof(PROCESSENTRY32W);
+        if (!Process32FirstW(ps32, &pe32)) {
+            if (GetLastError() == ERROR_NO_MORE_FILES)
+                return APR_EOF;
+            else
+                return apr_get_os_error();
+        }
+        do {
+            DWORD  dwRetval = 0;
+            DWORD  nHandles = 0;
+            HANDLE hProcess = NULL;
+            HANDLE pHandles[MAXIMUM_WAIT_OBJECTS];
+            do {
+                if (pe32.th32ParentProcessID == dwId) {
+                    nChilds++;
+                    if ((hProcess = OpenProcess(dwFlags, FALSE,
+                                                pe32.th32ProcessID)) != NULL) {
+                        if (GetExitCodeProcess(hProcess, &dwRetval)) {
+                            if (dwRetval == STILL_ACTIVE) {
+                                nActive++;
+                                if (waithow == APR_WAIT)
+                                    pHandles[nHandles++] = hProcess;
+                                else
+                                    CloseHandle(hProcess);
+                            }
+                            else {                                
+                                /* Process has exited.
+                                 * No need to wait for its termination.
+                                 */
+                                CloseHandle(hProcess);
+                                if (exitcode)
+                                    *exitcode = dwRetval;
+                                if (exitwhy)
+                                    *exitwhy  = why_from_exit_code(dwRetval);
+                                proc->pid = pe32.th32ProcessID;
+                            }
+                        }
+                        else {
+                            /* Unexpected error code.
+                             * Cleanup and return;
+                             */
+                            rv = apr_get_os_error();
+                            CloseHandle(hProcess);
+                            for (i = 0; i < nHandles; i++)
+                                CloseHandle(pHandles[i]);
+                            return rv;
+                        }
+                    }
+                    else {
+                        /* This is our child, so it shouldn't happen
+                         * that we cannot open our child's process handle.
+                         * However if the child process increased the
+                         * security token it might fail.
+                         */
+                    }
+                }
+            } while ((bHasMore = Process32NextW(ps32, &pe32)) &&
+                     nHandles < MAXIMUM_WAIT_OBJECTS);
+            if (nHandles) {
+                /* Wait for all collected processes to finish */
+                DWORD waitStatus = WaitForMultipleObjects(nHandles, pHandles,
+                                                          TRUE, INFINITE);
+                for (i = 0; i < nHandles; i++)
+                    CloseHandle(pHandles[i]);
+                if (waitStatus == WAIT_OBJECT_0) {
+                    /* Decrease active count by the number of awaited
+                     * processes.
+                     */
+                    nActive -= nHandles;
+                }
+                else {
+                    /* Broken from the infinite loop */
+                    break;
+                }
+            }
+        } while (bHasMore);
+        CloseHandle(ps32);
+        if (waithow != APR_WAIT) {
+            if (nChilds && nChilds == nActive) {
+                /* All child processes are running */
+                rv = APR_CHILD_NOTDONE;
+                proc->pid = -1;
+            }
+            else {
+                /* proc->pid contains the pid of the
+                 * exited processes
+                 */
+                rv = APR_CHILD_DONE;
+            }
+        }
+        if (nActive == 0) {
+            rv = APR_CHILD_DONE;
+            proc->pid = -1;
+        }
+        return rv;
+    }
+#endif /* _WIN32_WCE */
+#endif /* APR_HAS_UNICODE_FS */
+    return APR_ENOTIMPL;
+}
+
+APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc,
+                                        int *exitcode, apr_exit_why_e *exitwhy,
+                                        apr_wait_how_e waithow)
+{
+    DWORD stat;
+    DWORD time;
+
+    if (waithow == APR_WAIT)
+        time = INFINITE;
+    else
+        time = 0;
+
+    if ((stat = WaitForSingleObject(proc->hproc, time)) == WAIT_OBJECT_0) {
+        if (GetExitCodeProcess(proc->hproc, &stat)) {
+            if (exitcode)
+                *exitcode = stat;
+            if (exitwhy)
+                *exitwhy = why_from_exit_code(stat);
+            CloseHandle(proc->hproc);
+            proc->hproc = NULL;
+            return APR_CHILD_DONE;
+        }
+    }
+    else if (stat == WAIT_TIMEOUT) {
+        return APR_CHILD_NOTDONE;
+    }
+    return apr_get_os_error();
+}
+
+APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize)
+{
+    return APR_ENOTIMPL;
+}

Deleted: vendor/apache/apr/1.5.2/threadproc/win32/signals.c
===================================================================
--- vendor/apache/apr/dist/threadproc/win32/signals.c	2017-02-20 03:04:01 UTC (rev 9272)
+++ vendor/apache/apr/1.5.2/threadproc/win32/signals.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -1,67 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_threadproc.h"
-#include "apr_arch_file_io.h"
-#include "apr_thread_proc.h"
-#include "apr_signal.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#if APR_HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#include <string.h>
-#if APR_HAVE_SYS_WAIT
-#include <sys/wait.h>
-#endif
-
-/* Windows only really support killing process, but that will do for now. 
- *
- * ### Actually, closing the input handle to the proc should also do fine 
- * for most console apps.  This definately needs improvement...
- */
-APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int signal)
-{
-    if (proc->hproc != NULL) {
-        if (TerminateProcess(proc->hproc, signal) == 0) {
-            return apr_get_os_error();
-        }
-        /* On unix, SIGKILL leaves a apr_proc_wait()able pid lying around, 
-         * so we will leave hproc alone until the app calls apr_proc_wait().
-         */
-        return APR_SUCCESS;
-    }
-    return APR_EPROC_UNKNOWN;
-}
-
-void apr_signal_init(apr_pool_t *pglobal)
-{
-}
-
-APR_DECLARE(const char *) apr_signal_description_get(int signum)
-{
-    return "unknown signal (not supported)";
-}
-
-APR_DECLARE(apr_status_t) apr_signal_block(int signum)
-{
-    return APR_ENOTIMPL;
-}
-
-APR_DECLARE(apr_status_t) apr_signal_unblock(int signum)
-{
-    return APR_ENOTIMPL;
-}

Copied: vendor/apache/apr/1.5.2/threadproc/win32/signals.c (from rev 9273, vendor/apache/apr/dist/threadproc/win32/signals.c)
===================================================================
--- vendor/apache/apr/1.5.2/threadproc/win32/signals.c	                        (rev 0)
+++ vendor/apache/apr/1.5.2/threadproc/win32/signals.c	2017-02-20 03:07:52 UTC (rev 9274)
@@ -0,0 +1,67 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_threadproc.h"
+#include "apr_arch_file_io.h"
+#include "apr_thread_proc.h"
+#include "apr_signal.h"
+#include "apr_file_io.h"
+#include "apr_general.h"
+#if APR_HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#include <string.h>
+#if APR_HAVE_SYS_WAIT
+#include <sys/wait.h>
+#endif
+
+/* Windows only really support killing process, but that will do for now. 
+ *
+ * ### Actually, closing the input handle to the proc should also do fine 
+ * for most console apps.  This definitely needs improvement...
+ */
+APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int signal)
+{
+    if (proc->hproc != NULL) {
+        if (TerminateProcess(proc->hproc, signal) == 0) {
+            return apr_get_os_error();
+        }
+        /* On unix, SIGKILL leaves a apr_proc_wait()able pid lying around, 
+         * so we will leave hproc alone until the app calls apr_proc_wait().
+         */
+        return APR_SUCCESS;
+    }
+    return APR_EPROC_UNKNOWN;
+}
+
+void apr_signal_init(apr_pool_t *pglobal)
+{
+}
+
+APR_DECLARE(const char *) apr_signal_description_get(int signum)
+{
+    return "unknown signal (not supported)";
+}
+
+APR_DECLARE(apr_status_t) apr_signal_block(int signum)
+{
+    return APR_ENOTIMPL;
+}
+
+APR_DECLARE(apr_status_t) apr_signal_unblock(int signum)
+{
+    return APR_ENOTIMPL;
+}



More information about the Midnightbsd-cvs mailing list